Com bloquejar els atacs de força bruta SSH amb SSHGUARD


SSHGuard és un dimoni de codi obert que protegeix els amfitrions dels atacs de força bruta. Ho aconsegueix mitjançant la supervisió i l'agregació de registres del sistema, la detecció d'atacs i el bloqueig d'atacants mitjançant un dels backends del tallafoc de Linux: iptables, FirewallD, pf i ipfw.

Dissenyat inicialment per proporcionar una capa addicional de protecció per al servei OpenSSH, SSHGuard també protegeix una àmplia gamma de serveis com Vsftpd i Postfix. Reconeix diversos formats de registre, com ara Syslog, Syslog-ng i fitxers de registre en brut.

[ També us pot agradar: Com protegir i endurir el servidor OpenSSH ]

SSHGuard és bastant semblant a Fail2ban només perquè està escrit en C (Fail2ban està escrit en Python), és més lleuger i ofereix menys funcions.

En aquesta guia, demostrarem com podeu instal·lar i configurar SSHGuard per bloquejar els atacs de força bruta SSH al vostre servidor Linux.

Pas 1: instal·leu SSHGuard a Linux

Comencem amb la instal·lació de SSHGuard a Linux.

Primer, actualitzeu les llistes de paquets i després instal·leu SSHGuard des dels dipòsits predeterminats mitjançant el gestor de paquets apt.

$ sudo apt update
$ sudo apt install sshguard

Un cop instal·lat, el servei SSHGuard s'inicia automàticament i podeu verificar-ho mitjançant l'ordre:

$ sudo systemctl status sshguard

Per a distribucions basades en RHEL com CentOS, Rocky i AlmaLinux, comenceu instal·lant el dipòsit EPEL tal com es proporciona a l'ordre següent.

$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
$ sudo dnf install epel-release

Amb EPEL al seu lloc, seguiu endavant i instal·leu SSHGuard mitjançant el gestor de paquets dnf.

$ sudo dnf install sshguard 

Un cop instal·lat, inicieu i configureu SSHGuard perquè s'iniciï a l'inici o al reinici del sistema.

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

Assegureu-vos de verificar que SSHGuard s'està executant com s'esperava.

$ sudo systemctl status sshguard

Pas 2: configuració de SSHGuard a Linux

SSHGuard supervisa activament els fitxers de registre /var/log/auth.log, /var/log/secure systemd journal i syslog-ng per als intents fallits d'inici de sessió.

Per a cada intent d'inici de sessió infructuós, l'amfitrió remot es prohibeix durant un període de temps limitat que, per defecte, s'estableix en 120 segons. A partir de llavors, el temps de prohibició augmenta en un factor d'1,5 amb cada intent d'inici de sessió fallit.

Al fitxer sshguard.conf s'especifica el moment en què es prohibeixen els hosts ofensius, a més d'altres paràmetres. Podeu accedir al fitxer de configuració mitjançant l'editor vim tal com es mostra.

$ sudo vim /etc/sshguard/sshguard.conf

A les distribucions basades en RHEL, el fitxer de configuració es troba al camí següent.

$ sudo vim /etc/sshguard.conf

Aquí teniu una mostra del fitxer de configuració quan es visualitza des d'Ubuntu/Debian.

Centrem-nos en l'opció principal.

  • La directiva BACKEND apunta a la ruta completa de l'executable de backend. En aquest exemple, veiem que IPtables s'estableix com a backend del tallafoc predeterminat.
  • La directiva THRESHOLD bloqueja els atacants quan la seva puntuació d'atac supera el valor especificat.
  • L'opció BLOCK_TIME és el nombre de segons que es bloqueja un atacant després de cada intent d'inici de sessió fallit. Per defecte, s'estableix en 120 després del primer intent. Això augmenta amb cada intent fallit d'inici de sessió.
  • L'opció DETECTION_TIME fa referència al temps en segons durant el qual l'atacant és registrat o recordat pel sistema abans que es restableixi la seva puntuació.
  • L'opció WHITELIST_file apunta al camí complet del fitxer de la llista blanca que conté amfitrions que se suposa que no estan a la llista negra./li>

Pas 3: configureu SSHGuard per bloquejar els atacs de força bruta SSH

Per evitar atacs de força bruta, heu de configurar els següents tallafocs per treballar amb sshguard.

Si teniu UFW instal·lat i habilitat al vostre sistema Ubuntu/Debian, modifiqueu el fitxer /etc/ufw/before.rules.

$ sudo vim etc/ufw/before.rules

Afegiu les línies següents just després de la secció permetre tot en loopback.

# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

# hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

Deseu el fitxer i reinicieu UFW.

$ sudo systemctl restart ufw

Ara intenteu iniciar sessió al servidor des d'un sistema diferent amb les credencials incorrectes i observeu que us bloquejarà durant 120 segons després del primer intent fallit d'inici de sessió.

Podeu verificar-ho comprovant el fitxer de registre auth.log.

$ sudo tail -f  /var/log/auth.log

Després del següent intent fallit de registre, el temps de bloqueig augmenta a 240 segons, després a 480 segons, després a 960 segons, i així successivament.

Si esteu executant firewalld, assegureu-vos que estigui configurat i habilitat. A continuació, executeu l'ordre següent per habilitar sshguard a la vostra zona preferida.

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

Per aplicar els canvis, torneu a carregar Firewalld i sshguard.

$ sudo firewall-cmd --reload
$ sudo systemctl restart sshguard

A continuació, comproveu la regla de la següent manera:

$ sudo firewall-cmd —-info-ipset=sshguard4

Si encara esteu utilitzant Iptables, primer, creeu una nova regla de cadena per a sshguard a Iptables per començar a bloquejar els dolents.

# iptables -N sshguard

A continuació, actualitzeu la cadena INPUT per dirigir el trànsit a sshguard i bloquejar tot el trànsit de parts nefastes.

# iptables -A INPUT -j sshguard

Per bloquejar ports específics com SSH, POP i IMAP dels abusadors, executeu l'ordre:

# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

I, finalment, deseu la regla perquè els canvis entrin en vigor.

# iptables-save > /etc/iptables/iptables.rules

Pas 4: Com afegir a la llista blanca els amfitrions bloquejats SSH

Per a la llista blanca d'un amfitrió bloquejat, només cal que especifiqueu el seu nom d'amfitrió o adreça IP al fitxer de la llista blanca que es troba a:

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

A continuació, assegureu-vos de reiniciar el dimoni sshguard i el backend del tallafoc perquè s'apliquin els canvis.

En aquesta guia, hem demostrat com podeu bloquejar els atacs SSH Bruteforce mitjançant el dimoni SSHGuard als servidors Linux. Els vostres comentaris són benvinguts.