Si el puerto SSH quieres cambiar, fail2ban también deberás ajustar

por | diciembre 20, 2017

Y esto sirve tanto para SSH como para otros servicios que estemos protegiendo con fail2ban.

Fail2ban básicamente parsea los logs de diversos servicios en busca de determinados patrones de ataque. Si los encuentra, aplica una regla de bloqueo (por defecto en iptables) de dicho servicio para la IP o IPs infractoras. Si por ejemplo se bloquea SSH para la IP 192.168.2.105, la regla de bloqueo que se aplicará en iptables será en el puerto 22 para dicha IP. Si por ejemplo hemos cambiado el puerto SSH al puerto 2220, dicha regla no va a servir ya que por mucho que bloqueemos a 192.168.2.105 en el puerto 22, seguirá realizando intentos de conexión en el puerto 2220.

En el fichero de configuración principal jail.conf encontramos:

[sshd]

port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

En port se especifica el puerto por defecto. ¿Y de dónde lo obtiene? Del contenido de /etc/services, donde se asocian servicios y puertos que asociados por defecto:

Si por ejemplo hemos movido el puerto 22 de SSH al 2220, la manera recomendada de modificar el comportamiento de fail2ban para que funcione correctamente al generar reglas de bloqueo es utilizar nuestro propio fichero jail.local donde hacer los overrides de configuración que necesitemos. Nunca deberíamos modificar el fichero jail.conf directamente. Entre otras cosas, porque con las actualizaciones se sobreesribe. Si no lo tenemos, creamos un fichero jail.local y ponemos para nuestro ejemplo:

# SSH
[sshd]
enabled = true
port = 2220

[sshd-ddos]
enabled = true
port = 2220

Realizado el cambio reiniciamos fail2ban:

systemctl restart fail2ban.service

En subsiguientes detecciones de fail2ban deberíamos ver las reglas de bloqueo correctamente creadas (en este caso en las cadenas de iptables f2b-sshd y f2b-sshd-ddos) comprobando con iptables -L -v. En /var/log/fail2ban.log veremos también las IPs que van siendo bloqueadas.