ubuntuusers.de

rkhunter

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

rkhunter 🇬🇧 (Rootkit Hunter) ist ein Linux-Werkzeug, welches nach Rootkits, Hintertüren und möglichen lokalen Exploits sucht. Dabei vergleicht es vorhandene Dateien anhand von MD5-hashes mit kompromittierten Dateien, sucht nach von Rootkits angelegten Ordnern, falschen Dateirechten, versteckten Dateien, verdächtigen Strings in Kernelmodulen und führt eine Reihe weiterer Tests durch.

rkhunter richtet sich dabei an professionelle Linux-Administratoren, wobei das Programm natürlich jeder benutzen kann. Um die Ausgabe verstehen zu können, bedarf es aber mindestens Grundkenntnissen der tieferen Schichten des Betriebssystems.

Installation

Aus den Paketquellen

Das Programm kann aus den Paketquellen von Ubuntu über das Paket

  • rkhunter

Paketliste zum Kopieren:

sudo apt-get install rkhunter 

Oder mit apturl installieren, Link: apt://rkhunter

installiert [1] werden.

Wer automatische Scan-Läufe und E-Mail-Benachrichtigungen erhalten möchte, muss noch folgendes Paket installieren:

  • mailutils

Paketliste zum Kopieren:

sudo apt-get install mailutils 

Oder mit apturl installieren, Link: apt://mailutils

Manuelle Installation

Zuerst lädt man sich das aktuelle rkhunter-Paket (Datei mit der Endung tar.gz) von Sourceforge 🇬🇧 herunter und entpackt [5] es in ein Verzeichnis seiner Wahl. Jetzt installiert man rkhunter vom Terminal [6] aus mit:

sudo ./installer.sh --layout /usr/local --install 

Paketsystem einbeziehen

rkhunter kann vom Paketsystem Gebrauch machen um z.B. die HASH-Werte für die Dateien aus dem Paketsystem zu beziehen. Standardmäßig verwendet rkhunter das Paketsystem nicht. Um das zu ändern muss man in der Datei /etc/rkhunter.conf den Eintrag

PKGMGR=NONE 

auf

PKGMGR=DPKG 

Datenbank aufbauen

Bevor rkhunter verwendet werden kann, muss noch dessen Datenbank aufgebaut werden.

Durch den Parameter --propupd werden die Hash-Werte (SHA256) für "known-good"-Dateien vom momentanen System erstellt. Bei einem Scan werden dann die gefundenen Werte mit diesen Hash-Werten verglichen. Dabei gilt zu beachten, dass dies nur funktioniert, wenn das System zu dem Zeitpunkt der Durchführung des Updates durch --propupd noch nicht kompromittiert war. Es empfiehlt sich also, diesen Schritt auf einer neuen Ubuntu-Installation anzuwenden, da somit sichergestellt wird, dass die Hash-Werte auch richtig sind.

sudo rkhunter --propupd  

Benutzung

Jetzt kann man das komplette System mit folgendem Befehl scannen:

sudo rkhunter -c 
Einige Parameter
-c kompletter System-Scan
--rwo gibt nur Befunde aus ("report warnings only"); vermeidet überlange Ausgabe-Listen...
--display-logfile zeigt eine Zusammenfassung des Scans am Ende
--skip-keypress man muss zwischen den einzelnen Scan-Abschnitten nicht mehr Enter drücken
--propupdführt ein Update der known-good Hash-Datenbank durch (nur bei der manuell installierten Version bzw. > 1.3 möglich )

Eine vollständige Liste der möglichen Parameter findet man in den manpages von rkhunter.

Achtung!

Alleine durch die Benutzung von rkhunter kann nicht garantiert werden, dass sich nicht doch ein Rootkit auf dem System befindet. Die Anwendung von nur einem einzigen Tool ist nicht sehr effektiv, da ein Autor sein Rootkit dagegen immun gemacht haben könnte. Es sollten immer noch weitere Tests durchgeführt werden, wie zum Beispiel mit chkrootkit bzw. andere Maßnahmen vorgenommen werden. Des Weiteren sollte rkhunter, um dessen Integrität und damit die Verlässlichkeit sicherzustellen, immer von einem 100%ig unkompromittierten System ausgeführt werden, wie z.B. einer Live-CD.

Automatische Scans und Signatur-Aktualisierungen per Cron-Job einrichten

Gerade bei Servern ist es nicht immer möglich, von einer Live-CD zu booten und dann nach Rootkits zu fanden. Hierfür haben die Programmierer die Möglichkeit geschaffen, sowohl rkhunter täglich als auch die Signatur-Aktualisierung automatisch als Cron-Job auszuführen.

Achtung!

