GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Instale, configure y use Fail2ban en el servidor Ubuntu 20.04 LTS

Tutorial para instalar y configurar el servidor, el cliente y los servicios de Fail2ban en el servidor Ubuntu 20.04 o 18.04 LTS Linux.

Los bloggers y desarrolladores que ejecutan y administran sus propios servidores, por supuesto, también son responsables de su seguridad. Si en el mundo de hoy no prestamos atención a la seguridad, existe la posibilidad de que nuestro servidor se convierta en el objetivo de los atacantes y cause daños. Bueno, aunque hay varios WAF en línea, sin embargo, para fortalecer el servidor, hay disponible un programa de código abierto llamado Fail2Ban. Garantiza que la dirección IP de un atacante se bloquee durante un cierto período de tiempo después de varios intentos fallidos y, por lo tanto, evita un número ilimitado de intentos que luego podrían conducir a la búsqueda de la contraseña.

Fail2Ban puede monitorear varios servicios. Esto por supuesto incluye acceso SSH, FTP, correo, etc.  Aquí aprendemos los pasos para instalar Fail2ban en Ubuntu 20.04 o 18.04 LTS y su proceso de configuración.

Instalación de Fail2ban en Ubuntu 20.04 o 18.04 LTS

Los paquetes para instalar y configurar Fail2ban están disponibles en el repositorio oficial de Ubuntu 20.04/18.04, por lo que solo necesitamos usar el apt comando para su instalación.

Primero, ejecute el comando de actualización para reconstruir el caché del repositorio-

sudo apt update

Y luego el comando principal para obtener esta herramienta de seguridad-

sudo apt install fail2ban

Con la ejecución del comando anterior, los siguientes programas estarán disponibles después de la instalación:

  • fail2ban-server:el servidor
  • fail2ban-client – ​​Programa cliente para configuración y evaluación del servidor
  • fail2ban-regex- Programa para probar expresiones regulares

Habilitar y comprobar el estado de sus servicios-

sudo systemctl enable fail2ban
sudo systemctl status fail2ban

Configuración de Fail2ban en Ubuntu

fail2ban lee tipos de archivos de configuración con las extensiones .conf y .local . Archivos con la extensión .conf se crean durante la instalación y se sobrescribirán durante la actualización del paquete, por lo que todos los cambios deben realizarse en el .local correspondiente archivos Por lo tanto, solo agregue o cambie los valores en este archivo que sean diferentes de la configuración predeterminada o global.

Fail2ban tiene tres tipos de archivos de configuración:

