Cómo usar Fail2ban para asegurar su servidor Linux

Cómo usar Fail2ban para asegurar su servidor Linux

Mejorar la seguridad de su servidor debe ser una de sus principales prioridades cuando se trata de administrar un servidor de Linux. Al revisar los registros de su servidor, a menudo puede encontrar diferentes intentos de inicio de sesión de fuerza bruta, inundaciones web, búsqueda de exploits y muchos otros.

Con un software de prevención de intrusos como fail2ban, Puede examinar los registros de su servidor y agregar reglas adicionales de iptables para bloquear direcciones IP problemáticas.

Leer también: Cómo instalar Fail2ban para proteger a SSH en CentOS/RHEL 8

Este tutorial le mostrará cómo instalar fail2ban y configurar la configuración básica para proteger su sistema Linux de los ataques de fuerza bruta.

Requisitos

Fail2ban está escrito en Python y el único requisito es tener instalado Python:

  • Fail2ban Branch 0.9.x requiere python> = 2.6 o Python> = 3.2
  • Fail2ban Branch 0.8.x requiere python> = 2.4
  • Acceso raíz a su sistema
  • Opcionalmente, iptables o showewall y sendmail

Cómo instalar Fail2Ban en Linux Systems

Instalación de fail2ban es relativamente fácil:

Instale Fail2Ban en CentOS/RHEL

Primero, actualice sus paquetes, habilite el Epel repositorio e instalación fail2ban como se muestra.

# Yum Update # Yum Install Epel-Lelease # Yum Install Fail2Ban 

Instalar fail2ban en Debian/Ubuntu

Primero, actualice sus paquetes e instale fail2ban como se muestra.

# Apt-Get Update && apt-get actualización -y # apt-get install fail2ban 

Opcionalmente, si desea habilitar el soporte de correo (para notificaciones de correo), puede instalar SendMail.

# yum install sendmail [en CentOS/RHEL] # apt-get install sendmail-bin sendmail [on Debian/Ubuntu] 

Para permitir fail2ban y enviar correo Use los siguientes comandos:

# SystemCTL Start Fail2Ban # SystemCTL Habilitar Fail2Ban # SystemCTL Inicio Sendmail # SystemCTL Habilitar Sendmail 

Cómo configurar Fail2Ban en los sistemas Linux

Por defecto, fail2ban usa el .confusión archivos ubicados en /etc/fail2ban/ que se leen primero. Sin embargo, pueden ser anulados por .local archivos ubicados en el mismo directorio.

Por lo tanto, la .local El archivo no necesita incluir todas las configuraciones de la .confusión Archivo, pero solo los que desea anular. Se deben realizar cambios en el .local archivos, no en el .confusión. Esto evitará los cambios de sobrescribe al actualizar el paquete Fail2ban.

Para el propósito de este tutorial, copiaremos el existente fail2ban.confusión archivo fail2ban.local.

# cp/etc/fail2ban/fail2ban.conf/etc/fail2ban/fail2ban.local 

Ahora puedes hacer los cambios en el .local Archivo utilizando su editor de texto favorito. Los valores que puede editar son:

  • nivel de registro - Este es el nivel de detalle que se registrará. Las posibles opciones son:
    • CRÍTICO
    • ERROR
    • ADVERTENCIA
    • AVISO
    • Información
    • DEPURAR
  • logTarget - Registre las acciones en un archivo específico. El valor predeterminado es /var/log/fail2ban.registro. Sin embargo, puede cambiar esto a:
    • Stdout: emite cualquier dato
    • Stderr - emitir cualquier error
    • Syslog - Registro basado en mensajes
    • Archivo: salida a un archivo
  • enchufe - directorio en el que se colocará el archivo de socket.
  • pidfile - Ubicación del archivo pid.

Configurar la cárcel de Fail2Ban.local

Uno de los archivos más importantes en fail2ban es celda.confusión que define tus cárceles. Aquí es donde define los servicios para los cuales Fail2ban debe estar habilitado.

Como mencionamos anteriormente .confusión Los archivos se pueden alterar durante las actualizaciones, por lo que debe crear un celda.local Archivo donde puede aplicar sus modificaciones.

Otra forma de hacer esto es simplemente copiar el .confusión Archivo con:

# cp/etc/fail2ban/cárcel.conf/etc/fail2ban/cárcel.local 

En caso de que esté usando Cento o Fedora, necesitará cambiar el backend en celda.local de "auto" a "Systemd".

Habilitar el backend en fail2ban

