Budući da je SSH pristup najvažnija ulazna točka za administraciju vašeg poslužitelja, postao je široko korišten vektor napada.
Osnovni koraci za osiguranje SSH-a uključuju: onemogućavanje root pristupa, potpuno isključenje provjere autentičnosti lozinkom (i korištenje ključeva umjesto toga) i promjenu portova (malo ima veze sa sigurnošću osim minimiziranja uobičajenih skenera portova i neželjene pošte u dnevniku).
Sljedeći korak bio bi rješenje PF vatrozida s praćenjem veze. Ovo rješenje bi upravljalo stanjima veze i blokiralo svaki IP koji ima previše veza. Ovo izvrsno funkcionira i vrlo je lako za napraviti s PF-om, ali SSH daemon je još uvijek izložen Internetu.
Kako bi bilo da SSH bude potpuno nedostupan izvana? Ovdje dolazi spiped . S početne stranice:
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.
Sjajno! Na našu sreću, ima visokokvalitetan OpenBSD paket koji umjesto nas obavlja sve pripremne poslove, tako da možemo početi s instalacijom:
sudo pkg_add spiped
Ovo nam također instalira lijepu init skriptu, tako da možemo nastaviti i omogućiti je:
sudo rcctl enable spiped
I konačno započnite:
sudo rcctl start spiped
Init skripta osigurava kreiranje ključa za nas (koji će nam uskoro trebati na lokalnom računalu).
Ono što sada trebamo učiniti je onemogućiti sshdslušanje na javnoj adresi, blokirati port 22 i dopustiti port 8022 (koji se prema zadanim postavkama koristi u spiped init skripti).
Otvorite /etc/ssh/sshd_configdatoteku i promijenite (i dekomentirajte) ListenAddressredak za čitanje 127.0.0.1:
ListenAddress 127.0.0.1
Ako koristite PF pravila za blokiranje porta, obavezno prođite port 8022 (i port 22 možete ostaviti blokiranim), npr.:
pass in on egress proto tcp from any to any port 8022
Obavezno ponovno učitajte pravila kako bi bila aktivna:
sudo pfctl -f /etc/pf.conf
Sada sve što trebamo je kopirati generirani spiped ključ ( /etc/spiped/spiped.key) s poslužitelja na lokalni stroj i prilagoditi našu SSH konfiguraciju, nešto u sljedećim crtama:
Host HOSTNAME
ProxyCommand spipe -t %h:8022 -k ~/.ssh/spiped.key
spipe/spipedOčigledno, morate imati instaliran i na lokalnom računalu. Ako ste kopirali ključ i podesili nazive/putove, trebali biste se moći povezati s tom ProxyCommandlinijom u ~/.ssh/configdatoteci.
Nakon što ste potvrdili da radi, možemo se ponovno pokrenuti sshdna poslužitelju:
sudo rcctl restart sshd
I to je to! Sada ste potpuno eliminirali jedan veliki vektor napada i imate jednu uslugu manje koja sluša na javnom sučelju. Vaše SSH veze bi sada trebale izgledati kao da dolaze s lokalnog hosta, na primjer:
username ttyp0 localhost Thu Nov 06 07:58 still logged in
Prednost korištenja Vultra je da svaki Vultr VPS nudi lijep online klijent tipa VNC koji možemo koristiti u slučaju da se slučajno zaključamo. Eksperimentirajte dalje!