Com que l'accés SSH és el punt d'entrada més important per administrar el vostre servidor, s'ha convertit en un vector d'atac molt utilitzat.
Els passos bàsics per assegurar SSH inclouen: desactivar l'accés root, desactivar completament l'autenticació de contrasenyes (i utilitzar claus) i canviar els ports (poc a veure amb la seguretat, tret de minimitzar els escàners de ports habituals i el correu brossa).
El següent pas seria una solució de tallafoc PF amb seguiment de connexió. Aquesta solució gestionaria els estats de connexió i bloquejaria qualsevol IP que tingui massa connexions. Això funciona molt bé i és molt fàcil de fer amb PF, però el dimoni SSH encara està exposat a Internet.
Què tal fer que SSH sigui completament inaccessible des de l'exterior? Aquí és on entra Spiped . Des de la pàgina d'inici:
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.
Genial! Afortunadament per a nosaltres, té un paquet OpenBSD d'alta qualitat que fa tot el treball de preparació per nosaltres, així que podem començar instal·lant-lo:
sudo pkg_add spiped
Això també ens instal·la un script d'inici agradable, de manera que podem continuar i habilitar-lo:
sudo rcctl enable spiped
I finalment comença:
sudo rcctl start spiped
L'script d'inici assegura que se'ns crea la clau (que necessitarem en una màquina local d'aquí a una estona).
El que hem de fer ara és desactivar l' sshdescolta a l'adreça pública, bloquejar el port 22 i permetre el port 8022 (que s'utilitza per defecte a l'script d'inici spiped).
Obre el /etc/ssh/sshd_configfitxer i canvia (i descomenta) la ListenAddresslínia per llegir 127.0.0.1:
ListenAddress 127.0.0.1
Si utilitzeu regles PF per al bloqueig de ports, assegureu-vos de passar el port 8022 (i podeu deixar el port 22 bloquejat), per exemple:
pass in on egress proto tcp from any to any port 8022
Assegureu-vos de tornar a carregar les regles per activar-lo:
sudo pfctl -f /etc/pf.conf
Ara tot el que necessitem és copiar la clau espiada generada ( /etc/spiped/spiped.key) del servidor a una màquina local i ajustar la nostra configuració SSH, alguna cosa de la següent manera:
Host HOSTNAME
ProxyCommand spipe -t %h:8022 -k ~/.ssh/spiped.key
També cal tenir spipe/spipedinstal·lat en una màquina local, òbviament. Si heu copiat la clau i heu ajustat els noms/camins, hauríeu de poder connectar-vos amb aquesta ProxyCommandlínia del vostre ~/.ssh/configfitxer.
Després de confirmar que funciona, podem reiniciar-lo sshden un servidor:
sudo rcctl restart sshd
I ja està! Ara heu eliminat completament un gran vector d'atac i teniu un servei menys que escolta en una interfície pública. Ara les vostres connexions SSH haurien de semblar que provenen de localhost, per exemple:
username ttyp0 localhost Thu Nov 06 07:58 still logged in
Un avantatge d'utilitzar Vultr és que cada VPS Vultr ofereix un bon client en línia de tipus VNC disponible que podem utilitzar en cas que ens bloquegem accidentalment. Experimenta lluny!