Jump to content

# Fail2ban (Español)

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)

Fail2ban (Español)
Add topic