LinuxParty
Fail2ban es un software de prevención de intrusiones de código abierto y libre desarrollado en el lenguaje de programación Python. Fail2ban funciona mediante el control de los archivos de registro como /var/log/pwdfail, /var/log/auth.log, /var/log/secure, etc... Y la prohibición de la dirección IP después de muchos intentos fallidos de contraseña. Se utiliza para actualizar las reglas del cortafuegos IPTables rechazando la dirección IP por una cantidad especificada de tiempo.
En este artículo se explica cómo instalar y configurar Fail2ban bajo RHEL, CentOS y Fedora. Fail2ban se ejecuta como un demonio que utiliza secuencias de comandos de Python para analizar los archivos de registro de intrusiones y se suma reglas personalizadas para el archivo de configuración iptables para prohibir el acceso a determinadas direcciones IP.
Instale Fail2ban en RedHat / CentOS / Fedora
Antes de ir para la instalación y configuración de Fail2Ban, me gustaría decir que la mayoría de los atacantes que intentan obtener acceso root a través de SSH. Por lo tanto, le recomiendo que preste mucha atención a las cosas como desactivar las conexiones ssh root y utilice par de claves ssh para la autenticación, etc.
Fail2Ban no es un paquete predeterminado, y por lo tanto no está disponible en sistemas Linux, por lo que tendrá que agregar y activar terceros repositorios RPMForge o repositorio EPEL en su máquina Linux. Una vez que haya agregado repositorio, instalarlo usando los siguientes comandos YUM.
# yum install fail2ban
Configuración por defecto de la sección Fail2Ban
El archivo de configuración Fail2Ban principal se encuentra en / etc/fail2ban/jail.conf. Así, ábralo con editor VI o cualquier editor que se sienta cómodo.
# vi /etc/fail2ban/jail.conf
También puedes ver el fichero sin los comentarios así: (para compararlo con la última parte de este artículo)
# cat /etc/fail2ban/jail.conf | grep -v '#'
Ahora, podrás ver sección default con algunas reglas básicas que se siguen por el mismo fail2ban. Si quiere añadir una capa extra de protección para su servidor, se puede personalizar la sección de cada regla de acuerdo a sus necesidades.
[DEFAULT] # "Ignoreip" puede ser una dirección IP, una máscara CIDR o un host DNS. Fail2ban no lo hará # Prohibir una serie que coincide con una dirección en esta lista. Varias direcciones pueden ser # Define mediante separador de espacio. ignoreip = 127.0.0.1 # "Bantime" es el número de segundos que un host está prohibido. bantime = 600 # Un host está prohibida si se ha generado "maxretry" durante la última "findtime" # Segundos. findtime = 600 # "Maxretry" es el número de fallos antes de una serie baneado. maxretry = 3
Permítaseme describir cada sección de las reglas con su descripción y para qué usamos estas reglas.
ignoreip: IgnoreIP le permite crear una lista blanca ciertas direcciones IP de bloqueo. Aquí, usted puede especificar una lista de direcciones IP con espacio separado y asegúrese de incluir su dirección.
bantime: El número de segundos que un anfitrión se le prohibió el acceso al servidor. El valor predeterminado es de 600 (600 segundos = 10 minutos), es posible aumentar esta cifra a una hora o más si lo desea.
findtime: La cantidad de tiempo que el anfitrión tiene que entrar en el valor predeterminado de 10 minutos, esto significa que si un intento de acogida, y fallo.
maxretry: El número de intentos fallidos de inicio de sesión antes de que un equipo se bloquea para la duración del tiempo de prohibición.
Sección Configuración de ssh-iptables para Fail2Ban
La siguiente sección es la sección ssh-iptables por defecto y se activa de forma predeterminada. Por lo tanto, no es necesario realizar ningún cambio en esta sección
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.]
logpath = /var/log/secure
maxretry = 5
Usted puede encontrar los detalles de cada regla se describen a continuación.
enabled: habilitada: Esta sección se refiere que la protección SSH está activado. Puede desactivarlo cambiando la palabra "true" a "false".
filter: Filtro: Esta sección por defecto establecida en sshd y se refiere al archivo de configuración (/etc/fail2ban/filter.d/sshd.conf) que contiene las reglas que fail2ban utiliza para encontrar coincidencias.
action: acción: Esta acción le dice a la fail2ban cuando debe prohibir una dirección IP coincidente n¡en un filtro en el archivo /etc/fail2ban/action.d/iptables.conf. Si el servidor tiene la configuración del correo, puede agregar la dirección de correo electrónico, donde fail2ban le envía una alerta por correo electrónico cada vez que se prohíbe una dirección IP. La sección del remitente se refiere al archivo /etc/fail2ban/action.d/sendmail-whois.conf.
logpath: La ruta del registro es la ubicación de los registros donde fail2ban hará un seguimiento.
maxretry: La máxima sección de reintentos es la misma definición que la opción por defecto que hemos hablado anteriormente.
Reinicio Servicio Fail2Ban
Una vez que haya realizado los cambios en el archivo de configuración fail2ban, a continuación, asegúrese siempre de que reinicie el servicio Fail2Ban.
# chkconfig --level 23 fail2ban on # service fail2ban start Starting fail2ban: [ OK ]
Verificación de reglas de iptables fail2ban
Compruebe las reglas que fail2ban añade en efecto dentro de la sección de la tabla IP.
# iptables -L
He hecho algunos intentos fallidos de inicio de sesión desde uno de nuestros servidores al servidor en el que instaló fail2ban y funciona. Usted ve la dirección IP prohibido de mi servidor.
Message from syslogd@localhost at Nov 23 13:57:53 ... fail2ban.actions: WARNING [ssh-iptables] Ban 172.16.2.2 iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination fail2ban-SSH tcp -- anywhere anywhere tcp dpt:ssh ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http ACCEPT tcp -- anywhere anywhere state NEW tcp multiport dports 5901:5903,6001:6003 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain fail2ban-SSH (1 references) target prot opt source destination DROP all -- 172.16.2.2 anywhere RETURN all -- anywhere anywhere
Para ver las actuales intentos fallidos de inicio de sesión ssh, ejecute el siguiente comando, se mostrará una lista de intentos fallidos de intentos por los anfitriones.
# cat /var/log/secure | grep 'Failed password' | sort | uniq -c
1 Nov 19 16:53:37 localhost sshd[28185]: Failed password for root from 172.16.25.125 port 1302 ssh2 1 Nov 23 13:57:43 localhost sshd[19079]: Failed password for root from 172.16.2.2 port 57599 ssh2 1 Nov 23 13:57:46 localhost sshd[19079]: Failed password for root from 172.16.2.2 port 57599 ssh2 1 Nov 23 13:57:50 localhost sshd[19079]: Failed password for root from 172.16.2.2 port 57599 ssh2 1 Oct 18 14:11:58 localhost sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2 1 Oct 18 14:12:03 localhost sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2 1 Oct 18 14:12:11 localhost sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2 1 Oct 18 14:12:16 localhost sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2 1 Oct 18 14:12:22 localhost sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2 1 Oct 18 14:12:28 localhost sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2 1 Oct 18 14:12:47 localhost sshd[10719]: Failed password for root from 172.16.18.249 port 4774 ssh2
Quite la dirección IP de Fail2Ban
Para quitar una dirección IP prohibida en las reglas IPTables fail2ban. Ejecute el siguiente comando.
# iptables -D fail2ban-ssh 1
Para cualquier información adicional, visite el sitio oficial Fail2ban página. Si tiene alguna pregunta algún comentario sobre este artículo, por favor nos dice a través de los comentarios.
Este es un ejemplo del fichero /etc/fail2ban/jail.conf
# Fail2Ban configuration file # # Author: Cyril Jaquier # # $Revision: 611 $ # # La definición DEFAULT permite una configuración global de las opciones. Ellos pueden ser anulados # en cada cárcel después. [DEFAULT] # "ignoreip" puede ser una dirección IP, una máscara CIDR o un host DNS. Fail2ban no # prohibirá un host que coincida con una dirección en esta lista. Varias direcciones pueden ser # definidas usando el separador: comás o espacios ignoreip =127.0.0.1192.168.0.99 # "bantime" es la cantidad de segundos que un host está prohibido. bantime =600 # Un host está prohibido si ha llegado al "maxretry" durante el último "tiempo de búsqueda" # segundos. findtime =600 # "maxretry" es la cantidad de fallos antes de que un host sea prohibido. maxretry =3 # "backend" especifica el backend utilizado para obtener la modificación de archivos. Disponible # Las opciones son "gamin", "polling" y "auto". Esta opción puede ser anulada en # cada cárcel también (use "gamin" para una cárcel y "polling" para otra). # # gamin: requiere que se instale Gamin (un monitor de alteración de archivos). Si Gamin # no está instalado, Fail2ban usará sondeo. # polling: utiliza un algoritmo de sondeo que no requiere bibliotecas externas. # auto: elegirá Gamin si está disponible y, de lo contrario, sondeará. backend = auto # Esta cárcel corresponde a la configuración estándar en Fail2ban 0.6. # La acción de whois por correo envía un correo electrónico de notificación con una solicitud whois # en el cuerpo. [ssh-iptables] enabled =true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo., sender=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.] logpath = /var/log/messages maxretry =5 [proftpd-iptables] enabled =true filter = proftpd action = iptables[name=ProFTPD, port=ftp, protocol=tcp] sendmail-whois[name=ProFTPD, dest=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.] logpath = /var/log/messages maxretry =6 # Esta cárcel obliga al backend a "sondear". [sasl-iptables] enabled =true filter = sasl backend = polling action = iptables[name=sasl, port=smtp, protocol=tcp] sendmail-whois[name=sasl, dest=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.] logpath = /var/log/mail # Aquí usamos TCP-Wrappers en lugar de Netfilter / Iptables. "ignoreregex" es # utilizado para evitar la prohibición del usuario "myuser". [ssh-tcpwrapper] enabled =false filter = sshd action = hostsdeny sendmail-whois[name=SSH, dest=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.] ignoreregex = for myuser from logpath = /var/log/messages # Esta cárcel demuestra el uso de comodines en "logpath". # Además, es posible dar otros archivos en una nueva línea. [apache-tcpwrapper] enabled =true filter = apache-auth action = hostsdeny logpath = /var/log/apache2/error_log maxretry =6 # La ruta hosts.deny se puede definir con el argumento "file" si no está # en / etc. [postfix-tcpwrapper] enabled =true filter = postfix action = hostsdeny sendmail[name=Postfix, dest=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.] logpath = /var/log/mail bantime =300 # Do not ban anybody. Just report information about the remote host. # A notification is sent at most every 600 seconds (bantime). [vsftpd-notification] enabled =false filter = vsftpd action = sendmail-whois[name=VSFTPD, dest=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.] logpath = /var/log/messages maxretry =5 bantime =1800 # Same as above but with banning the IP address. [vsftpd-iptables] enabled =false filter = vsftpd action = iptables[name=VSFTPD, port=ftp, protocol=tcp] sendmail-whois[name=VSFTPD, dest=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.] logpath = /var/log/messages maxretry =5 bantime =1800 # Ban hosts which agent identifies spammer robots crawling the web # for email addresses. The mail outputs are buffered. [apache-badbots] enabled =true filter = apache-badbots action = iptables-multiport[name=BadBots, port="http,https"] sendmail-buffered[name=BadBots, lines=5, dest=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.] logpath = /var/log/apache2/access_log bantime =172800 maxretry =1 [courierpop3] enabled =true port = pop3 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail maxretry =5 [courierimap] enabled =true port = imap2 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail maxretry =5
-
Seguridad
- Conexión Segura NFS en Linux, Tunelizar NFS sobre SSH y Configuración de NFS sobre SSH para Mayor Seguridad
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- Millones de teléfonos móviles podrían ser vulnerables a la vigilancia del gobierno chino
- Cómo limitar las conexiones SSH a la red local en Linux
- Los televisores inteligentes son como un «caballo de Troya digital» en los hogares
- Snort para Windows, detección de Intrusos y seguridad.
- Detección de Intrusiones con las herramientas: BASE y Snort.
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Configuración con Ejemplos de Snort para Windows, detección de intrusiones
- ¿El gobierno de EE. UU. ignoró la oportunidad de hacer que TikTok fuera más seguro?
- ¿Qué es SSH y cómo se utiliza? Los conceptos básicos de Secure Shell que necesitas saber
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS
- Consejos de Seguridad para Pagos Móviles en España: Protege tus Transacciones con Estos Consejos Prácticos
- 22 herramientas de seguridad de servidores Linux de código abierto en 2023
- 8 hábitos que deben tomar los teletrabajadores altamente seguros