/etc/fail2ban/action.d/*.conf/*
/etc/fail2ban/filter.d/*.conf/*
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf

Acciones.d

Los archivos en el directorio /etc/fail2ban/action.d/ contienen los comandos para (desbloquear) direcciones IP. Los archivos de acción contienen dos secciones: [Definition][Init] . Las entradas en [Init] La sección se utiliza para sobrescribir las reglas definidas en la cárcel. Los ejemplos de la siguiente tabla están tomados de iptables-multiport-conf acción. Todos los comandos se ejecutan con los derechos de usuario de fail2ban.

Filtro.d 

Los archivos en el directorio /etc/fail2ban/filter.d/ contiene las expresiones regulares para analizar los archivos de registro y para extraer la dirección IP o si se usan usedns, el nombre de host. Solo hay dos secciones en estos archivos: [Definition][Includes] . Este último se puede usar para leer otros archivos de configuración.

Los ejemplos de la siguiente tabla están tomados de iptables-multiport-conf acción. Todos los comandos se ejecutan con los derechos de usuario de fail2ban.

Resumen de las opciones
entrada descripción ejemplo
[Definition]
actionstart Comandos que se ejecutan cuando se inicia fail2ban. actionstart = iptables -N fail2ban-<name>
iptables -A fail2ban-<name> -j RETURN
iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
actionstop Comandos que se ejecutan al salir de fail2ban. actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
iptables -F fail2ban-<name>[[BR]]iptables -X fail2ban-<name>
actioncheck Comandos que se ejecutan antes de cada actionban. Se utilizan para comprobar la funcionalidad del entorno actual. actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]'
actionban Comandos que se ejecutan cuando se prohíbe una IP. La condición siempre es maxretry debe superarse y encontrar el tiempo caído por debajo de. actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype>
actionunban Comandos que se utilizarán para desbanear. actionunban = iptables -D fail2ban-<name> -s <ip> -j <blocktype>
[Init]
name El nombre predeterminado de la cadena name = default
port puerto port = ssh
protocol Es utilizado internamente por el lector de configuración. Valores posibles: tcpudpicmpall . protocol = tcp
chain La cadena de iptables a la que se deben agregar las reglas de fail2ban. El estándar es INPUT . cadena =ENTRADA
Etiquetas de acción Las etiquetas de acción son marcadores de posición que se pueden usar en actionbanactionunbanactioncheck .
ip La dirección IPv4 que se prohibirá.
failures El número de intentos fallidos contados.
time La marca de tiempo de Unix (segundos) de la prohibición.
matches Las entradas encadenadas de las líneas del archivo de registro que conducen a la prohibición. Muchos caracteres de shell se escapan.

Cárcel.conf

Mientras que jail.conf archivo combina Acciones e hizo Filtro en una cárcel. El usuario debe guardar este archivo con la extensión .loca l para comenzar a agregar sus propias reglas o personalizarlas.

El jail.conf y la siguiente tabla proporciona una descripción general de los posibles valores predeterminados.


Resumen de las opciones
entrada descripción ejemplo
[Definition]
failregex Con la ayuda de esta expresión regular, se buscan aciertos en los archivos de registro. La etiqueta es HOST disponible aquí,
que se utiliza como parte de la expresión regular y contiene el nombre de host o la dirección IP.
fail2ban determina automáticamente la distinción entre la dirección IP y el nombre de host.
failregex =^%(__prefix_line)sFAIL:\S+ dirección de=$
^%(__prefix_line)sFAIL:\S+ libwrap from=$
ignoreregex Aquí se pueden definir excepciones, incluso si fueran válidas para
el error regular anterior. ignoreregex admite interpolación de cadenas
para que pueda usar sus propias variables con %(variablenname)s .
ignoreregex =
[INCLUDES]
before Usar para hacer que un archivo se lea antes que el establecido.
Un ejemplo es common.conf
antes =común.conf
after El archivo se lee después del establecido después =ejemplo_después.local
ejemplo Después de integrar common.conf es _daemon disponible.
Consulte /etc/fail2ban/filter.d/common.conf para más detalles.
_daemon =xinetd


Cree su propio archivo de configuración Jail


Por lo tanto, ahora copiemos el jail.conf archivo para crear un jail.local para agregar cualquier configuración personalizada que permanecerá allí incluso después de actualizar fail2ban.

sudo cp /etc/fail2ban/jail.{conf,local}

Para configurar varios ajustes, edite los archivos jail locales creados

sudo nano /etc/fail2ban/jail.local

Algunos ejemplos-

Incluya en la lista blanca algunas direcciones IP, rangos de IP o hosts

Ahora, cuando se abre el archivo, supongamos que desea incluir en la lista blanca algunas direcciones IP, rangos de IP o hosts para que no sean bloqueados por el servicio File2ban. Para esa voluntad, definimos la misma en el recién creado Jail.local archivo.
Ver :Cómo comprobar la dirección IP en el terminal de comandos de Linux

En el archivo busca el #igonreip línea y elimine el # de eso. Después de eso, agregue la dirección IP o el rango que desea incluir en la lista blanca.

Bantime, findtime y maxretry

De manera similar, también podemos aumentar o disminuir el tiempo de la dirección IP prohibida cambiando los valores de la opción de tiempo de baneo dados en el archivo.

[Default]

bantime = 10m

Para reducir o aumentar el período de tiempo, simplemente cambie los 10 minutos predeterminados a lo que desee. Mientras que para bloquear la dirección IP permanentemente use algún valor negativo.

reintento máximo

¿Cuántos intentos máximos debe haber realizado una dirección IP para ser bloqueada? Por defecto es cinco y se declara usando maxretry opción en jail.local expediente. Si desea reducirlo, digamos que solo después de dos intentos maliciosos, la IP debe bloquearse y luego cambiar el número de 5 a 2. De la misma manera, también puede aumentar el número máximo de intentos.

maxretry = 5

encontrar tiempo

Es el tiempo entre el reintento máximo que debe ocurrir para cualquier inicio de sesión malicioso o en el sistema antes de que Fail2Ban bloquee la dirección IP en particular. Por ejemplo , alguien está intentando iniciar sesión, si hizo 5 intentos en 10 minutos estipulados, entonces su IP se bloquea. Sin embargo, puede cambiar el findtime valor para aumentar o disminuir este período de tiempo.

findtime = 10m

Fail2ban puede enviar alertas por correo electrónico

Sí, si se prohíbe alguna IP, puede recibir la notificación por correo para la misma. Sin embargo, debe habilitar y definir qué dirección de correo electrónico desea utilizar para recibir la notificación.

Instalar Sendmail- Un agente de transferencia de correo (MTA) de código abierto

sudo apt install sendmail

Ahora, hay dos configuraciones clave que debemos realizar en el jail.local archivo para recibir notificaciones por correo electrónico.

  1. destemail – dirección de correo que se usará para recibir una notificación.
  2. remitente – dirección de correo electrónico desde la cual fail2ban enviará los correos electrónicos.

Entonces, en el archivo, busque las dos configuraciones anteriores y agregue su dirección de correo electrónico-

Luego, busque la línea de abajo

action = %(action_)s

Y cámbialo con cualquiera de los siguientes-

action = %(action_)s – Este enviará una notificación por correo electrónico cuando se prohíba alguna dirección IP.

o

action = %(action_mwl)s – En caso de que desee la notificación por correo electrónico para la IP del host prohibido, incluida la información de registros, use esta opción de acción.
Además, puede consultar nuestra lista de las mejores aplicaciones de cliente de correo electrónico para Ubuntu o Debian Linux.

Habilitar servicios en el archivo Jail de Fail2ban

Como mencioné anteriormente, la creación de jail.local comprende ambas acciones y Filtros que se puede usar para deshabilitar/habilitar los servicios permitidos predeterminados o crear los suyos propios.

Por ejemplo – De forma predeterminada, SSH está habilitado en Jail.local de Fail2ban.

En realidad, en el archivo Jail de Fail2ban, verá que hay muchos servicios que lo acompañan. Sin embargo, debe habilitarlos para su uso. O bien puedes crear el tuyo propio.

En /etc/fail2ban/filters.d carpeta se puede ver toda la configuración filtro archivos para cada servicio de Fai2ban Jail disponible allí.

Antes de mostrar cómo activarlos, veamos cuáles son los servicios de cárceles habilitados-

sudo fail2ban-client status

La salida será así-

Status
|- Number of jail: 1
`- Jail list: sshd

Ahora, si queremos activar algún servicio Jail, debemos agregar enabled = true en el jail.conf archivo después del título del servicio de la cárcel. El siguiente ejemplo muestra cómo habilitar apache-auth cárcel:

Ejemplo:Vamos a activar el servicio de autenticación Apache Fail2ban

Editar jail.local y encuentre Apache-Auth  predefinido Servicio Penitenciario

Guardar el archivo usando Ctrl+X , S, y pulsando Intro Clave.

Reiniciar servidor Fail2ban

sudo systemctl restart fail2ban

Ahora , utilice de nuevo el cliente Fail2ban para verificar cuántos servicios de Jail están habilitados-

sudo fail2ban-client status

Esta vez la salida será-

Status
|- Number of jail: 2
`- Jail list: apache-auth, sshd

Para saber más información sobre el servicio use su nombre con el comando anterior-

sudo fail2ban-client status apache-auth

Salida:

Status for the jail: apache-auth
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/apache2/error.log
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:

Error:

Si recibe los siguientes errores, significa que el servicio particular que desea habilitar aún no está instalado en su sistema o servidor. Por ejemplo, Si he habilitado Apache Jail pero Apache no está disponible en mi servidor, aparecerá este tipo de error.

fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION

[6613]: ERROR Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?

Uso del cliente Fail2ban

Incluso podemos usar la herramienta de comando de cliente de Fail2ban para manejar sus diversos servicios. Para ver todos los comandos relacionados, puede usar el indicador de Ayuda.

fail2ban-client -h

, por ejemplo, para prohibir o desbanear alguna IP para algún servicio, use la siguiente sintaxis

Para prohibir

fail2ban-client set <JAIL-service> banip <IP>

Para desbanear

fail2ban-client set <JAIL-service> unbanip <IP>

Ejemplo-

sudo fail2ban-client set sshd banip 192.168.0.6

Nota final-

Entonces, esta fue una descripción general rápida de la instalación y configuración de Fail2ban en Ubuntu 20.04 o 18.04 LTS . Aunque la documentación de la herramienta Fail2ban no es muy amplia, si alguien quiere mirar, consulte su sitio web oficial. Aquí están los enlaces:página del proyecto, documentación, página de GitHub para el código fuente


Ubuntu
  1. Instalar y configurar el servidor VSFTPD en Ubuntu 18.04 LTS

  2. Cómo instalar el servidor de Minecraft en Ubuntu 18.04 LTS

  3. Cómo instalar y usar Telnet en Ubuntu 20.04 LTS

  4. Instale y configure CSF (Config Server Firewall) en Ubuntu 20.04 LTS

  5. Cómo instalar y configurar Fail2ban en Ubuntu 20.04 LTS

Cómo instalar y configurar el servidor VNC en Ubuntu 20.04 LTS

Cómo instalar Jellyfin Media Server en Ubuntu 20.04 LTS Server/Desktop

Cómo instalar Plex Media Server en Ubuntu 20.04 LTS Server/Desktop

Cómo instalar y configurar el servidor web Lighttpd en Ubuntu 20.04 LTS

Cómo instalar y configurar el servidor DNS en Ubuntu 16.04 LTS

Cómo instalar Fail2ban en Ubuntu 20.04 LTS

    Resumen de las opciones
    entrada descripción ejemplo
    [DEFAULT]
    ignoreip Lista separada por espacios de direcciones IP o redes que se ignorarán. ignoreip = 127.0.0.1/8 192.168.1.33
    bantime Tiempo de prohibición en segundos. Un valor negativo es una prohibición permanente. bantime = 86400
    findtime El número de segundos después de los cuales el contador de maxretry es restablecer. findtime = 660
    maxretry El número máximo de intentos fallidos antes de que fail2ban prohíba la IP. maxretry = 2
    backend El backend, como systemd , se puede configurar aquí. El valor predeterminado es auto (recomendado). backend = systemd
    usedns Configuración para el comportamiento de búsqueda inversa de fail2ban. Los valores posibles son yesnowarn .
    Esto último significa que las entradas con nombres de host dan una advertencia en el archivo de registro, lo que puede generar una gran cantidad de entradas.
    usedns = warn
    [myJail] El nombre de la cárcel se puede asignar aquí. [ssh]
    enabled (De-) activa la cárcel enabled = true
    port Definición de puerto, puede ser numérica. Los valores múltiples están separados por comas. port = ssh
    filter = sshd Nombre del archivo de filtro /etc/fail2ban/filter.d/sshd.conf
    logpath El archivo de registro a monitorear, que se verifica para el filtro. logpath = /var/log/auth.log
    maxretry, bantime,... También se pueden definir diferentes valores para las opciones predeterminadas. maxretry = 3