Bevor man rkhunter als Cron-Job einplant, sollte man sich jedoch sicher sein, das Programm auf einem nicht kompromittierten System zu installieren, um die entsprechenden MD5-Fingerprints ("Checksummen") anzulegen (zum Beispiel direkt nach einer Neuinstallation).

Nach der Installation von rkhunter sollte man zuerst

sudo rkhunter --propupd  

ausführen, um das Programm auf den aktuellen Stand zu bringen.

sudo rkhunter -c  

startet dann einen umfassenden interaktiven Prüflauf. Hierbei kann es durchaus zu Fehlalarmen kommen. Diese überprüft man in der Logdatei /var/log/rkhunter.log und passt gegebenenfalls die Konfigurationsdatei /etc/rkhunter.conf an, zum Beispiel, um inetd-Dienste wie „swat“ hinzuzufügen.

Falsche Warnungen durch Whitelist-Einträge beseitigen

Nach dem ersten Scan sollte man /var/log/rkhunter.log genau ansehen und alle Warnungen genauer untersuchen.

Dann kann man die Konfigurations-Datei /etc/rkhunter.conf so ändern, dass keine Warnungen mehr kommen ("Whitelisting").

Das folgendes Skript (das aus der FAQ von rkhunter entstanden ist) vereinfacht diese Arbeit, indem es für jede in der Log-Datei vorhandenen Warnung eine Whitelist-Konfigurations-Zeile am Bildschirm ausgibt.

Für die falschen Warnungen kopiert man dann die passenden Konfigurations-Zeilen ans Ende der Konfigurations-Datei.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/sh
# http://rkhunter.cvs.sourceforge.net/viewvc/rkhunter/rkhunter/files/FAQ
LOG=/var/log/rkhunter.log
cat <<EOF
6. WHITELISTING EXAMPLES
========================

6.1) After Rootkit Hunter has run you may encounter items in the log
     file you would like to whitelist. First verify that the entries
     are safe to add. The results of running these commands can be
     added to your 'rkhunter.conf' configuration file. Please
     adjust the commands, and the location of your 'rkhunter.log' log
     file, and verify the results before adding them. Do not automate
     adding whitelist entries to your configuration file.

EOF

echo '
     Allow script replacements ("properties" test):'
     awk -F"'" '/replaced by a script/ {print "SCRIPTWHITELIST="$2}' $LOG
echo '
     Allow processes using deleted files ("deleted_files" test):'
     awk '/Process: / {print "ALLOWPROCDELFILE="$3}' $LOG | sort -u
echo '
     Allow Xinetd services:'
     awk '/Found enabled xinetd service/ {print $NF}' $LOG |
      xargs -iX grep -e "server[[:blank:]]" 'X' | awk '{print "XINETD_ALLOWED_SVC="$NF}'
echo '
     Allow packet capturing applications ("packet_cap_apps" test):'
     awk -F"'" '/is listening on the network/ {print "ALLOWPROCLISTEN="$2}' $LOG
echo '
     Allow "suspicious" files ("filesystem" test):'
     grep '^\[..:..:..\][[:blank:]]\{6\}.*/dev/shm/.*:' $LOG |
      awk '{print "ALLOWDEVFILE="$2}' | sed -e "s|:$||g"
echo '
     Allow hidden directories ("filesystem" test):'
     awk '/Warning: Hidden directory/ {print "ALLOWHIDDENDIR="$6}' $LOG
echo '
     Allow hidden files ("filesystem" test):'
     awk '/Warning: Hidden file/ {print "ALLOWHIDDENFILE="$6}' $LOG |
      sed -e "s|:$||g"

Hinweis: Diese Skript-Datei verändert nichts, sie zeigt nur die Zeilen an, welche dann manuell in die Konfigurations-Datei kopiert werden können!

cron-Job und E-Mail-Benachrichtigung aktivieren

Wer aus den Paketquellen installiert hat, muss die cron-Job-Datei /etc/cron.daily nicht mehr manuell modifieren (das hat die Installation bereits erledigt).

Bei einer manuellen Installation von rkhunter kann man rkhunter zur regelmäßigen automatischen Ausführung als Cron-Job in /etc/crontab eintragen:

10 3    * * *   root    /usr/bin/rkhunter --cronjob 

rkhunter kann per E-Mail Status-Meldungen schicken. Man erhält z. B. täglich eine E-Mail über die Scan-Ergebnisse, die ungefähr so aussieht (bei Auffälligkeiten):

1
2
3
4
5
6
7
8
9
From: root@localhost
Subject: [rkhunter] <ComputerName> - Daily report

Warning: The command '/usr/bin/unhide.rb' has been replaced by a script: /usr/bin/unhide.rb: Ruby script, ASCII text
Warning: Suspicious file types found in /dev:
         /dev/.udev/rules.d/root.rules: ASCII text
