Sicurezza · 7 min read · Jan 30, 2026

Chkrootkit-Portsentry-Howto

Chkrootkit-Portsentry-Howto

Version 1.0
Autore: Falko Timme

Questo documento descrive come installare chkrootkit e portsentry. Dovrebbe funzionare (forse con lievi modifiche riguardanti i percorsi ecc.) su tutti i sistemi operativi *nix.

Chkrootkit “è uno strumento per controllare localmente i segni di un rootkit” (da http://www.chkrootkit.org).

“Gli strumenti Sentry forniscono servizi di sicurezza a livello host per la piattaforma Unix. PortSentry, Logcheck/LogSentry e HostSentry proteggono contro le scansioni delle porte, automatizzano l’audit dei file di log e rilevano attività di accesso sospette in modo continuo” (da http://sourceforge.net/projects/sentrytools/).

Questo howto è inteso come una guida pratica; non copre le basi teoriche. Queste sono trattate in molti altri documenti sul web.

Questo documento viene fornito senza garanzia di alcun tipo!

1 Ottieni i sorgenti

Abbiamo bisogno del seguente software: chkrootkit, portsentry e logcheck. Installeremo il software dalla directory /tmp.

cd /tmp
wget –passive-ftp ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
wget http://heanet.dl.sourceforge.net/sourceforge/sentrytools/portsentry-1.2.tar.gz
wget http://heanet.dl.sourceforge.net/sourceforge/sentrytools/logcheck-1.1.1.tar.gz

2 Installa Chkrootkit

mv chkrootkit.tar.gz /usr/local/
cd /usr/local/
tar xvfz chkrootkit.tar.gz
ln -s chkrootkit-0.43/ chkrootkit (sostituisci 0.43 con il numero di versione corretto) cd chkrootkit/ make sense*

Ora troverai il programma chkrootkit sotto /usr/local/chkrootkit. Eseguilo digitando

cd /usr/local/chkrootkit/ && ./chkrootkit

Il tuo output apparirà simile a questo:

| ROOTDIR is `/` Checking `amd`... not found Checking `basename`... not infected Checking `biff`... not infected Checking `chfn`... not infected Checking `chsh`... not infected Checking `cron`... not infected Checking `date`... not infected Checking `du`... not infected Checking `dirname`... not infected Checking `echo`... not infected Checking `egrep`... not infected Checking `env`... not infected Checking `find`... not infected Checking `fingerd`... not found Checking `gpm`... not found Checking `grep`... not infected Checking `hdparm`... not found Checking `su`... not infected Checking `ifconfig`... not infected Checking `inetd`... not infected Checking `inetdconf`... not infected Checking `identd`... not found Checking `init`... not infected Checking `killall`... not infected Checking `ldsopreload`... not infected Checking `login`... not infected Checking `ls`... not infected Checking `lsof`... not infected Checking `mail`... not infected Checking `mingetty`... not found Checking `netstat`... not infected Checking `named`... not infected Checking `passwd`... not infected Checking `pidof`... not infected Checking `pop2`... not found Checking `pop3`... not found Checking `ps`... not infected Checking `pstree`... not infected Checking `rpcinfo`... not infected Checking `rlogind`... not found Checking `rshd`... not found Checking `slogin`... not infected Checking `sendmail`... not infected Checking `sshd`... not infected Checking `syslogd`... not infected Checking `tar`... not infected Checking `tcpd`... not infected Checking `tcpdump`... not infected Checking `top`... not infected Checking `telnetd`... not found Checking `timed`... not found Checking `traceroute`... not found Checking `vdir`... not infected Checking `w`... not infected Checking `write`... not infected Checking `aliens`... no suspect files Searching for sniffer's logs, it may take a while... nothing found Searching for HiDrootkit's default dir... nothing found Searching for t0rn's default files and dirs... nothing found Searching for t0rn's v8 defaults... nothing found Searching for Lion Worm default files and dirs... nothing found Searching for RSHA's default files and dir... nothing found Searching for RH-Sharpe's default files... nothing found Searching for Ambient's rootkit (ark) default files and dirs... nothing found Searching for suspicious files and dirs, it may take a while... /usr/lib/perl/5.6.1/auto/Test/Harness/.packlist /usr/lib/perl/5.6.1/auto/DB_File/.packlist Searching for LPD Worm files and dirs... nothing found Searching for Ramen Worm files and dirs... nothing found Searching for Maniac files and dirs... nothing found Searching for RK17 files and dirs... nothing found Searching for Ducoci rootkit... nothing found Searching for Adore Worm... nothing found Searching for ShitC Worm... nothing found Searching for Omega Worm... nothing found Searching for Sadmind/IIS Worm... nothing found Searching for MonKit... nothing found Searching for Showtee... nothing found Searching for OpticKit... nothing found Searching for T.R.K... nothing found Searching for Mithra... nothing found Searching for OBSD rk v1... nothing found Searching for LOC rootkit ... nothing found Searching for Romanian rootkit ... nothing found Searching for Suckit rootkit ... nothing found Searching for Volc rootkit ... nothing found Searching for Gold2 rootkit ... nothing found Searching for TC2 Worm default files and dirs... nothing found Searching for Anonoying rootkit default files and dirs... nothing found Searching for ZK rootkit default files and dirs... nothing found Searching for ShKit rootkit default files and dirs... nothing found Searching for AjaKit rootkit default files and dirs... nothing found Searching for zaRwT rootkit default files and dirs... nothing found Searching for anomalies in shell history files... nothing found Checking `asp`... not infected Checking `bindshell`... not infected Checking `lkm`... nothing detected Checking `rexedcs`... not found Checking `sniffer`... eth0: not promisc and no PF_PACKET sockets eth0:0: not promisc and no PF_PACKET sockets eth0:1: not promisc and no PF_PACKET sockets eth0:2: not promisc and no PF_PACKET sockets eth0:3: not promisc and no PF_PACKET sockets eth0:4: not promisc and no PF_PACKET sockets Checking `w55808`... not infected Checking `wted`... nothing deleted Checking `scalper`... not infected Checking `slapper`... not infected Checking `z2`... nothing deleted |

Se viene trovato un worm, un rootkit, ecc. questo è indicato dalla stringa INFETTED (in maiuscolo).

Se desideri ricevere l’output di chkrootkit una volta al giorno via email alle 3 del mattino, puoi inserire la seguente riga nel file cron di root (la posizione dipende dalla tua distribuzione; sotto Debian si trova sotto /var/spool/cron/crontabs/root; potresti trovarlo anche sotto /var/spool/cron/tabs/root o qualcosa di simile):

0 3 (cd /usr/local/chkrootkit; ./chkrootkit 2>&1 | mail -s “chkrootkit output” [email protected])*

Poi esegui

chmod 600 /var/spool/cron/crontabs/root
/etc/init.d/cron restart

3 Installa Portsentry

cd /tmp
tar xvfz portsentry-1.2.tar.gz
cd portsentry_beta/
make linux
make install

Portsentry sarà installato in /usr/local/psionic/portsentry/.

Modifica /usr/local/psionic/portsentry/portsentry.conf e specifica le porte che desideri che portsentry protegga:

| # Decommenta questi se sei davvero pignolo: #TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,513,514,515,540,635,1080,1524,2000,[...]" #UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,[...]" # # Usa questi se vuoi solo essere a conoscenza: TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,27665,31337,[...]" UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771,32772,32773,32774,[...]" # # Usa questi per solo le basi #TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,2000,12345,12346,20034,32771,32772,32773,32774,[...]" #UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,31337,54321" |

Dovrebbero essere porte che non sono in uso sul sistema. Ad esempio, se utilizzi IMAP (porta 143 TCP) sul server, dovresti rimuovere 143 dall’elenco sopra. Il resto di portsentry.conf è ben commentato, ma normalmente i valori predefiniti dovrebbero funzionare.

Ora dobbiamo creare uno script di init per portsentry (/etc/init.d/portsentry). Eseguiremo portsentry in modalità stealth avanzata poiché è il modo più potente per rilevare le scansioni delle porte:

| #!/bin/bash case "$1" in start) echo "Avvio di Portsentry..." ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -atcp' | grep -iv 'grep' > /dev/null if [ $? != 0 ]; then /usr/local/psionic/portsentry/portsentry -atcp fi ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -audp' | grep -iv 'grep' > /dev/null if [ $? != 0 ]; then /usr/local/psionic/portsentry/portsentry -audp fi echo "Portsentry è ora attivo e funzionante!" ;; stop) echo "Spegnimento di Portsentry..." array=(`ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry' | grep -iv 'grep' \ | awk '{print $1}' | cut -f1 -d/ | tr ' ' ' '`) element_count=${#array[@]} index=0 while [ "$index" -lt "$element_count" ] do kill -9 ${array[$index]} let "index = $index + 1" done echo "Portsentry fermato!" ;; restart) $0 stop && sleep 3 $0 start ;; *) echo "Uso: $0 {start|stop|restart}" exit 1 esac exit 0 |

chmod 755 /etc/init.d/portsentry

Per avviare portsentry all’avvio, esegui le seguenti operazioni:

ln -s /etc/init.d/ portsentry /etc/rc2.d/S20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc3.d/S20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc4.d/S20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc5.d/S20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc0.d/K20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc1.d/K20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc6.d/K20 portsentry*

Ora avviamo portsentry:

/etc/init.d/portsentry start

Si prega di notare: Se esegui portsentry chkrootkit potrebbe lamentarsi di una bindshell infetta:

Checking bindshell… INFETTED (PORTS: 31337)

Questo è normale e non c’è nulla di cui preoccuparsi.

4 Installa Logcheck

cd /tmp
tar xvfz logcheck-1.1.1.tar.gz
cd logcheck-1.1.1/systems/

Ora modifica la variabile SYSADMIN in logcheck.sh. SYSADMIN è la persona che riceverà l’output di logcheck via email (questo può essere un indirizzo email o un utente sul sistema dove installi logcheck):

| [...] # SEZIONE DI CONFIGURAZIONE PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin # Logcheck è pre-configurato per funzionare sulla maggior parte dei sistemi simili a BSD, tuttavia è # un programma piuttosto stupido e potrebbe aver bisogno di aiuto per funzionare su altri # sistemi. Si prega di controllare i seguenti percorsi dei comandi per assicurarsi che siano # corretti. # Persona a cui inviare l'attività di log. [email protected] # Percorso completo al programma logtail. # Questo programma è necessario per eseguire questo script e viene fornito con il pacchetto. LOGTAIL=/usr/local/bin/logtail [...] |

cd ../../
mkdir -p /usr/local/etc/tmp
make

Questo installerà logcheck sotto /usr/local/etc.

Ora dobbiamo creare un lavoro cron per eseguire logcheck periodicamente. Modifica il file cron di root (ad es. /var/spool/cron/crontabs/root, vedi sezione 2 “Installa Chkrootkit”) e inserisci la seguente riga:

0 3 /usr/local/etc/logcheck.sh*

Poi esegui

chmod 600 /var/spool/cron/crontabs/root
/etc/init.d/cron restart

Questo invocherà logcheck una volta al giorno alle 3 del mattino. Ti informerà ora su eventi insoliti del sistema, violazioni della sicurezza, attacchi al sistema, ecc. Se il tuo sistema è esposto direttamente a Internet, noterai che ci sono molte attività dannose su Internet e avrai una sensazione del perché la sicurezza sia molto importante.

Link

Chkrootkit: http://www.chkrootkit.org/

Portsentry: http://sourceforge.net/projects/sentrytools/

Posizione originale di questo documento:

http://www.falkotimme.com/howtos/chkrootkit_portsentry/

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.