Post

Psad, Protezione dai Port Scan per Linux

PSAD (Port Scan Attack Detection) è usato per bloccare lo scan delle porte sul server. psad monitora attraverso i log del firewall (iptables) e determina se avviene uno scan di una porta o se si è verificato un attacco. Se degli attacchi sono incorsi sul server, interviene per rilevarne la minaccia.

Features

  • Supporta sia logs ipv4 e ipv6 generati da iptables
  • Free e distribuito tramite licenza GNU General Public License
  • Notifiche email con TCP, UDP, ICMP caratteristiche di scan, reverse DNS
  • Blocca in autonomia indirizzi Ip sospetti tramite regole iptables e TCP wrappers basati su livelli di scan

Installare psad

Psad richiede diverse dipendenze che vengono installate automaticamente dai repository Ubuntu/Debian. Durante l’installazione è possibile che spunti un pop-up che richiederà di configurare un mail server.

1
2
sudo apt-get update
sudo apt-get install psad

Configurazione iptables

Configuriamo iptables per salvare i logs dei pacchetti input & forward scartati:

1
2
sudo iptables -A INPUT -j LOG
sudo iptables -A FORWARD -j LOG 

una volta eseguiti, non si incorrerà in nessun output.

Per evitare di incorrere in eventuali problemi, assicuriamoci che le regole dichiarate poco sopra siano immediatamente prima dell’eventuale policy di DROP di tutti i pacchetti.

1
2
3
4
5
6
-A INPUT -i lo -j ACCEPT # Accetta traffico in locale
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # Accetta connessioni già stabilite
-A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT # Accetta connessioni su porta 80 e 443
-A INPUT -j LOG # Per psad
-A INPUT -j DROP # Regola DROP dei pacchetti
-A FORWARD -j LOG # Per psad

per visualizzare la corretta configurazione delle policy eseguite:

1
sudo iptables -S

Nel caso di errori, potete eseguire un flush o in alternativa, se presente il pacchetto iptables-persistent avrete la possibilità di modificare le regole direttamente nel file situato al path /etc/iptables/rules.v4 e/o /etc/iptables/rules.v6 per protocollo IPv6, ricaricando le policy una volta modificate, con il comando iptables-restore < /etc/iptables/rules.v4. Per gestire le policy per il protocollo IPv6 bisogna utilizzare il comando ip6tables.

Configurazione di psad

Di default, Psad tiene i file di configurazione, snort rules e signatures sotto il path /etc/psad. Cominciamo con in modificare il file primario di configurazione /etc/psad/psad.conf.

i parametri di nostro interesse saranno i seguenti:

1
2
3
4
5
6
7
8
9
EMAIL_ADDRESSES   indirizzo@dominio.it, indirizzo2@altrodominio.it; # cambiare con vostra email di notifiche per gli alerts 

HOSTNAME          test-machine; # host nome macchina

HOME_NET          192.168.154.0/24; # per una LAN network, altrimenti HOME_NET **NOT_USED;**

EXTERNAL_NET      any; # WAN network 

ENABLE_SYSLOG_FILE      Y; # di default è disabilitato

Una delle prime configurazioni del PSAD è il parametro IPT_SYSLOG_FILE. di default cercherà i log nel path /var/log/messages, ma su Ubuntu, il path è in /var/log/syslog in caso configuratela con il path corretto per poter far rilevare a psad attività malevoli.

Se utilizzate port knocking (scritto qui al riguardo) per sbloccare le porte, tornerà sicuramente utile aggiungere eccezioni verso porte specifiche. Dovrete quindi configurare il seguente parametro:

1
IGNORE_PORTS            tcp/61000-61356, udp/53, udp/5000; # range d'esempio

per abilitare psad come IDS (Intrusion Detection System)/IPS configurare:

1
ENABLE_AUTO_IDS Y;         # disabilitato di default

Permetterà a psad di modificate le policy iptables per bloccare lo scan dell’attacker.