Si estas usando Ubuntu/Debian, No hay necesidad de hacer esta modificación, a pesar de que ellos también usan system.

El archivo de la cárcel habilitará SSH de forma predeterminada para Debian y Ubuntu, Pero no en Cento. Si desea habilitarlo, simplemente cambie la siguiente línea en /etc/fail2ban/cárcel.local:

[sshd] habilitado = verdadero 
Tiempos de prohibición y reintento

Puede configurar la circunstancia después de la cual se bloquea una dirección IP. Para ese propósito, fail2ban usos bantime, FindTime y maxretería.

  • bantime - Este es el número de segundos que una dirección IP permanecerá prohibida (predeterminada 10 min).
  • FindTime - la cantidad de tiempo entre los intentos de inicio de sesión, antes de que el host esté prohibido. (por defecto 10 min). En otras palabras, si Fail2Ban está configurado para bloquear una dirección IP después de 3 intentos de inicio de sesión fallidos, esos 3 intentos, deben realizarse dentro del período de FindTime (10 mins).
  • maxretería - Número de intentos de hacer antes de aplicar una prohibición. (por defecto 3).
Dirección IP de la lista blanca

Por supuesto, querrás que la lista blanca sean ciertas direcciones IP. Para configurar tales direcciones IP abiertas /etc/fail2ban/cárcel.local Con su editor de texto favorito y descomenque la siguiente línea:

ignorar = 127.0.0.1/8 :: 1 

Luego, puede poner las direcciones IP que desea ignorar. Las direcciones IP deben separarse del espacio o la coma.

Alertas de correo electrónico

Si desea recibir alertas de correo en el evento, deberá configurar la siguiente configuración en /etc/fail2ban/cárcel.local:

  • desestimado - Dirección de correo, donde recibirá la notificación.
  • Nombre del remitente - el remitente que verá al recibir el mensaje.
  • remitente - Dirección de correo electrónico desde la cual Fail2Ban enviará los correos electrónicos.

El valor por defecto MTA (agente de transferencia de correo) se establece en enviar correo.

Para recibir notificaciones de correo, también deberá cambiar el "acción" configuración de:

Action = %(Action_) S 

A uno de estos:

Action = %(Action_MW) S Action = %(Action_MWL) S 
  • %(Action_MW) S - prohibirá el anfitrión y enviará un correo con un informe de Whois.
  • %(action_mwl) s - prohibirá el host, proporcionará información de Whois y toda la información relevante del archivo de registro.

Configuración adicional de fail2ban en la cárcel

Hasta ahora hemos analizado las opciones de configuración básicas. Si desea configurar una cárcel, deberá habilitarlo en el celda.local archivo. La sintaxis es bastante simple:

[jail_to_enable] ... habilitado = true 

Donde debes reemplazar cárcel_to_enable con la cárcel real, por ejemplo, "SSHD". En el celda.local Archivo, los siguientes valores serán predefinidos para el servicio SSH:

[sshd] puerto = ssh logPath = %(sshd_log) s 

Puede habilitar el filtro que ayudará a identificar si una línea en el registro es fallida. El valor del filtro es en realidad una referencia a un archivo con el nombre del servicio seguido de .confusión. Por ejemplo: /etc/fail2ban/filtro.d/sshd.confusión.

La sintaxis es:

filtro = servicio 

Por ejemplo:

Filtro = SSHD 

Puede revisar los filtros existentes en el siguiente directorio: /etc/fail2ban/filtro.d/.

Usar fail2ban-client

Fail2ban viene con un cliente que se puede utilizar para revisar y cambiar la configuración actual. Como proporciona muchas opciones, puede pasar por su manual con:

# hombre fail2ban-client 

Aquí verá algunos de los comandos básicos que puede usar. Para revisar el estado actual de fail2ban o para la cárcel específica, puede usar:

# estatus fail2ban-client 

El resultado se verá similar a esto:

Verifique el estado de Fail2Ban

Para la cárcel individual, puede ejecutar:

# Fail2Ban-Client Status SSHD 

En la captura de pantalla a continuación, verá que he fallado a propósito múltiples inicios de sesión para que Fail2ban pueda bloquear la dirección IP desde la que intentaba conectarme:

Verifique el estado de Fail2Ban SSH
Conclusión

Fail2ban es un excelente sistema de prevención de intrusiones bien documentado, que proporciona seguridad adicional a su sistema Linux. Requiere algo de tiempo para acostumbrarse a su configuración y sintaxis, pero una vez que se familiarice con ella, se sentirá libre de cambiar y extender sus reglas.