Crowdsec Appsec
Negli ultimi anni, la sicurezza delle applicazioni web è diventata una delle principali sfide per amministratori di
sistema e sviluppatori. Gli attacchi sono sempre più sofisticati, e mitigare le minacce richiede strumenti avanzati.
Tra le soluzioni emergenti, CrowdSec AppSec si distingue per il suo approccio collaborativo e open-source.
In questo articolo vedremo come installarlo e configurarlo per proteggere le nostre applicazioni web.
Cos’è CrowdSec AppSec?
CrowdSec AppSec è un modulo di sicurezza per applicazioni web che estende CrowdSec un IPS/IDS collaborativo che analizza e blocca traffico malevolo in tempo reale. L’obiettivo di AppSec è fornire protezione avanzata contro attacchi come SQL Injection, XSS, LFI, RCE e altre vulnerabilità comuni.
Mani in pasta
Per installare CrowdSec AppSec seguiamo questi passaggi; sarà necessario avere un reverse proxy e il bouncer associato.
Prenderemo come riferimento una Debian 12 e NGINX come reverse proxy.
1. Installare CrowdSec
Se non hai ancora installato CrowdSec, esegui:
# curl -s https://install.crowdsec.net | sh
# apt install crowdsec -y
Verifica che il servizio sia attivo:
# systemctl status crowdsec
2. Installare il modulo AppSec
Scarichiamo e installiamo CrowdSec AppSec:
# cscli collections install crowdsecurity/appsec-virtual-patching crowdsecurity/appsec-generic-rules
# systemctl reload crowdsec
Dopo l’installazione, attiviamo il modulo AppSec nel file di configurazione di CrowdSec:
# mkdir -p /etc/crowdsec/acquis.d/
e creiamo il file /etc/crowdsec/acquis.d/appsec.yaml
appsec_config: crowdsecurity/appsec-default
labels:
type: appsec
listen_addr: 127.0.0.1:7422
source: appsec
In questo caso il componente AppSec sarà in ascolto su 127.0.0.1 porta 7742.
Riavviamo il servizio.
# systemctl restart crowdsec
3. Configurare il Bouncer
Per bloccare le richieste dannose, installiamo il bouncer per il nostro web server. Nel nostro caso NGINX:
# apt install nginx lua5.1 libnginx-mod-http-lua luarocks gettext-base lua-cjson -y
# apt install crowdsec-nginx-bouncer -y
Se installiamo il bouncer dopo aver installato crowdsec, il primo dovrebbe inizializzarsi da solo ma nel caso manchi l’api key nel file di configurazione possiamo generarla manualmente
# cscli bouncers add nginx
Modifichiamo la configurazione del bouncer /etc/crowdsec/bouncers/crowdsec-nginx-bouncer.conf:
API_URL=127.0.0.1:8080
API_KEY=<CROWDSEC_LAPI_KEY>
# bounce for all type of remediation that the remediation can receive from the local API
BOUNCING_ON_TYPE=all
# when the remediation receive an unknown remediation, fallback to this remediation
FALLBACK_REMEDIATION=ban
MODE=stream
REQUEST_TIMEOUT=1000
# exclude the bouncing on those location
EXCLUDE_LOCATION=
# Cache expiration in live mode, in second
CACHE_EXPIRATION=1
# Update frequency in stream mode, in second
UPDATE_FREQUENCY=10
#those apply for "ban" action
# /!\ REDIRECT_LOCATION and BAN_TEMPLATE_PATH/RET_CODE can't be used together. REDIRECT_LOCATION take priority over RET_CODE AND BAN_TEMPLATE_PATH
BAN_TEMPLATE_PATH=/var/lib/crowdsec/lua/templates/ban.html
REDIRECT_LOCATION=
RET_CODE=
#those apply for "captcha" action
#valid providers are recaptcha, hcaptcha, turnstile
CAPTCHA_PROVIDER=
# default is recaptcha to ensure backwards compatibility
# Captcha Secret Key
SECRET_KEY=
# Captcha Site key
SITE_KEY=
CAPTCHA_TEMPLATE_PATH=/var/lib/crowdsec/lua/templates/captcha.html
CAPTCHA_EXPIRATION=3600
## Application Security Component Configuration
APPSEC_URL=http://127.0.0.1:7422
#### default ###
APPSEC_FAILURE_ACTION=passthrough
APPSEC_CONNECT_TIMEOUT=100
APPSEC_SEND_TIMEOUT=100
APPSEC_PROCESS_TIMEOUT=1000
ALWAYS_SEND_TO_APPSEC=false
SSL_VERIFY=true
################
E riavviamo il servizio:
# systemctl restart nginx
Verifica della protezione
Possiamo testare la protezione simulando un attacco, ad esempio richiesta del file .env:
http://[IP_SERVER]/.env
Possiamo verificare che la richiesta sia stata correttamente processata
# cscli metrics show appsec
╭───────────────────────────────────────╮
│ Appsec Metrics │
├─────────────────┬───────────┬─────────┤
│ Appsec Engine │ Processed │ Blocked │
├─────────────────┼───────────┼─────────┤
│ 127.0.0.1:7422/ │ 1 │ 1 │
╰─────────────────┴───────────┴─────────╯
╭─────────────────────────────────────────────╮
│ Appsec '127.0.0.1:7422/' Rules Metrics │
├─────────────────────────────────┬───────────┤
│ Rule ID │ Triggered │
├─────────────────────────────────┼───────────┤
│ crowdsecurity/vpatch-env-access │ 1 │
╰─────────────────────────────────┴───────────╯
Conclusioni
Con CrowdSec AppSec possiamo migliorare significativamente la sicurezza delle nostre applicazioni web. Il suo approccio collaborativo e open-source lo rende una soluzione potente per chi vuole protezione avanzata senza costi elevati. Installarlo e configurarlo è relativamente semplice, e la protezione in tempo reale può fare la differenza contro gli attacchi informatici.
Se vuoi approfondire, visita la documentazione ufficiale e sperimenta le funzionalità avanzate!
Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.
Risorse: