Instalar y configurar fail2ban en Debian 9 para sshd

Esto siempre viene bien para paliar un poco los intentos desde la misma IP de acceder vía ssh a nuestras maquinas (independientemente del tipo de acceso que se tenga configurado).
Partimos de una instalación fresca de Debian 9. Actualizamos el sistema y tras ello reiniciamos para hacer login como root.
 
Instalaremos algunas dependencias por si acaso no las tenemos ya satisfechas. Supuestamente se parte de que si que tenemos instalado un servicio ssh.
 

# apt update && apt upgrade -y
# apt-get install rsyslog iptables nano
# shutdown -r now

 
Ahora nos vamos a editar el archivo de configuración /etc/ssh/sshd para que escuche por el puerto 22341 o el que decidamos.
Es una buena practica cambiar el puerto 22 para que no esté el servicio tan accesible de primeras ya que los escaneos automáticos irán a buscar el servicio allí.
 
Esto se hace des-comentando la linea del puerto en el archivo /etc/ssh/sshd utilizando para ello el editor que más rabia nos de (por ejemplo nano, vi, vim, …):
 

#Port 22

 
Una vez des-comentada y con el nuevo puerto guardaremos los cambios y tendría que quedar esa línea así:
 

Port 22341

 
Es importante revisar si en el archivo sshd que hemos tocado existe esto:
 

# Logging
#SyslogFacility AUTH
#LogLevel INFO

 
Y si está comentado lo vamos a des-comentar dejando la cosa así:
 

# Logging
SyslogFacility AUTH
LogLevel INFO

 
Una vez guardados los cambios reiniciamos el servicio:
 

# /etc/init.d/sshd restart

 
Y comprobamos que escucha en el puerto 22341 (o el que indicásemos anteriormente) así:
 

# netstat -atunp | grep "sshd" | grep "LISTEN" | grep "22341"

 

Reglas IPTABLES

 
Ahora vamos a actualizar las reglas de iptables:
 

# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
# iptables -A INPUT -p tcp --dport 22341 -j ACCEPT

 
Podemos comprobarlas así:
 

# iptables -S

 
Y guardar las reglas para que los cambios queden persistentes:
 

iptables-save > /etc/iptables.up.rules
touch /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables
echo '#!/bin/sh' >> /etc/network/if-pre-up.d/iptables
echo '/sbin/iptables-restore < /etc/iptables.up.rules' >> /etc/network/if-pre-up.d/iptables

 
Una vez llegados a este punto tendremos que reiniciar el sistema para comprobar que accedemos vía ssh desde el puerto 22341 y que al entrar las reglas siguen. Reiniciamos por ejemplo escribiendo “reboot” o “shutdown -r now” (sin las comillas).
 

Instalamos ahora si fail2ban y lo configuramos

 
Es cierto que no es necesario meter tantos reinicios. Con reiniciar los servicios muchas veces es suficiente no obstante lo que se busca en comprobar que todo va bien tras un reinicio y por tanto por eso indico que reiniciemos.
 
Dicho eso si todo va bien es el momento de instalar y configurar fail2ban para el servicio sshd.
 

# apt install fail2ban -y

 
Si nos fallase al instalar es posible que sea por que nos falte el archivo /var/log/auth.log . En tal caso:
 

# touch /var/log/auth.log
# chown root:adm /var/log/auth.log
# /etc/init.d/rsyslog restart
# /etc/init.d/sshd restart
# /etc/init.d/fail2ban

 
Una vez instalado fail2ban tendremos si ejecutamos como root “iptables -S” algo así:
 

-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd

 
Con lo cual hemos de configurar el puerto y eso vamos a hacerlo en el archivo /etc/fail2ban/jail.d/defaults-debian.conf añadiendo a la sección de [sshd]:
 

port = 22341

 
En el archivo /etc/fail2ban/jail.conf veremos estos valores:
 

bantime  = 600
maxretry = 5

 
Podemos alterarlos si queremos limitar los intentos de conexión a 3 por ejemplo y subir el tiempo de baneo (segundos).
 
Una vez realizado reiniciaremos el servicio fail2ban y miraremos las reglas de iptables con iptables -L o iptables -S .
Si todo va bien reiniciamos la maquina e intentamos acceder varias veces hasta que nos bloque la IP.
Si lo hace es que todo va bien :).
 

Eliminar una IP que ha sido bloqueada

 
La forma guay es así:
 

iptables -S
fail2ban-client status
fail2ban-client set sshd unbanip 88.31.11.27

 
Primero miramos la IP con iptables -S y luego el nombre de la jaula con fail2ban-client status para finalmente des-banear la ip.
 
Y eso es todo amigos.
 
Saludos cordiales.

próximo Publicación

Atrás Publicación

Dejar una contestacion

© 2018 [ MIERDA TV ]

Tema de Anders Norén