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 2. SSH non su porta standard 22
3. Non consentire SSH all'utente root 3. Non consentire SSH all'utente root
4. Installare un firewall e consentire solo le porte SSH, HTTP e HTTPS, dietro *reverse-proxy* 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 6. Aggiornare i pacchetti di sistema
7. Aggiornamenti automatici di sicurezza 7. Aggiornamenti automatici di sicurezza
8. Fare un backup automatico e regolare 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 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 ## 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à. 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) - [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) - [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/) - [crowdsec](https://github.com/crowdsecurity/crowdsec)
- [caddy-logs](https://app.crowdsec.net/hub/author/crowdsecurity/log-parsers/caddy-logs) - [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 ### ntfy