Documentación de API - Fail2Ban

Endpoint: https://apis.fonsecantero.com/fail2ban

Autenticación

Para acceder a los recursos de la API, debes incluir el encabezado de autorización Authkey en tus solicitudes.

Obtener Regla por Nombre

Para obtener una regla específica, realiza una solicitud GET con el parámetro regla.

GET /fail2ban/?regla=NOMBRE_DE_LA_REGLA

Requerimientos

fail2ban

sudo apt-get install fail2ban

jq

sudo apt-get install jq

Instalación

Configura tu entorno

Crea el siguiente archivo como root
/etc/fail2ban/fc-update.sh
Con el siguiente contenido
#!/bin/bash

# Configuración
API_URL="https://apis.fonsecantero.com/fail2ban"
TOKEN='TU_TOKEN'
NOMBRE_REGLA="NOMBRE_DE_LA_REGLA"
ARCHIVO_DESTINO="/etc/fail2ban/filter.d/badbots.local"

# Realizar la solicitud a la API
response=$(curl -s -H "Authkey: $TOKEN" "$API_URL/?regla=$NOMBRE_REGLA")

# Verificar si la solicitud fue exitosa
if curl_status=$?; [ $curl_status -eq 0 ]; then
    # Analizar y obtener el contenido de la regla
    contenido=$(echo "$response" | jq -r '.Contenido')

    if [ "$contenido" != "null" ]; then
        # Escribir la regla en el archivo destino
        echo "$contenido" | sudo tee "$ARCHIVO_DESTINO" > /dev/null
        echo "La regla se ha escrito en $ARCHIVO_DESTINO."

        # Reinicia el servicio
        systemctl restart fail2ban
    else
        echo "Error: No se pudo obtener la regla."
    fi
else
    echo "Error: Falló la solicitud a la API."
fi
otorga permisos de ejecución
chmod +x fc-update.sh
Prueba la configuración
./fc-update.sh
Edita o crea tu archivo jail.local
nano /etc/fail2ban/jail.local
Agrega o modifica la regla
[badbots]
enabled = true
filter = badbots
action = iptables-multiport[]
logpath = /var/log/apache2/access.log
maxretry = 1
bantime = 86400

No olvides comprobar que logpath apunte a tu archivo access.log

Crea un cronjob

asegurate de ser super usuario con sudo su
ingresa a tus cronjobs crontab -e
Agrega al final el cron 0 10 * * * /etc/fail2ban/fc-update.sh esto actualizara la confiuración todos los dias a las 10 AM

Reglas disponibles

badbots

badbots busca y bloquea al primer intento robots conocidos

fc-wordpress

experimental: fc-wordpress protege todos los sitios wordpress en un servidor de intentos de acceso, vulnerabilidades y abuso de recursos

Consejos

Activa mas carceles

Te recomendamos actualizar mas carceles para proteger otros servicios como mail, ssh, etc
para mas información no olvides consultar su repositorio https://github.com/fail2ban/fail2ban

[sshd]
enabled = true
filter = sshd
maxretry = 3
bantime = 86400
findtime = 3600
action = iptables-multiport[]

[postfix]
enabled = true
maxretry = 3
bantime = 86400

[apache-auth]
enabled = true
filter = apache-auth
maxretry = 3
bantime = 86400

[dovecot]
enabled = true
maxretry = 3
bantime = 3600

[apache-badbots]
enabled = true
filter = apache-badbots
maxretry = 3
bantime = 86400

[apache-common]
enabled = true
filter = apache-common
maxretry = 3
bantime = 86400

[badbots]
enabled = true
filter = badbots
action = iptables-multiport[]
logpath = /var/log/apache2/access.log
maxretry = 1
bantime = 86400