Sicherheit · 7 min read · Jan 30, 2026
Chkrootkit-Portsentry-Howto
Chkrootkit-Portsentry-Howto
Version 1.0
Autor: Falko Timme
Dieses Dokument beschreibt, wie man chkrootkit und portsentry installiert. Es sollte (vielleicht mit leichten Änderungen bezüglich der Pfade usw.) auf allen *nix-Betriebssystemen funktionieren.
Chkrootkit “ist ein Tool, um lokal nach Anzeichen eines Rootkits zu suchen” (von http://www.chkrootkit.org).
“Die Sentry-Tools bieten Sicherheitsdienste auf Host-Ebene für die Unix-Plattform. PortSentry, Logcheck/LogSentry und HostSentry schützen vor Portscans, automatisieren die Protokollüberprüfung und erkennen verdächtige Anmeldeaktivitäten kontinuierlich” (von http://sourceforge.net/projects/sentrytools/).
Dieses Howto ist als praktische Anleitung gedacht; es behandelt nicht die theoretischen Hintergründe. Diese werden in vielen anderen Dokumenten im Web behandelt.
Dieses Dokument kommt ohne jegliche Gewährleistung!
1 Quellen besorgen
Wir benötigen die folgende Software: chkrootkit, portsentry und logcheck. Wir werden die Software aus dem /tmp-Verzeichnis installieren.
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 Chkrootkit installieren
mv chkrootkit.tar.gz /usr/local/
cd /usr/local/
tar xvfz chkrootkit.tar.gz
ln -s chkrootkit-0.43/ chkrootkit (ersetze 0.43 mit der richtigen Versionsnummer) cd chkrootkit/ make sense*
Sie finden jetzt das chkrootkit-Programm unter /usr/local/chkrootkit. Führen Sie es aus, indem Sie eingeben
cd /usr/local/chkrootkit/ && ./chkrootkit
Ihre Ausgabe wird ungefähr so aussehen:
| 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 |
Wenn ein Wurm, Rootkit usw. gefunden wird, wird dies durch den String INFECTED (in Großbuchstaben) angezeigt.
Wenn Sie die Ausgabe von chkrootkit einmal täglich um 3 Uhr morgens per E-Mail erhalten möchten, können Sie die folgende Zeile in die Cron-Datei von root einfügen (der Speicherort hängt von Ihrer Distribution ab; unter Debian befindet sie sich unter /var/spool/cron/crontabs/root; Sie finden sie möglicherweise auch unter /var/spool/cron/tabs/root oder etwas Ähnlichem):
0 3 (cd /usr/local/chkrootkit; ./chkrootkit 2>&1 | mail -s “chkrootkit output” [email protected])*
Dann führen Sie aus
chmod 600 /var/spool/cron/crontabs/root
/etc/init.d/cron restart
3 Portsentry installieren
cd /tmp
tar xvfz portsentry-1.2.tar.gz
cd portsentry_beta/
make linux
make install
Portsentry wird unter /usr/local/psionic/portsentry/ installiert.
Bearbeiten Sie /usr/local/psionic/portsentry/portsentry.conf und geben Sie die Ports an, die portsentry schützen soll:
| # Kommentieren Sie diese aus, wenn Sie wirklich genau sind: #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,[...]" # # Verwenden Sie diese, wenn Sie einfach nur informiert sein möchten: 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,[...]" # # Verwenden Sie diese für nur die Grundausstattung #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" |
Es sollten Ports sein, die im System nicht verwendet werden. Wenn Sie z.B. IMAP (Port 143 TCP) auf dem Server verwenden, sollten Sie 143 aus der obigen Liste entfernen. Der Rest von portsentry.conf ist gut kommentiert, aber normalerweise sollten die Standardwerte funktionieren.
Jetzt müssen wir ein Init-Skript für portsentry erstellen (/etc/init.d/portsentry). Wir werden portsentry im erweiterten Stealth-Modus ausführen, da dies die leistungsfähigste Methode ist, um Portscans zu erkennen:
| #!/bin/bash case "$1" in start) echo "Starte 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 läuft jetzt!" ;; stop) echo "Fahre Portsentry herunter..." 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 gestoppt!" ;; restart) $0 stop && sleep 3 $0 start ;; *) echo "Verwendung: $0 {start|stop|restart}" exit 1 esac exit 0 |
chmod 755 /etc/init.d/portsentry
Um portsentry beim Booten zu starten, tun Sie Folgendes:
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*
Jetzt starten wir portsentry:
/etc/init.d/portsentry start
Bitte beachten: Wenn Sie portsentry ausführen, könnte chkrootkit sich über eine infizierte Bindshell beschweren:
Checking bindshell… INFECTED (PORTS: 31337)
Das ist normal und nichts, worüber man sich Sorgen machen muss.
4 Logcheck installieren
cd /tmp
tar xvfz logcheck-1.1.1.tar.gz
cd logcheck-1.1.1/systems/
Jetzt ändern Sie die Variable SYSADMIN in logcheck.sh. SYSADMIN ist die Person, die die Ausgaben von logcheck per E-Mail erhält (das kann eine E-Mail-Adresse oder ein Benutzer auf dem System sein, auf dem Sie logcheck installieren):
| [...] # KONFIGURATIONSEKTION PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin # Logcheck ist vorkonfiguriert, um auf den meisten BSD-ähnlichen Systemen zu arbeiten, jedoch ist es # ein eher dummes Programm und benötigt möglicherweise etwas Hilfe, um auf anderen # Systemen zu funktionieren. Bitte überprüfen Sie die folgenden Befehls-Pfade, um sicherzustellen, dass sie # korrekt sind. # Person, an die die Protokollaktivitäten gesendet werden. [email protected] # Vollständiger Pfad zum Logtail-Programm. # Dieses Programm ist erforderlich, um dieses Skript auszuführen und wird mit dem Paket geliefert. LOGTAIL=/usr/local/bin/logtail [...] |
cd ../../
mkdir -p /usr/local/etc/tmp
make
Dies installiert logcheck unter /usr/local/etc.
Jetzt müssen wir einen Cron-Job erstellen, um logcheck regelmäßig auszuführen. Bearbeiten Sie die Cron-Datei von root (z.B. /var/spool/cron/crontabs/root, siehe Abschnitt 2 “Install Chkrootkit”) und geben Sie die folgende Zeile ein:
0 3 /usr/local/etc/logcheck.sh*
Dann führen Sie aus
chmod 600 /var/spool/cron/crontabs/root
/etc/init.d/cron restart
Dies wird logcheck einmal täglich um 3 Uhr morgens aufrufen. Es wird Sie nun über ungewöhnliche Systemereignisse, Sicherheitsverletzungen, Systemangriffe usw. informieren. Wenn Ihr System direkt dem Internet ausgesetzt ist, werden Sie feststellen, dass es viele bösartige Aktivitäten im Internet gibt, und Sie werden ein Gefühl dafür bekommen, warum Sicherheit sehr wichtig ist.
Links
Chkrootkit: http://www.chkrootkit.org/
Portsentry: http://sourceforge.net/projects/sentrytools/
Ursprünglicher Standort dieses Dokuments:
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.