Questa feature è disabilitata di default dato che è possibile per un attaccante eseguire lo spoof dei pacchetti da un sito web noto nel tentativo di far sembrare che il sito stia scansionando la tua macchina, e quindi psad bloccherà di conseguenza tutti gli accessi a quest’ultimo. Inoltre, psad funziona analizzando i messaggi del firewall per i pacchetti che iptables ha già DROPPATO, quindi le “scansioni” non hanno comunque successo. Suggerisco quindi di fare ogni tanto una revisione dei siti che vengono bloccati e rimuovere manualmente il blocco se necessario (con l’opzione –Flush).

ora configuriamo gli avvertimenti (se configurata la notifica via email) e delle azioni da intraprendere in base a una particolari soglie, configurando le voci:

1
2
MIN_DANGER_LEVEL           1;  # Controlla i log e allerte tramite email
EMAIL_ALERT_DANGER_LEVEL   3;  # Si applica solo agli alert tramite email

configurate anche il seguente campo:

1
AUTO_IDS_DANGER_LEVEL       3;

Sostituite il numero della soglia che dovrà far scattare il blocco automatico dell’IP che ha effettuato il port scan. Potete anche decidere per quanto tempo bloccare un IP, con le opportune voci, le seguenti sono di default:

1
AUTO_BLOCK_TIMEOUT          604800;

diversi esempi di default delle soglie:

1
2
3
4
5
AUTO_BLOCK_DL1_TIMEOUT      300;
AUTO_BLOCK_DL2_TIMEOUT      900;
AUTO_BLOCK_DL3_TIMEOUT      1200;
AUTO_BLOCK_DL4_TIMEOUT      $AUTO_BLOCK_TIMEOUT;
AUTO_BLOCK_DL5_TIMEOUT      0;   ### Blocco Permanente

ultimiamo le configurazioni con il seguente comando, scaricherà le firme aggiornate necessarie per psad, in modo tale che possa riconoscere eventuali attacchi correttamente e riavviamo il servizio:

1
2
3
sudo psad --sig-update

sudo service psad restart

Report Port Scan

Per monitorare il servizio:

1
sudo psad -S

il report del port scan sarà conservato nel file /var/log/psad/status.out.

Allow degli IP Bloccati

Se psad trova delle occorrenze e blocca degli ip potete sbloccare i seguenti indirizzi ip con:

1
sudo psad -F

per sbloccare un indirizzo ip specifico:

1
sudo psad --fw-rm-block-ip [Indirizzo-IP-da-sbloccare]

Arrivati fino qui e per verificare che tutto funzioni, vi suggerisco di evitare di farlo dal vostro IP pubblico, finirete bloccati fuori. Online potete trovare dei servizi che vi permettono di effettuare dei port scan.

Aggiunta delle eccezioni

Potete inserire delle eccezioni per un dato range di indirizzi IP o per un singolo indirizzo, in maniera tale che psad non blocchi assolutamente nulla.

Per farlo potete modificare il file auto_dl:

1
sudo vi /etc/psad/auto_dl

aggiungete una stringa del tipo:

1
indirizzo_ip          ;

Esempio: mettere un’eccezione (cosa che consiglio) per l’indirizzo IP locale, scrivete:

1
127.0.0.1         0;

Per definire un range di IP, dovrete specificare anche la subnet:

1
192.168.0.0/24    0;

Con la soglia 0 si intede che quell’IP sarà sempre considerato “buono”. Per considerare sempre un indirizzo IP come malevolo vi basterà cambiare 0 con 5, oppure con una qualsiasi altra soglia.

riavviate psad sempre con:

1
sudo service psad restart

o tramite:

1
sudo psad -H

l’ultimo comando è consigliato per non perderete eventuali ban effettuati tramite iptables da psad, ad ogni riavvio, a causa di un’impostazione (disattivabile comunque nel file di configurazione), i ban effettuati da psad vengono rimossi.

Questo post è sotto licenza CC BY 4.0 a nome dell'autore.

DISCLAIMER: Questo blog non rappresenta una testata giornalistica in quanto viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge N°62 del 07/03/2001. Leggi di più

© Cybertome. Alcuni diritti riservati.

Servizio offerto da Jekyll con tema Chirpy