Hoy vamos a aprender cómo podemos instalar y desplegar CrowdSec es una herramienta de monitorización de red en tiempo real, que nos permitirá detectar las ips maliciosas que realicen ataques y protegernos.
Lo primero que tenemos que hacer es registrarnos en su web de forma gratuita.
Una vez registrados, vamos a crear un Docker compose con toda la configuración necesaria:
Nos basaremos en la información oficial.
services: crowdsec: image: docker.io/crowdsecurity/crowdsec:latest container_name: crowdsec environment: - COLLECTIONS=crowdsecurity/nginx-proxy-manager volumes: - ./config/crowdsec/config:/var/lib/crowdsec/data/ - ./config/crowdsec/db:/etc/crowdsec/ - ./crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml - ../nginx_proxy_manager/config/proxymanager/data/logs/:/var/log/npm:ro networks: - docker-network restart: unless-stopped security_opt: - no-new-privileges=true networks: docker-network: driver: bridge external: true
Ahora modificaremos un poco nuestro contenedor de nginx proxy manager:
Añadiremos lo siguiente:
environment: CROWDSEC_OPENRESTY_BOUNCER: | ENABLED=true API_URL=http://crowdsec:8080 API_KEY=${CROWDSEC_BOUNCER_APIKEY} security_opt: - no-new-privileges=true
Para el API KEY, crearemos un .env que rellenaremos con la información que vamos a generar en los siguientes pasos.
Además modificaremos la imagen por este fork. Ya que será el que nos permita bloquear las IPs. El resto de configuración de nuestro nginx proxy manager, la mantiene por lo que no se nos borrará nada. Aun así puedes copiarte las carpetas en un backup.
image: 'lepresidente/nginxproxymanager:latest' #image: 'jc21/nginx-proxy-manager:latest'
Ahora creamos la clave bouncer para permitir la comunicación. Para ello ejecutamos:
docker compose up crowdsec -d docker compose exec crowdsec cscli bouncer add npm-proxy
Copiamos la clave que devuelve y la añadimos en nuestro del nginx proxy manager .env
CROWDSEC_BOUNCER_APIKEY=
Y cerramos el contenedor
docker compose down
Ahora lo levantamos
docker compose up -d
También reiniciamos nuestro nginx proxy manager.
Y tambien podemos asignarlo a nuestra cuenta de esta forma:
docker exec crowdsec cscli console enroll XXXXX
Ahora activaremos los collections
docker exec crowdsec cscli collections install crowdsecurity/nginx-proxy-manager
Tendremos que reiniciar nuestro docker.
docker compose down docker compose up -d
Testear: OJO, si bloqueamos manualmente la IP, corremos el riesgo de que el sistema autobloquee y propague ese bloqueo a otros sistemas. Si nos ocurriera esto, tendríamos que obtener una nueva IP reiniciando el router.
Para probar si funciona podemos bloquearnos a nosotros mismos (aquí podemos buscar nuestra IP)
docker exec -it crowdsec cscli decisions add -i xxx.xxx.xxx.xxx
o podemos añadir el tiempo de bloqueo
docker exec -it crowdsec cscli decisions add -ip xxx.xxx.xxx.xxx --duration 4h
Y si todo funciona bien, aparecerá este mensaje:
Para desbloquearnos tendremos que poner:
docker exec -it crowdsec cscli decisions remove -i xxx.xxx.xxx.xxx
En la web nos aparecerá toda la información:
Con gráficas de ataques y mitigaciones:
Algunos comandos interesantes:
- Mostrar las métricas:
docker exec -it crowdsec cscli metrics
- Obtener ultimas colecciones de escenarios de crowdsec
docker exec -it crowdsec cscli hub update
- Actualizar la version crouwdsec
docker exec -it crowdsec cscli -v
- Ver las alertas generadas
docker exec -it crowdsec cscli alerts list
- Ver los bouncers instalados (sistema de mitigación)
docker exec -it crowdsec cscli bouncers list
- Eliminar un bouncer
docker exec -it crowdsec cscli bouncers delete <BOUNCER_NAME>
- Instalar coleccion de Nginx
docker exec -it crowdsec cscli collections install crowdsecurity/nginx
- Instalar coleccion Nginx Proxy Manager
docker exec crowdsec cscli collections install crowdsecurity/nginx-proxy-manager
- Coleccion de escenarios para WordPress
docker exec crowdsec cscli collections install crowdsecurity/appsec-wordpress docker exec crowdsec cscli collections install crowdsecurity/wordpress
- SQL
docker exec crowdsec cscli collections install crowdsecurity/mysql
- Ver lista de escenarios activa
docker exec crowdsec cscli decisions list
Para evitar falsos positivos recomiendo desactivar http-probing:
docker exec crowdsec cscli scenarios remove crowdsecurity/http-probing --force
Y http-crawl-non_statics
docker exec crowdsec cscli scenarios remove crowdsecurity/http-crawl-non_statics --force
Podemos eliminar esta regla si nos saltan falsos positivos LePresidente/http-generic-401-bf
docker exec crowdsec cscli scenarios remove crowdsecurity/http-generic-bf --force
Aquí puedes descargar distintas listas de decisión: https://app.crowdsec.net/hub/collections
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.