Cómo instalar Fail2Ban en CentOS 7

Cómo instalar Fail2Ban en CentOS 7

La mayoría de los servidores Linux ofrecen un inicio de sesión SSH a través del puerto 22 para fines de administración remota. Este puerto es un puerto muy conocido, por lo tanto, a menudo es atacado por ataques de fuerza bruta. Fail2ban es un software que escanea los archivos de registro en busca de intentos de inicio de sesión de fuerza bruta en tiempo real y bloquea a los atacantes con firewalld o iptables. Fail2ban reconoce el acceso no deseado o los esfuerzos de violación de la seguridad al servidor dentro del marco de tiempo establecido por el administrador y bloquea las direcciones IP que muestran signos de ataques de fuerza bruta o ataques de diccionario. Este programa funciona en segundo plano y escanea continuamente los archivos de registro en busca de patrones de inicio de sesión inusuales e intentos de violación de la seguridad.

Este tutorial muestra la instalación y configuración de Fail2Ban con firewalld en CentOS 7.

Instalación de Fail2Ban

Para instalar Fail2Ban en CentOS 7, primero tendremos que instalar el repositorio EPEL (Extra Packages for Enterprise Linux). EPEL contiene paquetes adicionales para todas las versiones de CentOS, uno de estos paquetes adicionales es Fail2Ban.

Los siguientes comandos deben ejecutarse después de cambiar al usuario root.

yum install epel-release
yum install fail2ban fail2ban-systemd

Si tiene instalado SELinux, actualice las políticas de SELinux:

yum update -y selinux-policy*

Configurar ajustes para Fail2Ban

Una vez instalado, tendremos que configurar y personalizar el software con un archivo de configuración jail.local. El archivo jail.local anula el archivo jail.conf y se usa para hacer segura la actualización de su configuración personalizada.

Haga una copia del archivo jail.conf y gu√°rdelo con el nombre jail.local:

cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Abra el archivo jail.local para editarlo en Nano con el siguiente comando.

nano /etc/fail2ban/jail.local

El código del archivo puede constar de muchas líneas de códigos que se ejecutan para evitar la prohibición de una o varias direcciones IP, establecer la duración del tiempo de prohibición, etc. Un archivo de configuración de cárcel típico contiene las siguientes líneas.

[DEFAULT]
#
# MISCELLANEOUS OPTIONS
#

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1/8

# External command that will take an tagged arguments to ignore, e.g. <ip>,
# and return true if the IP is to be ignored. False otherwise.
#
# ignorecommand = /path/to/command <ip>
ignorecommand =

# "bantime" is the number of seconds that a host is banned.
bantime = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 5

Ignorar IP se utiliza para establecer la lista de direcciones IP que no se prohibirán. La lista de direcciones IP se debe proporcionar con un separador de espacios. Este parámetro se utiliza para establecer su dirección IP personal (si accede al servidor desde una IP fija).

Hora de Ban El parámetro se usa para establecer la duración de los segundos durante los cuales se debe prohibir un host.

tiempo de busqueda es el par√°metro que se utiliza para verificar si un host debe ser prohibido o no. Cuando el host genera maxrety en su √ļltimo tiempo de b√ļsqueda, se proh√≠be.

maxreintentar es el par√°metro utilizado para establecer el l√≠mite para el n√ļmero de reintentos por parte de un anfitri√≥n, al exceder este l√≠mite, el anfitri√≥n es baneado.

Agregue un archivo jail para proteger SSH.

Crear un nuevo archivo con el editor Nano

nano /etc/fail2ban/jail.d/sshd.local

Al archivo anterior, agregue las siguientes líneas de código.

[sshd]
enabled = true
port = ssh
#action = firewallcmd-ipset
logpath = %(sshd_log)s
maxretry = 5
bantime = 86400

Parámetro activado se establece en verdadero, para proporcionar protección, para desactivar la protección, se establece en falso. El parámetro de filtro verifica el archivo de configuración sshd, ubicado en la ruta /etc/fail2ban/filter.d/sshd.conf.

El parámetro acción se utiliza para derivar la dirección IP que debe prohibirse utilizando el filtro disponible en /etc/fail2ban/action.d/firewallcmd-ipset.conf.

Puerto El par√°metro se puede cambiar a un nuevo valor, como puerto = 1212, como es el caso. Al usar el puerto 22, no es necesario cambiar este par√°metro.

Logpath proporciona la ruta donde se almacena el archivo de registro. Este archivo de registro es escaneado por Fail2Ban.

maxreintentar se utiliza para establecer el límite máximo de entradas de inicio de sesión fallidas.

Hora de Ban El parámetro se usa para establecer la duración de los segundos durante los cuales se debe prohibir un host.

Ejecutando el servicio Fail2Ban

Cuando a√ļn no est√© ejecutando CentOS Firewall, in√≠cielo:

systemctl enable firewalld
systemctl start firewalld

Ejecute las siguientes líneas de comando para ejecutar el software de protección Fail2Ban en el servidor.

systemctl enable fail2ban
systemctl start fail2ban

Seguimiento de entradas de inicio de sesión fallidas

El siguiente comando se usa para verificar si hubo intentos fallidos de iniciar sesión en el servidor a través del puerto ssh.

cat /var/log/secure | grep 'Failed password'

Ejecutar el comando anterior obtendr√° una lista de intentos fallidos de contrase√Īa ra√≠z desde diferentes direcciones IP. El formato de resultados ser√° similar al que se muestra a continuaci√≥n:

Apr 4 17:05:12 htf sshd[4287]: Failed password for root from 108.61.157.25 port 23121 ssh2
Apr 4 17:05:15 htf sshd[3154]: Failed password for root from 108.61.157.25 port 14486 ssh2
Apr 4 17:05:16 htf sshd[3154]: Failed password for root from 108.61.157.25 port 24157 ssh2
Apr 4 17:05:18 htf sshd[3154]: Failed password for root from 108.61.157.25 port 24157 ssh2

Comprobación de las IP prohibidas por Fail2Ban

El siguiente comando se usa para obtener una lista de direcciones IP prohibidas que fueron reconocidas como amenazas de fuerza bruta.

iptables -L -n

Verifique el estado de Fal2Ban

Use el siguiente comando para verificar el estado de las c√°rceles de Fail2Ban:

fail2ban-client status

El resultado debería ser similar a esto:

[[email protected] ]# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Desbanear una dirección IP

Para eliminar una direcci√≥n IP de la lista prohibida, el par√°metro IPADDRESS se establece en la IP adecuada que necesita desbanear. El nombre ¬ęsshd¬Ľ es el nombre de la c√°rcel, en este caso la c√°rcel ¬ęsshd¬Ľ que configuramos arriba. El siguiente comando hace el trabajo.

fail2ban-client set sshd unbanip IPADDRESS

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *