Siden SSH-tilgang er det viktigste inngangspunktet for å administrere serveren din, har den blitt en mye brukt angrepsvektor.
Grunnleggende trinn for å sikre SSH inkluderer: deaktivering av rottilgang, deaktivering av passordautentisering helt (og bruk av nøkler i stedet) og endring av porter (lite å gjøre med sikkerhet bortsett fra å minimere vanlige portskannere og logg spam).
Neste trinn ville være en PF brannmurløsning med tilkoblingssporing. Denne løsningen vil administrere tilkoblingstilstander og blokkere enhver IP som har for mange tilkoblinger. Dette fungerer bra, og er veldig enkelt å gjøre med PF, men SSH-demonen er fortsatt utsatt for Internett.
Hva med å gjøre SSH helt utilgjengelig fra utsiden? Det er her spiped kommer inn. Fra hjemmesiden:
Spiped (pronounced "ess-pipe-dee") is a utility for creating symmetrically encrypted and authenticated pipes between socket addresses, so that one may connect to one address (e.g., a UNIX socket on localhost) and transparently have a connection established to another address (e.g., a UNIX socket on a different system). This is similar to 'ssh -L' functionality, but does not use SSH and requires a pre-shared symmetric key.
Flott! Heldigvis for oss har den en OpenBSD-pakke av høy kvalitet som gjør alt forarbeidet for oss, så vi kan starte med å installere det:
sudo pkg_add spiped
Dette installerer også et fint init-skript for oss, slik at vi kan gå videre og aktivere det:
sudo rcctl enable spiped
Og til slutt starte det:
sudo rcctl start spiped
Init-skriptet sørger for at nøkkelen er opprettet for oss (som vi trenger på en lokal maskin om litt).
Det vi må gjøre nå, er å deaktivere sshdfra å lytte på offentlig adresse, blokkere port 22 og tillate port 8022 (som som standard brukes i spiped init-skript).
Åpne /etc/ssh/sshd_configfilen og endre (og fjern kommentarer) ListenAddresslinjen for å lese 127.0.0.1:
ListenAddress 127.0.0.1
Hvis du bruker PF-regler for portblokkering, sørg for å passere port 8022 (og du kan la port 22 være blokkert), f.eks.
pass in on egress proto tcp from any to any port 8022
Sørg for å laste inn reglene på nytt for å gjøre den aktiv:
sudo pfctl -f /etc/pf.conf
Nå trenger vi bare å kopiere den genererte nøkkelen ( /etc/spiped/spiped.key) fra serveren til en lokal maskin og justere SSH-konfigurasjonen vår, noe på følgende måte:
Host HOSTNAME
ProxyCommand spipe -t %h:8022 -k ~/.ssh/spiped.key
Du må spipe/spipedselvfølgelig ha installert på en lokal maskin også. Hvis du har kopiert nøkkelen og justert navnene/banene, bør du kunne koble til den ProxyCommandlinjen i ~/.ssh/configfilen.
Etter at du har bekreftet at det fungerer, kan vi starte sshdpå nytt på en server:
sudo rcctl restart sshd
Og det er det! Nå har du fullstendig eliminert én stor angrepsvektor, og du har én tjeneste mindre som lytter på et offentlig grensesnitt. SSH-tilkoblingene dine skal nå se ut til å ha kommet fra localhost, for eksempel:
username ttyp0 localhost Thu Nov 06 07:58 still logged in
En fordel med å bruke Vultr er at hver Vultr VPS tilbyr en fin online VNC-type klient tilgjengelig som vi kan bruke i tilfelle vi ved et uhell låser oss ute. Eksperimenter bort!