Portsentry è un celebrato attack detection tool sviluppato originariamente da Psionic Technologies (poi assorbita da Cisco).
Anche se il progetto portsentry (http://sourceforge.net/projects/sentrytools/) non è più stato aggiornato dal 2003, ciò non significa che esso non sia tuttora valido, anzi, può succedere che risvegli un rinnovato interesse in un periodo come l’attuale, in cui i worms, che rappresentano l’agente infettivo di maggior peso, tipicamente eseguono scansioni automatiche a partire da hosts infetti alla ricerca di altre macchine vulnerabili, e possono rivelare così la propria presenza.
Il compito di PortSentry consiste nella rilevazione di scansioni e nella risposta a tali scansioni. La scansione di una rete o di un sistema costituisce il prerequisito di un eventuale attacco e conseguente possibile intrusione. A meno che un attaccante conosca in anticipo quali porte siano aperte o disponibili su di un sistema, inizierà una scansione per determinare quali servizi l’host stia eseguendo. Qui è dove PortSentry entra in gioco, monitorando le porte TCP ed UDP del sistema e, a seconda di come sia configurato, rispondendo in modo appropriato ad una scansione identificata come tale.
PortSentry è in grado di rilevare anche scansioni di tipo stealth come quelle attuate da Nmap.
Portsentry può usare sei differenti modalità, impostabili a seconda di come il programma viene inizializzato .
- La prima modalità è “-tcp” che sarebbe anche la modalità di base. Con quest’opzione portsentry si impegnerà al controllo delle porte TCP presenti nel file di configurazione nella sezione “port configuration”. Potrà controllare fino a un massimo di 64 porte.
- La seconda è “-udp” e fa le stesse cose della precedente opzione, ma stavolta per quanto riguarda le porte UDP.
Quando PortSentry viene installato come pacchetto precompilato sotto Ubuntu, viene predisposto un init script (/etc/init.d/portsentry), che, leggendo le impostazioni presenti in /etc/default/portsentry
Quando PORTSENTRY identifica che da un certo IP provengono connessioni non
autorizzate:
= scrive una riga di log tramite la syslog facility
= scrive l'IP sul file portsentry.blocked. Questo file viene aggiunto in
coda al file di history alla partenza di portsentry e poi svuotato,
cosicche' a ogni esecuzione di PORTSENTRY gli IP bloccati nelle precendenti
esecuzioni vengono ignorati
= impedisce al pacchetto di tornare all'IP incriminato
= esegue un comando (specificabile nel portsentry.conf) che permetta di
ignorare quell'IP. Questo puo' essere fatto aggiungendo l'IP a hosts.deny
(usando quindi i TCP wrappers) o, ancora meglio, specificando l'IP in una
catena di REJECT a ipchains.
Configurazione di PORTSENTRY
La configurazione di PORTSENTRY viene effettuata da dei file presenti nella
directory /etc/portsentry/. Analizziamoli in dettaglio
portsentry.conf
File principale di configurazione di PORTSENTRY
E' suddiviso in sezioni:
= TCP_PORTS: lista di porte TCP da controllare in basic e stealth mode
= UDP_PORTS: come sopra per UDP
= ADVANCED_PORTS_TCP: numero della piu' alta porta TCP da controllare
(Default: 1024)
= ADVANCED_PORTS_UDP: come sopra per UDP
= ADVANCED_EXCLUDE_TCP: Porte TCP da escludere in advanced stealth mode
= ADVANCED_EXCLUDE_UDP: come sopra per UDP
= IGNORE_FILE: file con gli IP da ignorare
= BLOCKED_FILE: file con gli IP bloccati
= BLOCK_TCP: blocca connessioni TCP?
= BLOCK_UDP: blocca connessioni UDP?
= KILL_ROUTE: comando per "droppare" la connessione incriminata.
= KILL_HOSTS_DENY: riga da scrivere nel file hosts.deny
= KILL_RUN_CMD: comando da eseguire prima di "droppare" la connessione
incriminata
= SCAN_TRIGGER: numero di connessioni da un host prima di attivare la
reazione di PORTSENTRY
= PORT_BANNER: testo da mostrare alla persona che cerca di connettersi
su una porta protetta (solo in Basic Mode)
startup.conf
Modalita' all'avvio di PORTSENTRY, letto se il programma viene lanciato
da /etc/init.d/portsentry.
E' diviso in due sezioni:
= TCP_MODE: modalita' di cntrollo delle porte TCP
puo' essere tcp, stcp, atcp
= UDP_MODE: modalita' di controllo delle porte UDP
puo' essere udp, sudp, audp
portsentry.ignore.static
Contiene una lista di IP che all'avvio di PORTSENTRY saranno messi nel
file portsentry.ignore, ovvero IP che non dovrebbero mai essere bloccati.
Generalmente ci si puo' mettere 127.0.0.1 (localhost), 0.0.0.0 e gli IP
locali (se si e' in una LAN).
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog: