This commit is contained in:
piccihud 2024-12-29 17:45:52 +01:00
parent 8726bba766
commit e5d688063c
2 changed files with 87 additions and 4 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

View File

@ -18,7 +18,7 @@ Un *server privato virtuale* o `VPS` è un ambiente isolato creato su un server
2. SSH non su porta standard 22
3. Non consentire SSH all'utente root
4. Installare un firewall e consentire solo le porte SSH, HTTP e HTTPS, dietro *reverse-proxy*
5. Installare **Fail2Ban** (e **Crowdsec**) per bloccare i tentativi di accesso ripetuti
5. Installare **Fail2Ban** (e **CrowdSec**) per bloccare i tentativi di accesso ripetuti
6. Aggiornare i pacchetti di sistema
7. Aggiornamenti automatici di sicurezza
8. Fare un backup automatico e regolare
@ -325,6 +325,86 @@ journalctl -f -u caddy.service
Quando Caddy riceve una richiesta su una determinata porta (ad esempio la porta 443 per HTTPS), gestirà internamente il routing del traffico verso i servizi backend specificati nel file di configurazione, senza dover aprire le porte sul firewall del sistema
## CrowdSec
CrowdSec è un software di sicurezza open-source progettato per proteggere i server e le applicazioni da attacchi informatici.
Il funzionamento che sta alla base è molto semplice: tutti condividono i risultati dei vari scan e così facendo si crea una lista globale degli ip utilizzati dagli attaccanti per sfruttare vulnerabilità o causare delle interruzioni di servizio.
CrowdSec utilizza dei `bouncer` (*buttafuori*), che sono componenti che si integrano con il sistema di sicurezza per applicare le decisioni di blocco o limitazione delle richieste provenienti da indirizzi IP considerati malevoli. CrowdSec offre bouncer per vari sistemi, come iptables (per sistemi Linux), AWS, Cloudflare e molti altri.
Quando CrowdSec rileva un comportamento sospetto da un indirizzo IP, questo viene aggiunto a una blacklist. I bouncer utilizzano queste blacklist per bloccare o limitare le richieste in tempo reale.
Poiché CrowdSec è progettato per essere collaborativo, le blacklist possono essere aggiornate in tempo reale con informazioni provenienti da altri utenti.
Il runtime di CrowdSec ruota attorno ad alcuni semplici concetti:
- vengono letti i log (file system, journald, docker, ecc);
- i log vengono analizzati tramite *parser* (utilizzati per analizzare i log e identificare comportamenti sospetti);
- i log normalizzati vengono confrontati con gli scenari;
- quando uno scenario viene *attivato*, CrowdSec genera un avviso ed eventualmente una o più decisioni su quale azione dovrebbe essere intrapresa contro lip offensivo
### Installazione e configurazione di CrowdSec
- Si installa col comando seguente:
```bash
curl -s https://packagecloud.io/install/repositories/CrowdSec/CrowdSec/script.deb.sh | bash
apt update
apt install CrowdSec CrowdSec-firewall-bouncer-iptables
```
- Abilitare il servizio col comando: `systemctl enable --now CrowdSec.service`.
- Installare il parser per caddy: `cscli parsers install CrowdSecurity/caddy-logs`, quindi dare il comando `systemctl reload crowdsec`, in modo che vengano applicate effettivamente le nuove configurazioni
- Installare la collection per caddy: `cscli collections install crowdsecurity/caddy`. Dare sempre il comando `systemctl reload crowdsec`
- Dopo aver installato CrowdSec, dobbiamo editare il file `/etc/CrowdSec/acquis.yaml`, inserendo il path log da monitorare:
```bash
[...]
---
filenames:
- /var/log/caddy/access.log
labels:
type: caddy
---
filenames:
- /var/log/fail2ban.log
labels:
type: fail2ban
---
```
Nel mio caso, ho aggiunto semplicemente il percorso dei log di caddy e di fail2ban.
### Comandi principali
- `cscli metrics`: mostra le metriche di CrowdSec, come il numero di attacchi rilevati e le azioni intraprese
- `cscli metrics show acquisition`: mostra i log analizzati
- `cscli decisions list`: elenca le decisioni attuali, mostrando quali IP sono stati bloccati e per quanto tempo
- `cscli ban <IP>`: aggiunge manualmente un indirizzo IP alla blacklist
- `cscli unban <IP>`: rimuove un indirizzo IP dalla blacklist
- `cscli parsers <list/upgrade --all>`: gestisce i **parser**, ossia gli strumenti che analizzano i log
- `cscli bouncers <list>`: gestisce i bouncer, consentendo di attivare o disattivare specifici bouncer
- `cscli alerts list`: mostra un elenco di allerte generate da CrowdSec
- `cscli scenarios list`: elenca tutti gli scenari disponibili nel sistema. Gli **scenari** sono regole di rilevamento specifiche che definiscono come CrowdSec deve reagire a determinati comportamenti sospetti o attacchi
- `cscli collections list`: Elenca tutte le collezioni disponibili nel sistema. Le **collezioni** sono gruppi di scenari e parser che possono essere utilizzati per proteggere specifici servizi o applicazioni. Ad esempio, una collezione per un server Linux potrebbe includere scenari per rilevare attacchi SSH, mentre una collezione per un server web potrebbe includere scenari per rilevare attacchi di tipo SQL injection
- `cscli collections upgrade --all`: aggiorna tutte le collezioni
- `cscli hub update`: questo comando aggiorna l'*hub* di CrowdSec, che è un repository di risorse condivise, come scenari, parser e bouncer. Utile per assicurarsi di avere le ultime regole e configurazioni disponibili
- - `cscli help`: mostra un elenco di comandi disponibili
### CrowdSec Console
La Console di CrowdSec funge da interfaccia web progettata per gestire efficacemente i bouncer di CrowdSec, permettendo di visualizzare le attività e le decisioni prese. Ovviamente, non è obbligatoria per utilizzare CrowdSec, ma offre un'interfaccia visiva che può rendere più facile l'analisi delle informazioni e il monitoraggio delle minacce.
Maggiori informazioni [qui](https://doc.crowdsec.net/u/getting_started/post_installation/console/)
- Una volta loggati, per registrare un'istanza di CrowdSec con la Console, dare il comando `cscli console enroll $ENROLLMENT_KEY`
- La `$ENROLLMENT_KEY` si trova nella pagina [security engines](https://app.crowdsec.net/security-engines)
![crowdsec_console](/images/vps/crowdsec_console.png)
- Dalla console, accettare la registrazione
- Una volta accettata la registrazione, bisogna riavviare CrowdSec: `systemctl restart crowdsec`
- Dall'[Hub](https://app.crowdsec.net/hub) è possibile trovare nuove collezioni, bouncer, block-list, scenari e parser da installare
## Aggiornamenti automatici di sicurezza
Gli `unattended upgrades` (aggiornamenti non presidiati o automatici) sono una funzionalità presente in Debian (e in altre distribuzioni basate su Debian, come Ubuntu) che consente di installare automaticamente gli aggiornamenti di sicurezza, senza richiedere l'intervento dell'utente. Questa funzionalità è particolarmente utile per mantenere il sistema sicuro e aggiornato, riducendo il rischio di vulnerabilità.
@ -462,10 +542,13 @@ Per verificare, basta eseguire il comando: `docker stats`
- [log caddy](https://caddyserver.com/docs/caddyfile/directives/log)
- [Caddy — Configure Logging and Access Logs](https://futurestud.io/tutorials/caddy-configure-logging-and-access-logs)
### Crowdsec
### CrowdSec
- [Crowdsec](https://blog.marvinpascale.it/posts/2021/crowdsec/)
- [caddy-logs](https://app.crowdsec.net/hub/author/crowdsecurity/log-parsers/caddy-logs)
- [crowdsec](https://github.com/crowdsecurity/crowdsec)
- [CrowdSec](https://blog.marvinpascale.it/posts/2021/CrowdSec/)
- [caddy-logs](https://app.CrowdSec.net/hub/author/CrowdSecurity/log-parsers/caddy-logs)
- [Crowdsec centralizzato](https://blog.marvinpascale.it/posts/2022/crowdsec-centralizzato/)
- [Useful Commands](https://docs.ibracorp.io/crowdsec/crowdsec/useful-commands)
### ntfy