Warning: Hidden directory found: /etc/.java: directory 
Warning: Hidden directory found: /dev/.udev: directory 
Warning: Hidden file found: /dev/.initramfs: symbolic link to `/run/initramfs'

Die folgende Beschreibung funktioniert nur auf dem lokalen Rechner mit lokalen E-Mails und benötigt das Installations-Paket mailutils (siehe Installation aus den Paket-Quellen). Wie man rkhunter-E-Mails über das Firmen- oder Internet verschickt, wäre hier zu kompliziert zu beschreiben (Stichworte: sendmail/MTA einrichten).

Folgende rkhunter-Konfigurations-Datei muss außerdem einmalig angepasst werden (dazu eine Konsole öffnen):

sudo gedit /etc/default/rkhunter 

Dort die vorhandenen Eigenschaften für cron-Jobs wie folgt setzen:

1
2
3
4
5
CRON_DAILY_RUN="true"
CRON_DB_UPDATE="true"
DB_UPDATE_EMAIL="true"
REPORT_EMAIL="<username>@localhost" # <username> durch den Login-Namen des Haupt-Benutzers ersetzen (ermitteln z. B. mit dem Befehl "whoami")
APT_AUTOGEN="true"

Testen der E-Mail-Benachrichtigung durch manuelles Ausführen des cron-Job-Skripts (nur bei Installation von rkhunter über das Installations-Paket vorhanden!):

sudo /etc/cron.daily/rkhunter 

Anmerkung: Zum Lesen der E-Mail muss ein E-Mail-Leseprogramm eingerichtet werden (siehe Beschreibung im nächsten Abschnitt).

Alternativ kann man die E-Mails in der Konsole mit folgendem Befehl lesen:

mail 

Optional: Die E-Mail-Benachrichtigung, dass Warnungen gefunden wurden, sollte deaktiviert werden, da sie keine Details über die gefundenen Warnungen enthält (im Gegensatz zur obigen E-Mail-Benachrichtigung):

sudo gedit /etc/rkhunter.conf 

Dort die allgemeinen rkhunter-Einstellungen wie folgt setzen:

1
MAIL-ON-WARNING=""

Lokales E-Mail-Postfach zum Lesen der rkhunter-Nachrichten einrichten

rkhunter kann Befunde und Status-Meldungen wie Signatur-Aktualisierungen per E-Mail mitteilen.

Wenn man diese Option wie im vorigen Abschnitt beschrieben aktiviert hat, muss man noch den Zugriff auf das lokale Postfach im E-Mail-Leseprogramm einrichten.

Die folgende Beschreibung gilt für das E-Mail-Leseprogramm Evolution:

Menü Bearbeiten > Einstellungen > E-Mail-Konten

Dort ein neues Konto anlegen mit folgenden Einstellungen (wobei <username> durch den Benutzer-Namen zu ersetzen ist, an den die E-Mails gemäß der Konfiguration im vorherigen Abschnitt geschickt werden):

1
2
3
Benutzer-Name: "<username>@thisComputer"
Server Typ: Standard unix mbox spool file
Datei: /var/mail/<username>

Hinweis: <username> ist durch den Login-Namen des Haupt-Benutzers ersetzen (ermitteln z. B. mit dem Befehl "whoami")

Falls die Datei var/mail/<username> noch nicht vorhanden und damit nicht auswählbar ist, schickt man einmalig eine E-Mail an den Benutzer:

echo "Meine erste E-Mail..." | mail -s "Nummer 1" <username> 

Jetzt kann man die E-Mails regelmäßig ansehen und lesen.

Optional: Lokale E-Mails an root weiterleiten

Hinweis:

Es empfiehlt sich generell, eine E-Mail-Weiterleitung der lokalen root-E-Mails zu dem <username> einzurichten, um keine E-Mails zu verpassen, die von anderen Diensten geschickt werden (z. B. Hinweis auf gehäufte Fehler bei Festplatten-Zugriffen).

Eine E-Mail-Weiterleitung von root-E-Mails wird so eingerichtet:

sudo gedit /root/.forward 

Dort die (lokale!) Ziel-E-Mail-Adresse eintragen:

1
<username>@localhost

Zum Testen schickt man von der Konsole eine E-Mail an den root-Benutzer und prüft, ob sie im E-Mail-Postfach ankommt:

echo "lorem ipsum" | mail -s "Test-Mail an root" root 

Weitere Sicherheits-Maßnahmen

Es ist auch sinnvoll, regelmäßig mit einem weiteren Scanner wie chkrootkit nach Auffälligkeiten zu suchen.

Aktualiserungen

Die folgenden Befehle funktioneren in Debian und Ubuntu nicht, diese wurde als Reaktion auf Sicherheitsprobleme deaktiviert:

sudo rkhunter --update
sudo rkhunter --versioncheck 

Diese Revision wurde am 21. Juli 2019 11:50 von sebix erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit