Implantando o Crowdsec centralmente
Como o tempo voa… já se passaram dois anos desde que falamos pela primeira vez sobre a Crowdsec… Pretendo fazer alguns documentos atualizados sobre as possibilidades de sua implantação, pois é um produto muito interessante para proteger nossas organizações contra ameaças e nos oferece muitas possibilidades interessantes.
Em publicações anteriores, talvez mais detalhadas, já descrevemos as possibilidades do Crowdsec, mas para fazer uma introdução para quem não o conhece, é um software que pode ser instalado em diferentes tipos de máquinas, com SO Windows, Linux… E o objetivo é proteger essa máquina (ou a sua rede), lendo os logs da máquina, tomará decisões, como por exemplo banir o IP que tentou realizar um ataque, ou alguém que tenha feito uma validação incorreta, etc…
São vários componentes, tem um agente que processa os logs da máquina, dos serviços que estiverem a correr, como por exemplo, os do visualizador de eventos, de um IIS, Nginx, Apache, MariaDB, Troca, Próxima nuvem, PME, RDP… compara os logs com os diferentes cenários e envia os alertas para o serviço LAPI (API local); que recebe os alertas e os converte em decisões. (baseando-nos nas proteções que configurámos). E depois temos o bouncer (o Componente de remediação), que consulta as decisões ao LAPI e aplica-as; por exemplo o bouncer do firewall, que criará regras no FW do SO a negar o acesso ao endereço IP que gerou um ataque.
Em princípio, embora pareça o contrário, é muito simples, instalam-se todos os componentes juntos ao instalar o Agente do Crowdsec (ou Engine). Ao instalar o Crowdsec num Windows ou num Linux, ele detetará os serviços que estão a correr na máquina, e, portanto, ficarão protegidos, se for um Linux e tiver (Por exemplo) um Nginx, já irá ler e tratar os logs do SO, bem como os próprios do Nginx, procurando padrões que detetem tentativas de abuso através de vulnerabilidades, scans, acessos não autorizados… Además se podrán añadir otros tipos de ‘colecciones’ para leer otro tipo de logs, por si en ese Nginx corre un Nextcloud, y queremos que Crowdsec trate también los logs de Nextcloud…
O que eu disse, es sencillo, es nuevo si no lo conoces, pero está muy bien planteado, si lo instalamos en un Windows Server, ídem, detectará si tenemos por ejemplo un IIS instalado, o un SQL Server… y según instalemos el Agente de Crowdsec detectará patrones en los logs del visor de sucesos para protegernos. E o que eu disse, si ese IIS corre algún servicio en particular, pues también podremos protegerlo, sea por ejemplo un Exchange (tanto OWA como SMTP) pudiendo leer sus logs específicos.
Lo que nos quedaría es poder aplicar las acciones, que si lee algo que no le gusta en un log, actúe. Para fazer isso,, habitualmente en Windows y Linux necesitamos instalar posteriormente el bouncer del firewall, Como eu disse, para que este componente de remediación pueda crear una regla en el firewall del sistema operativo, del Windows o del Linux, una regla temporal, de denegación, bloqueando el acceso de la dirección IP atacante.
Así tenemos protegidas nuestras máquinas Windows o Linux, pero entre ellas no se hablan, y sería interesante que se puedan comunicar entre ellas. Así que este paso es opcional, quizá para entornos pequeños, pero por supuesto totalmente recomendado para cualquier organización. Podremos crear facilmentemente en un contenedor de Docker un servidor de Crowdsec, por decir, este servidor compartirá mediante LAPI una base de datos centralizada con todas las decisiones, Para quê? Por si nos interesa que si una máquina recibe un ataque, el resto de máquinas Crowdsec se enteren y efectúen una acción, como sea protegerse y banear una dirección IP en particular, todas a la vez. Y otro de los contenedores maravillosos que desplegaremos es Crowdsec blocklist mirror, pura magia, este contenedor publicará en una URL la lista negra que comparten todas las máquinas de Crowdsec. Para quê? Para poder acceder a ella desde nuestros firewalls internos o perimetrales tipo Fortigate, CheckPoint, pfSense… y hacer reglas de denegación, entre redes, desde la WAN… y aislar directamente a los atacantes a otro nivel.
Poço, tras esta parrafada, y ya siendo la brasa, el documento de hoy está basado en cómo desplegar esta última parte que hemos hablado, vamos a desplegar la infraestructura central, vamos a desplegar estos contenedores y a futuro en otros documentos veremos cómo instalar Crowdsec en un Windows y protegerlo, centralizado o no; así como un Linux.
Despliegue de Crowdsec para entorno multi servidor
mkdir crowdsec cd crowdsec
Empezamos por ejemplo en un Ubuntu Server, con su FQDN, una dirección IP estática, con NTP bien configurado, atualizado y con Docker instalado. Vamos a ver qué rápido se despliegan estos dos contenedores. Creamos un directorio, entramos, y empezamos. Crearemos el fichero docker-compose.yml con el siguiente contenido:
Versão: Serviços '3':
crowdsec:
imagem: crowdsecurity/crowdsec
restart: always
ports:
- '8080:8080'
- '6060:6060« volumes:
- ./crowdsec-db:/var/lib/crowdsec/data/
- ./crowdsec-config:/etc/crowdsec/
crowdsec-blocklist-mirror:
container_name: crowdsec-blocklist-mirror
image: crowdsecurity/blocklist-mirror
depends_on:
- "crowdsec"
Portas:
- 41412:41412
Volumes:
- ./cfg.yaml:/etc/crowdsec/bouncers/crowdsec-blocklist-mirror.yaml
volumes:
crowdsec-db:
crowdsec-config:
O que eu disse, nos desplegará dos contenedores, uno Crowdsec que atuará en principio como servidor LAPI en el 8080 y en el 6060 si interesa escupirá métricas, en el puerto 41412tcp tendremos el contenedor que publica la blocklist, un mirror.
Descargamos y arrancamos los contenedores con:
sudo docker compor -d
A primeira vez, el contenedor del Blocklist-Mirror no se levantará ya que necesita acceso con su API key, así que creamos el primer bouncer, para las Blocklists:
sudo docker exec -it crowdsec-crowdsec-1 cscli bouncers add BlocklistMirror
Nada mau, paramos el contenedor de Crowdsec y borramos el fichero de configuración para recrearlo a continuación.
sudo docker stop crowdsec-crowdsec-1 rm -rf cfg.yaml/
Y creamos con 'nano cfg.yaml’ el fichero de configuración, que debe ser algo como esto, tener en cuenta que debéis indicar el API key que le hemos solicitado a Crowdsec e indicar la dirección IP por la que publicaremos el servicio LAPI. Así como en la Blocklist añadir la dirección IP que se conectará y tendrá acceso a la URL de la blocklist, por ejemplo nuestro firewall perimetral.
config_version: v1.0
crowdsec_config:
lapi_key: xxxxxxxxxxxxxxx
lapi_url: Referências HTTP://DIRECCION_IP_MAQUINA:8080
update_frequency: 10s
include_scenarios_containing: []
exclude_scenarios_containing: []
only_include_decisions_from: []
insecure_skip_verify: false
blocklists:
- format: plain_text # Os formatos suportados são qualquer um "plain_text"
endpoint: /security/blocklist
authentication:
tipo: nenhum # Os tipos suportados são qualquer um "nenhum", "ip_based", "basic"
utilizador:
senha:
trusted_ips: # Intervalos de IP, ou IPs que não necessitam de autenticação para aceder a esta lista de bloqueios
- 127.0.0.1
- ::1
- 192.168.1.1
listen_uri: 0.0.0.0:41412
TLS:
cert_file:
key_file:
Métricas:
Habilitado: true
ponto de extremidade: /métricas
log_media: stdout
log_level: informação
Ya podremos iniciar el contenedor de Crowdsec de nuevo y el del Blocklist-Mirror finalmente, Executando:
sudo docker start crowdsec-crowdsec-1 sudo docker restart crowdsec-blocklist-mirror
Probamos que podemos acceder a la URL de la blocklist desde: Referências HTTP://DIRECCION_IP_MAQUINA:41412/segurança/lista de bloqueio
Inscribirlo en la CrowdSec Console
Será totalmente recomendável darnos de alta en https://app.crowdsec.net y registrar en nuestra cuenta de Crowdsec Console. Desde aquí podremos visualizar el estado de nuestros Agentes o Engine de Crowdsec, podremos suscribirlas a otras listas negras de la comunidad, gestionar las alertas, históricos… Para dar de alta nuestros Crowdsec, lo haremos desde la web, “Security Engine” > “Engines” > “Adicionar mecanismo de segurança”, nos saldrá un desplegable que copiaremos y ejecutaremos en nuestro servidor de Crowdsec (por llamarlo de alguna manera).
Y lo ejecutamos, Neste caso, modificamos um pouco o comando, pois o executaremos através do Docker:
sudo docker exec -it crowdsec-crowdsec-1 cscli console enroll -e context xxxxxxxxxxxxxxx
Voltamos ao Console do Crowdsec (e se não o virmos, F5), aparecerá que detectou o nosso pedido de registo, Clique em “Aceitar registo”,
Uma vez que já a temos no inventário, podemos, em primeiro lugar, editar o nome para a reconhecer melhor, sobre ela “Editar nome ou etiquetas”,
Colocamos o nome da máquina e clicamos em “Atualização”,
Podemos continuar, se quisermos, por a subscrever a certas Blocklists que o Crowdsec nos oferece, a comunidade… assim a máquina estará protegida de certas redes de bots, malévolos… por isso, Clique em “Lista de bloqueio” onde vemos que está subscrita a 0,
Clique em “Procurar listas de bloqueio disponíveis”,
E aqui aparecerá uma série de listas, podemos escolher até 3 de forma gratuita com a conta do tipo Community, poderemos escolher o tipo de listas, as que mais nos convençam, precisamos… sobre cada uma delas, vamos clicar em “Gerir”,
E em “Adicionar mecanismo de segurança”,
Aqui vão aparecer as máquinas que têm o agente do Crowdsec instalado, selecionamos a máquina a subscrever e o tipo de ação, se uma proibição da IP ou exigir um Captcha ao aceder. “Confirmar Subscrição”.
Em princípio vamos deixar aqui o documento, podemos dizer que, minimamente, ficou o cenário central, a máquina que oferecerá os serviços de LAPI para o resto dos Engines do Crowdsec ou a lista negra para nossos firewalls perimétricos. Os próximos passos serão já a implementar os agentes do Crowdsec onde necessitarmos, e se nos interessar, porque os integramos nesta instalação e assim entre eles poderão tomar decisões conjuntas.
Espero que os possa trazer algo, esclarecer se alguém tinha dúvidas ou não o conhecia, ou se apetece implementá-lo numa LAB e ir testando soluções como estas, fáceis, simples, para toda a família. E que possamos trazer segurança e anteciparmo-nos a sustos… Por isso, Não? Já sabem, que me vou embora, que espero que vos vá MUITO bem, Abraços!























































