Pasando las blocklist de Crowdsec a nuestro firewall Fortigate
¿Os he dicho alguna vez que Crowdsec es una maravilla? 😛 para cualquier tipo de empresa… que nos protegerá de ataques externos o internos! que no es moco de pavo! Los equipos que tengan Crowdsec compartirán una lista negra de IPs, así que cuando un equipo es atacado, el resto se protegerá. Pero es que además, esta blacklist podremos enviarla a nuestro firewall perimetral, para que nos proteja él!
Una pasada…pero por hacer un remembering rapidisimo a los que no hayan leido todavia algún post de Crowdsec… Digamos que es un agente que se instala en equipos Windows o Linux, que entre otras cosas leerá logs de los servicios que publiquen dichas máquinas y sabrá si está siendo atacada, ante ello realizará acciones, por ejemplo añadir una regla en el FW del OS bloqueando dicha dirección IP atacante. El resto de equipos con Crowdsec, al compartir la blacklist se protegerán también bloqueando dicha IP, preveyendo cualquier ataque, sea una IP local o pública.
Así que en este post veremos cómo podemos hacer que nuestro Firewall perimetral, en este caso un Fortigate pueda leer esta blacklist y proteger desde más arriba a toda la organización.
Lo primero, en una máquina con Crowdsec, donde podamos llegar con el firewall perimetral, debemos instalar el ‘Blocklist Mirror’, un servicio que publicará vía web la lista de bloqueos.
sudo apt install golang -y git clone https://github.com/crowdsecurity/cs-blocklist-mirror.git cd cs-blocklist-mirror/ make release cd crowdsec-blocklist-mirror-v*/ sudo ./install.sh
Si tenemos el repositorio de CrowdSec podríamos instalarlo/actualizarlo mediante apt o yum.
Lo primero de todo será configurar Blocklist Mirror, lo hacemos editando ‘/etc/crowdsec/bouncers/crowdsec-blocklist-mirror.yaml’. Debemos indicar la URL del servidor ‘Local API’, normalmente estos roles van en la misma máquina. E indicamos un puerto por donde publicaremos la lista, además de indicar la dirección IP del firewall en las IPs de confianza para que pueda conectarse y leer la lista:
... lapi_url: http://127.0.0.1:8080/ ... listen_uri: 0.0.0.0:41412 ... trusted_ips: # IP ranges, or IPs which don't require auth to access this blocklist - 127.0.0.1 - ::1 - 192.168.2.1 ...
Habilitamos y reiniciamos el servicio para que cargue los nuevos cambios:
sudo systemctl enable crowdsec-blocklist-mirror sudo systemctl restart crowdsec-blocklist-mirror
Y ya podremos probar a abrir la URL: http://DIRECCION_IP:41412/security/blocklist si es que también nos metimos en el whitelist! Verificamos que se accede bien, que baneamos manualmente una dirección IP y se actualiza la lista, o si detecta cualquier ataque en otros equipos de Crowdsec.
En nuestro firewall vamos a “Security Fabric” > “Extenal Connectos” > “Create New”,
Seleccionamos ‘IP Address’,
Le indicamos un nombre e indicamos la URL de la blocklist, y especificamos el tiempo para refrescar la lista, “OK”,
Podemos confirmar que es válido, la última fecha de actualización…
O si pinchamos en ‘View Entries’ confirmar que es correcto,
Y nada, ahora deberíamos crear reglas en nuestro firewall, donde como Origen indiquemos que es la lista de IPs baneadas que acabamos de crear.
Recomendable en cada interfaz hacer reglas de entrada y salida a los destinos de los blocklist, denegando el acceso. Así en caso que sea un ataque público no podrá acceder a recursos internos, o si es un ataque interno, quedará aislado.
Ojo, al hacer esto, recordar que tenemos la posibilidad de quedarnos fuera de juego, esto es, si por la razón que sea nuestro equipo hace un ataque, por ejemplo se intenta validar incorrectamente por SSH o RDP o CIFS o HTTP(s) o lo que sea a algún equipo de manera incorrecta, al 5to intento (por defecto) nos meterá en dicha lista negra. Así que a lo mejor es interesante meter alguna IP en listas blancas de Crowdsec, siendo el fichero ‘/etc/crowdsec/parsers/s02-enrich/whitelists.yaml’ donde lo haremos:
name: crowdsecurity/whitelists description: "Whitelist events from private ipv4 addresses" whitelist: reason: "private ipv4/ipv6 ip/ranges" ip: - "127.0.0.1" - "::1" - "192.168.33.24" # Nuestra máquina de gestión cidr: #- "192.168.0.0/16" #- "10.0.0.0/8" #- "172.16.0.0/12" # expression: # - "'foo.com' in evt.Meta.source_ip.reverse"
Espero que os haya resultado interesante, seguimos otro día con más mágia de Crowdsec! Veréis que forma más elegante de protejer nuestras máquinas! Os agradezco los Likes, Me gustan, Retuits y esas cosas raras en las redes sociales,
Abrazos!