Crowdsec Windows makin batean ezartzen
Onena, ya hemos visto en el documento anterior un poco los conceptos e ideas de cómo desplegar Crowdsec en nuestra organización, hoy lo que tenemos en el menú es cómo instalar Crowdsec en una máquina Windows y protegerla. Protegerla de botnets, ataques, curiosos, aburridos…
Beraz, ekin diezaiogun, empezamos con un Windows! Habitualmente, se entiende que lo haremos en un Windows Server, un servidor que tenga algún servicio publicado y queramos proteger; no obligatoriamente tenga que estar en Internet. Comenzaremos instalándole el Crowdsec Security Engine, que es el agente que se encargará de todo, procesar sus logs, tomar sus decisiones… seguido le instalaremos el bouncer (o componente de remediación) para su firewall de Windows, de su SO, por si nos interesa que actúe y pueda dar de alta reglas en él, bloqueando accesos temporales a direcciones IP malvadas. Y acabaremos registrándolo en la Consola de Crowdsec.
Con eso casi lo tendremos, ya que el documento continuará, será opcional, pero si vas a querer una gestión centralizada, deberás de realizar algunos pasos más; y eso es, una decisión tuya. Interesatzen bazaizu, debes leerte antes el post previo.
Este post tiene la siguiente estructura:
- Instalación del Agente de Crowdsec
- Instalación del bouncer de Crowdsec Windows Firewall
- Crowdsec Kontsolara erregistratzea
- Bildumak
- Zerrenda zuriak
- Jakinarazpenak
- Probatzen
- Crowdsec gure LAPI zerbitzarian erregistratzea
- Crowdsec bouncer-a gure LAPI zerbitzarian erregistratzea
Instalación del Agente de Crowdsec
Jarraitzean aurretik, será necesario previamente instalar el requisito .NET Runtime: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-6.0.11-windows-x64-installer
Ya podremos proceder, descargamos el instalador MSI y comenzar la instalación de Crowdsec Engine, de https://github.com/crowdsecurity/crowdsec/releases/. Crowdsec durante la instalación necesitará acceso a Internet, para descargarse algunos elementos como las colecciones… así como para el funcionamiento habitual, el agente necesita acceso a un par de sitios de Crowdsec, os recomiendo leeros los sitios/puertos que pueda necesitar.
“Siguiente”,
“Install”,
Esperamos unos segundos mientras instala…
Eta amaitzea! Dagoeneko Crowdsec instalatuta daukagu!
Instalación del bouncer de Crowdsec Windows Firewall
Crowdsec detectará pero no podrá realizar acciones, horretarako Windows firewall-eko bouncerra beharko dugu. Beraz, lo descargamos: https://github.com/crowdsecurity/cs-windows-firewall-bouncer/releases y comenzamos su instalación,
“Install”,
…
Y ahora ya tenemos el bouncer, nos protegerá a nivel de firewall, “Finish”,
Crowdsec Kontsolara erregistratzea
Si no tenemos una cuenta en https://app.crowdsec.net nos la podemos crear, para gestionar desde una consola GUI de manera centralizada todos nuestros Crowdsec, ez da derrigorrezkoa, eta Community bertsio bat dugu, honekin ere gauza asko egin daitezke, horien artean, pues lo que hemos hablado alguna vez, ver las alertas de las máquinas, haien egoera, blocklist ezberdinetara harpidetu ditzakegu…. Beraz, jarraitzen dugu gure Crowdsec gehituz, la instalación en ese Windows. Exekutatu beharreko komandoa kopiatu.
Eta sistemako kontsola batean itsatsi, ejecutamos:
cscli console enroll xxxxxxxxxxxxxxxxxx
Volvemos a la Consola de Crowdsec y aceptamos el enroll, si no nos sale, un F5 viene bien,
Sobre el Engine recién añadido, le editamos el nombre y le pondremos uno que nos haga referencia a quién es,
Habitualmente, indicamos el nombre de la máquina, Eguneratu,
Eta nahi badugu, lo siguiente pueda ser añadirle algunos blocklists, horretarako, podemos pulsar sobre “Browse available blocklists”,
Si ya estamos suscrito a algún blocklist, podremos seleccionarlo desde “Manage”
Y pulsar sobre “Add Security Engine” para añadir esta máquina a esta blocklist,
Elegimos un tipo de acción y confirmamos. Máquina suscrita!
Recordar que tras registrar Crowdsec contra la Consola hay que reiniciar el servicio de Windows que tenemos.
Bildumak
Por defecto Crowdsec cuando se instala en una máquina escanea en busca de los servicios que tenemos instalados y los intenta proteger, kasu honetan, en mi Windows me ha detectado que dispongo de IIS instalado, así como SQL Server, además de estas colecciones, nos habrá metido alguna adicional, así como las de Windows. Podemos ver las colecciones que tenemos instaladas con:
cscli collections list
Podremos buscar más colecciones en su Hub, colecciones realizadas por ellos o por la comunidad, que puedan proteger otros servicios que dispongamos, como si por ejemplo en este Windows tuviéramos Exchange Server… pues sería tan sencillo como ejecutar:
cscli collections install crowdsecurity/exchange
Y deberíamos añadir en su fichero de adquisiciones ‘C:\ProgramData\CrowdSec\config\acquis.yaml’ el contenido de abajo, no os preocupéis que en el Hub viene detallado en cada caso qué hay que hacer, corregimos los paths de los logs de Exchange y tras reiniciar el servicio de Crowdsec tendríamos la máquina lista, protegiendo ataques también de OWA, autenticaciones SMTP…
##Exchange SMTP use_time_machine: true #Process logs as if we were replaying them to get the timestamp from the filenames: - C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive\*.LOG labels: type: exchange-smtp --- ##Exchange IMAP use_time_machine: true #Process logs as if we were replaying them to get the timestamp from the filenames: - C:\Program Files\Microsoft\Exchange Server\V15\Logging\Imap4\*.LOG labels: type: exchange-imap --- ##Exchange POP use_time_machine: true #Process logs as if we were replaying them to get the timestamp from the filenames: - C:\Program Files\Microsoft\Exchange Server\V15\Logging\Pop3\*.LOG labels: type: exchange-pop --- ##Exchange OWA #OWA failed attempts are logged in the same way as RDP failed auth source: wineventlog event_channel: Security event_ids: - 4625 event_level: information labels: type: eventlog ...
Zerrenda zuriak
La lista blanca como podemos interpretar nos servirá para que podamos excluir por ejemplo una dirección IP de que pueda ser baneada o bloqueada por Crowdsec, habitualmente puedan ser las direcciones IP de algún puesto de control, equipo de salto, eta abar… Así como entre otras también podremos excluir paises, adibidez.
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.1.33"
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"
El fichero lo encontraremos en ‘C:\ProgramData\CrowdSec\config\parsers\s02-enrich\whitelists.yaml’, y veremos que podremos añadir sencillamente cualquier IP o rango IP en la lista blanca de exclusiones.
Si queremos excluir paises, debemos instalar antes el parser geoip-enrich que nos alimentará los logs con datos de geolocalización, como por ejemplo paises, ciudades o coordenadas GPS:
cscli parsers install crowdsecurity/geoip-enrich
Y bastará con añadir la siguiente expresión en el fichero de lista blanca:
expression: - evt. Enriched.IsoCode == 'ES'
Recordar al finalizar reiniciar el servicio de Crowdsec para recargar estos cambios.
Jakinarazpenak
notifications: - slack_default - splunk_default - http_default - email_default
Podremos habilitar notificaciones editando el fichero ‘C:\ProgramData\CrowdSec\config\profiles.yaml’, non deskomentatu eta gure interesa duten jakinarazpen motak aukeratu ditzakegun, Splunk-era izan daitezke, Slack-era, posta elektroniko bidez, edo HTTP bidez (adibidez Telegram).
Adibidez posta jakinarazpenak nahi baditugu, en el directorio ‘C:\ProgramData\CrowdSec\config\notifications\’ email.yaml fitxategia editatuko genuke (edo slack.yaml edo splunk.yaml edo http.yaml), non gure posta zerbitzariaren parametroak konfiguratu ditzakegun. Telegramekoak post batean ikusi genituen zaharkitua.
Probatzen
Amaituko dugu probatuz, ezta?? bestela nola sinetsi honek funtzionatuko duenik? 🙂 Sartutako akatsen probak egin ditzakezue nahi duzuen moduan, edo ahulgune eskaneatzaile batekin balioztatu, edo webguneko baten bidez… en ese documento viejuno tenéis un ejemplo con nikto.
Podéis ver las decisiones que ha tomado vuestra máquina con:
cscli decisions list
En este caso ha baneado la dirección IP 192.168.1.253 por hacer un Windows Brute Force, será que he metido mal varias veces el usuario al acceder al servidor por RDP, o SMB…
O desde el servidor LAPI si es que lo hemos registrado (que es lo que viene a continuación)
docker exec -it crowdsec-crowdsec-1 cscli decisions list
Si ya hemos desplegado el Crowdsec Mirror, podremos verificar que la dirección IP baneada sale en la URL donde publicamos nuestra blocklist http://DIRECCION_IP_CROWDSEC_MIRROR:41412/security/blocklist
Si queremos banear una dirección IP, lo haremos con:
cscli decisions add --ip DIRECCIÓN_IP --reason "Descripción"
Si queremos desbanear una dirección IP, lo haremos con:
cscli decisions delete --ip DIRECCIÓN_IP
Podremos investigar las alertas que hemos tenido con:
cscli alert list
Con el comando anterior las listamos, y ahora seleccionando el ID de una alerta en particular y podremos saber qué fichero de log la generó, qué estaba haciendo, el path, el estado http… en este caso de la imagen son muchos 404 al path /apps/files_sharing/publicpreview/
cscli alert inspect ID_ALERTA [-d]
Y, si es que lo necesitamos, crear nuestro propio fichero de Whitelist para hacer exclusiones en casos de falsos positivos, pej en ‘C:\ProgramData\CrowdSec\config\parsers\s02-enrich\whitelist-permite-pdfs.yaml, pudiendo usar estas expresiones de ejemplo para hacer los filtros de exclusión:
name: crowdsecurity/mylistablancapdfs
description: "Ignora PDFs"
whitelist:
reason: "ignora PDFs"
expression:
#- evt.Meta.http_path '/apps/files_sharing/publicpreview/'-ekin hasten da
#- evt.Meta.http_status == '404' && evt.Meta.http_path '/apps/files_sharing/publicpreview/'-ekin hasten da
- evt.Parsed.request '/apps/files_sharing/publicpreview/' dauka
Betiko moduan, ahaztu gabe Crowdsec zerbitzua berrabiarazi konfigurazio-aldaketa bakoitzarekin.
Crowdsec gure LAPI zerbitzarian erregistratzea
api:
...
zerbitzaria:
gaitu: false
...
Tokiko LAPIa desgaitzeko beharra dugu, editamos el fichero ‘C:\ProgramData\CrowdSec\config\config.yaml’.
Ahora nos registramos contra el servidor LAPI que tenemos desplegado en la red:
cscli lapi register -u http://CROWDSEC_LAPI_IP_HELBIDEA:8080 --machine MAKINA_IZENA
En el servidor LAPI podremos ver la petición de registro de la máquina Windows, zerrendatzen dugu:
sudo docker exec -it crowdsec-crowdsec-1 cscli machines list
Onartzen dugu erregistro-eskaera eta berriz zerrendatzen dugu egoera egiaztatzeko:
sudo docker exec -it crowdsec-crowdsec-1 cscli machines validate NOMBRE_MAQUINA
Ahora nuestro Crowdsec en Windows comunicará y leerá del servidor LAPI cualquier decisión, Beraz, zerbitzari zentralarekin erabiliz. Crowdsec-eko gainerako agenteek berdina egingo balute, denek informazio bera izango lukete komunean, eta beraz, makina batek IP bat gaiztoa izan daitekeela susmatzen duenean, Crowdsec-eko gainerako agenteek momentuan jakinen dute.
Crowdsec bouncer-a gure LAPI zerbitzarian erregistratzea
Eta amaitzeko, guk ditugun bouncer-ak ere erregistratu behar ditugu, en este caso el bouncer del firewall de Windows, bouncer horrek LAPI zentraletik irakurtzea nahi badugu, pauso hauek jarraitu behar ditugu, Hortaz, esan duguna bezala, norbaitek edo zerbait LAPI zentralera IP bat gehitzen duenean, este firewall de sistema operativo hará una regla de denegación de acceso a dicha IP maligna.
Desde el servidor LAPI, podremos primero si queremos listar los bouncer que tenemos registrados con:
sudo docker exec -it crowdsec-crowdsec-1 cscli bouncers list
Y para dar de alta al bouncer del firewall de este Windows ejecutaremos:
sudo docker exec -it crowdsec-crowdsec-1 cscli bouncers add NOMBRE_MAQUINA-FW
Anotamos la API Key que nos ha dado,
En el Windows, editamos el fichero C:\ProgramData\CrowdSec\config\bouncers\cs-windows-firewall-bouncer.yaml y ponemos la IP del LAPI, su puerto y la API Key que nos dio el comando anterior. Guardamos el fichero y reiniciamos el servicio “Crowdsec Windows Firewall Bouncer”.
Y ya saldrá el FW del equipo Windows registrado, lo verificamos
sudo docker exec -it crowdsec-crowdsec-1 cscli bouncers list
eta prest! Final! Por ahora yo creo que ya vale, ez? 🙂 Ya hemos visto cómo desplegar Crowdsec para proteger un servidor de Windows, con sus servicios, así como algunas configuraciones basicas, y la parte de centralizarlo, espero que os haya podido servir de algo, darle un poquito de cariño a vuestra infraestructura con este tipo de soluciones, os mando un saludo, esperando que os vaya muy bien, besarkada bat,








































































