Jump to content
From ArchWiki
Esta traducción de Fail2ban fue revisada el 2020-08-07. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Artículos relacionados

- sshguard (Español)
- Security (Español)

Fail2ban escanea los archivos de registro (por ejemplo, `/var/log/httpd/error_log`) y prohíbe las IP que muestran signos maliciosos así como la que muestren muchos errores de contraseña, búsqueda de vulnerabilidades, etc. Normalmente, Fail2ban se utiliza para actualizar las reglas del cortafuegos a fin de rechazar las direcciones IP durante un período de tiempo específico, aunque también permite configurar cualquier otra acción (por ejemplo, enviar un correo electrónico).

Advertencia: El uso de un software de prohibición de IP detendrá los ataques triviales, pero debe apoyarse en un demonio adicional y un registro exitoso. Además, si el atacante conoce su dirección IP, puede enviar paquetes de red con un encabezado de origen falso y obtener su dirección IP prohibida. Asegúrese de especificar su IP en `ignoreip`.

## Instalación

Instale fail2ban.

## Utilización

Configure Fail2ban y active/inicie `fail2ban.service`.

### fail2ban-client

fail2ban-client permite monitorear un «conjunto de reglas encapsuladas» (en adelante, cápsulas) (recarga, reinicio, estado, etc.). Para ver todas las órdenes disponibles:

    $ fail2ban-client

Para ver todas las cápsulas activadas:

    # fail2ban-client status

Para verificar el estado de una cápsula, por ejemplo para sshd:

    # fail2ban-client status sshd

    Status for the jail: sshd
    |- Filter
    |  |- Currently failed: 1
    |  |- Total failed:     9
    |  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
    `- Actions
       |- Currently banned: 1
       |- Total banned:     1
       `- Banned IP list:   0.0.0.0

## Configuración

Debido a la posibilidad de que el archivo `/etc/fail2ban/jail.conf` se sobrescriba o actualice durante una puesta al día de la distribución, se recomienda crear un archivo local `/etc/fail2ban/jail.local`. Por ejemplo, para cambiar el tiempo de prohibición predeterminado a 1 día:

    /etc/fail2ban/jail.local

    [DEFAULT]
    bantime = 1d

O cree archivos separados name.local en el directorio `/etc/fail2ban/jail.d`, por ejemplo `/etc/fail2ban/jail.d/sshd.local`.

Reinicie `fail2ban.service` para aplicar los cambios de configuración.

### Activar cápsulas

Por defecto, todas las cápsulas están desactivadas. Añada `enabled = true` a la cápsula que desea usar, por ejemplo, para activar la cápsula OpenSSH:

    /etc/fail2ban/jail.local

    [sshd]
    enabled = true

Vea #Cápsula SSH personalizada.

### Recibir un correo electrónico de alerta

Si desea recibir un correo electrónico cuando alguien ha sido baneado, debe configurar un cliente SMTP (por ejemplo, msmtp) y cambiar la acción predeterminada, como se indica a continuación.

    /etc/fail2ban/jail.local

    [DEFAULT]
    destemail = yourname@example.com
    sender = yourname@example.com

    # para prohibir y enviar un correo electrónico con un informe sobre «whois» al correo electrónico.
    action = %(action_mw)s

    # hace lo mismo que «action_mw» pero también envía líneas de registro relevantes.
    #action = %(action_mwl)s

### Firewall y servicios

Por defecto, Fail2ban utiliza Iptables. Sin embargo, la configuración de la mayoría de cortafuegos y servicios es sencilla. Por ejemplo, para usar Nftables:

    /etc/fail2ban/jail.local

    [DEFAULT]
    banaction = nftables

Consulte `/etc/fail2ban/action.d/` para ver otros ejemplos, por ejemplo ufw.conf.

## Consejos y trucos

### Cápsula SSH personalizada

Advertencia: Si el atacante conoce su dirección IP, puede enviar paquetes de red con un encabezado de origen falso y obtener su dirección IP bloqueada del servidor. SSH keys proporciona una solución elegante al problema de la fuerza bruta sin estos inconvenientes.

Edite `/etc/fail2ban/jail.d/sshd.local`, agregue esta sección y actualice la lista de direcciones IP confiables en `ignoreip`:

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

    [sshd]
    enabled   = true
    filter    = sshd
    banaction = iptables
    backend   = systemd
    maxretry  = 5
    findtime  = 1d
    bantime   = 2w
    ignoreip  = 127.0.0.1/8

Nota:

- Podría ser necesario configurar `LogLevel VERBOSE` en `/etc/ssh/sshd_config` para permitir la monitorización completa por fail2ban, de lo contrario, los fallos de contraseña podrían no registrarse correctamente.
- Fail2ban tiene soporte para IPv6 desde la versión 0.10. Adapte su cortafuegos en consecuencia, por ejemplo inicie/active `ip6tables.service`.

Sugerencia:

- Si utiliza un front-end para iptables como ufw, se puede usar `banaction = ufw` en lugar de iptables.
- Si opta por Shorewall, se puede usar `banaction = shorewall` y también establecer `BLACKLIST` en `ALL` en `/etc/shorewall/shorewall.conf`, de lo contrario, la regla agregada para prohibir una dirección IP afectará solo a las conexiones nuevas.

### Fortalecer el servicio

Actualmente, Fail2ban debe ejecutarse como root. Por lo tanto, es posible que desee considerar fortalecer el proceso con systemd (Español).

Cree un archivo de configuración drop-in para `fail2ban.service`:

    /etc/systemd/system/fail2ban.service.d/override.conf

    [Service]
    PrivateDevices=yes
    PrivateTmp=yes
    ProtectHome=read-only
    ProtectSystem=strict
    NoNewPrivileges=yes
    ReadWritePaths=-/var/run/fail2ban
    ReadWritePaths=-/var/lib/fail2ban
    ReadWritePaths=-/var/log/fail2ban
    ReadWritePaths=-/var/spool/postfix/maildrop
    ReadWritePaths=-/run/xtables.lock
    CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW

El parámetro `CAP_DAC_READ_SEARCH` de `CapabilityBoundingSet` permitirá a Fail2ban el acceso de lectura completa a cada directorio y archivo. Los parámetros `CAP_NET_ADMIN` y `CAP_NET_RAW` permitirán que Fail2ban funcione en cualquier cortafuegos que tenga una interfaz en línea de órdenes. Consulte capabilities(7) para obtener más información.

Al usar `ProtectSystem=strict` la jerarquía del sistema de archivos será de «solo lectura», `ReadWritePaths` permitirá que Fail2ban tenga acceso de escritura en las rutas que considere necesarias.

Cree `/etc/fail2ban/fail2ban.local` con la ruta correcta `logtarget`:

    /etc/fail2ban/fail2ban.local

    [Definition]
    logtarget = /var/log/fail2ban/fail2ban.log

Cree el directorio `/var/log/fail2ban/` como root.

Finalmente, recargue el demonio de systemd para aplicar los cambios de la unidad y reinicie `fail2ban.service`.

## Véase también

- Using a Fail2Ban Jail to Whitelist a User
- Optimising your Fail2Ban filters
- Fail2Ban and sendmail
- Fail2Ban and iptables
- Fail2Ban 0.8.3 Howto
- Monitoring the fail2ban log
- Supervisión del registro de fail2ban

Categories:

- Firewalls (Español)
- Secure Shell (Español)