sudo nvim setup_abuseipdb.sh
#!/bin/bash
# --- CONFIGURACIÓN ---
# Reemplaza con tu API Key real entre las comillas
API_KEY="TU_API_KEY_AQUI"
# Verificar si se ejecuta como root
if [ "$EUID" -ne 0 ]; then
echo "Por favor, ejecuta el script con sudo."
exit
fi
echo "--- Iniciando configuración de Fail2Ban + AbuseIPDB ---"
# 1. Instalar Fail2Ban y UFW si no están
apt update && apt install fail2ban ufw -y
# 2. Configurar la acción de AbuseIPDB
echo "Configurando la API Key en la acción de AbuseIPDB..."
cat <<EOF > /etc/fail2ban/action.d/abuseipdb.conf
[Definition]
abuseipdb_apikey = $API_KEY
# Categorías: 14 (PortScan), 18 (Brute-Force), 22 (SSH)
abuseipdb_category = 14,18,22
actionban = curl --fail --user-agent "Fail2Ban" \
--data-urlencode "key=<abuseipdb_apikey>" \
--data-urlencode "remoteAddress=<ip>" \
--data-urlencode "categories=<abuseipdb_category>" \
--data-urlencode "comment=Ataque detectado por Fail2Ban: <failures> intentos fallidos." \
https://api.abuseipdb.com/api/v2/report
EOF
# 3. Crear filtro para escaneo de puertos (Portscan)
echo "Creando filtro para detectar escaneo de puertos en UFW..."
cat <<EOF > /etc/fail2ban/filter.d/portscan-fw.conf
[Definition]
failregex = \[UFW BLOCK\] IN=.* SRC=<HOST>
ignoreregex =
EOF
# 4. Configurar el archivo jail.local
echo "Configurando Jails (SSH y PortScan)..."
cat <<EOF > /etc/fail2ban/jail.local
[DEFAULT]
# Tu IP local o de confianza aquí para no bloquearte a ti mismo
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 5
bantime = 24h
action = %(action_mw)s
abuseipdb
[portscan]
enabled = true
filter = portscan-fw
logpath = /var/log/ufw.log
maxretry = 3
findtime = 1h
bantime = 48h
action = %(action_mw)s
abuseipdb
EOF
# 5. Asegurar que los logs de UFW estén activos
ufw logging medium
# 6. Reiniciar Fail2Ban
systemctl restart fail2ban
echo "--- Configuración completada con éxito ---"
echo "Puedes ver los reportes en tiempo real con: tail -f /var/log/fail2ban.log"