Saltar al contenido principal

% 16k.es

Fail2ban en Centos 8

Fail2Ban es un software de prevención de intrusiones escrito en Python que protege las máquinas contra ataques de fuerza bruta

Incluso si la autenticación por password está deshabilitada, encuentro terriblemente molestos los logs llenos de mierda por los ataques de fuerza bruta.

Por eso, entre otras cosas, sigo desplegando fail2ban.

En CentOS 8 está en el repositorio EPEL:

yum -y install fail2ban
systemctl enable --now fail2ban

La jaula sshd no se crea por defecto. Para hacerlo:

cat >/etc/fail2ban/jail.d/10-sshd.conf <<EOF
[Default]
bantime = 900
findtime = 600
maxretry = 3
# ignoreip = 127.0.0.1/8 ::1 103.1.2.3
banaction = iptables-multiport

[sshd]
enabled = true
EOF

systemctl reload fail2ban

Esto significa: después de 3 (maxretry) intentos fallidos en 10 (findtime) minutos, la IP es baneada por 900 (bantime) segundos.

Para listar IPs baneadas:

# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed:	16
|  |- Total failed:	132
|  `- Journal matches:	_SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned:	5
   |- Total banned:	11
   `- Banned IP list:	222.186.175.150 222.186.31.166 222.186.175.163 222.186.30.57 222.186.175.154

…y las reglas de firewall:

# firewall-cmd --list-rich-rules
rule family="ipv4" source address="222.186.31.166" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"
rule family="ipv4" source address="222.186.175.163" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"
rule family="ipv4" source address="222.186.30.57" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"
rule family="ipv4" source address="222.186.175.154" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"
rule family="ipv4" source address="112.85.42.194" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"