Recibir alertas de Crowdsec en Telegram
Este apunte documenta cómo enviar notificaciones automáticas por Telegram cuando CrowdSec bloquea una IP, usando el plugin http de notificaciones.
Es altamente recomendable tener previamente configurada la integración de logs de Caddy con CrowdSec:
Lectura de logs de Caddy con CrowdSec
Requisitos previos
- Tener CrowdSec instalado y funcionando correctamente.
- Haber registrado la instancia en la consola de CrowdSec (opcional, pero recomendable).
- Tener ya bloqueos activos o simulables para hacer pruebas.
- Se asume que tenemos un bot de Telegram ya creado y listo.
Activar permisos para el plugin HTTP
Edita el archivo /etc/crowdsec/config.yaml de CrowdSec. Aquí es donde CrowdSec define los usuarios y permisos bajo los que se ejecutan los distintos plugins, incluyendo el de notificaciones. Si los permisos son demasiado restrictivos (como es el caso por defecto), algunos plugins no podrán escribir en disco ni acceder a los sockets necesarios para operar correctamente. Este es un fallo habitual que puede bloquear la funcionalidad de alertas, especialmente en entornos donde se espera que el plugin HTTP se comunique con servicios externos como Telegram.
plugin_config:
user: root
group: root
Por defecto viene como nobody, pero eso genera errores de permisos al validar la config del plugin HTTP.
Configurar el plugin HTTP para Telegram
Edita o crea el archivo /etc/crowdsec/notifications/http.yaml. Si quieres usar una plantilla con formato limpio para Telegram, puedes partir de la siguiente:
Este archivo incluye el formato del mensaje y los datos necesarios para enviarlo (token, chat_id, etc.).
Activar la notificación en profiles.yaml
Edita /etc/crowdsec/profiles.yaml y asegúrate de habilitar la notificación en ambos perfiles (default_ip_remediation y default_range_remediation).
Busca y modifica esta sección:
notifications:
- http_default
Asegúrate de que coincida con el nombre definido en el http.yaml. Si has cambiado el nombre por otro, usa ese.
Validar y probar que todo funciona
- Verifica la configuración:
sudo crowdsec -t
- Prueba manualmente la notificación:
sudo cscli notifications test http_default
- Si todo está correcto, deberías recibir el mensaje en tu bot, canal o grupo de Telegram.
Comprobarlo con un ataque real
Puedes simular un ataque desde otro dispositivo (por ejemplo con Termux + VPN y dirb) para generar un baneo real. En cuanto se active el baneo, deberías recibir la alerta en Telegram con un formato como este:
🚨 CrowdSec Alert
🌐 IP: 66.232.126.83
🏳️ País: US
🏢 ISP: AS29802 - HVC-AS
🧠 Motivo: crowdsecurity/http-probing
🕰️ Duración: 4h
📅 Hora: 2025-07-25T20:03:05Z
📍 Host: TuEquipo
🗞 Máquina: TuMaquina
🔗 CrowdSec CTI (https://app.crowdsec.net/cti/66.232.126.83)
Errores comunes o decisiones importantes
- Permisos insuficientes: si dejas
nobody, el plugin HTTP no podrá ejecutarse. - Nombre del perfil mal escrito: el nombre
http_defaultdebe coincidir enhttp.yamlyprofiles.yaml. - Validar siempre con
crowdsec -tantes de probar con ataques reales.
Resumen breve
- Cambiar
nobodyporrootenconfig.yaml. - Configurar
/etc/crowdsec/notifications/http.yamlpara Telegram. - Activar
http_defaulten ambos perfiles deprofiles.yaml. - Validar con
sudo crowdsec -ty testear concscli notifications test. - Probar con un ataque real para verificar que todo llega correctamente.