rkhunter (Rootkit Hunter) auf Debian installieren

Hinweis: Wir haben in diesem Artikel möglicherweise Provisions-Links verwendet und sie durch (*) gekennzeichnet. Erfolgt über diese Links eine Bestellung, erhält maffert.net eine Provision. Es entstehen für Sie keine Nachteile beim Kauf oder Preis.

Auch unter Linux (Debian) gibt es bösartige Software. Ein Tool das den Server nach so genannten Rootkits durchsucht, heißt rkhunter (Rootkit Hunter) und ist relativ schnell, einfach installiert und konfiguriert.

rkhunter sollte man nicht über das Repository installieren, da es bei der Version zu Updateproblemen kommt. Also installieren wir rkhunter manuell!

Manuelle Installation von rkhunter:

  1. Benötigte Pakete installieren:
    apt-get install binutils libreadline5 libruby1.8 ruby ruby1.8 unhide mailutils
  2. Zu aller erst sollten wir rkhunter von Sourceforge (http://sourceforge.net/projects/rkhunter/) herunterladen. Zum Zeitpunkt der Anleitung hier, ist rkhunter-1.4.2.tar.gz aktuell:
    wget http://skylink.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz
  3. rkhunter entpacken, in den Ordner wechseln und die Installation starten:
    tar zxf rkhunter-1.4.2.tar.gz
    cd rkhunter-1.4.2/
    ./installer.sh --layout /usr --install
  4. Überprüfen ob auch wirklich die aktuelle Version installiert wurde:
    rkhunter --versioncheck
  5. rkhunter updaten:
    rkhunter --update && rkhunter --propupd
  6. nun in der Konfigurationsdatei (nano /etc/rkhunter.conf) einstellen, das er uns bei Warnungen informiert:
    MAIL-ON-WARNING="root"
  7. Cronjob erstellen (nano /etc/cron.daily/rkhunter) mit folgendem Inhalt:
    #!/bin/sh
    
    RKHUNTER=/usr/bin/rkhunter
    
    test -x $RKHUNTER || exit 0
    
    # source our config
    . /etc/default/rkhunter
    
    if [ -z "$NICE" ]; then
        NICE=0
    fi
    
    $RKHUNTER --versioncheck
    $RKHUNTER --update
    
    case "$CRON_DAILY_RUN" in
         [Yy]*)
            OUTFILE=`mktemp` || exit 1
            /usr/bin/nice -n $NICE $RKHUNTER --cronjob --report-warnings-only --appendlog > $OUTFILE
            if [ -s "$OUTFILE" ]; then
              (
                echo "Subject: [rkhunter] $(hostname -f) - Daily report"
                echo "To: $REPORT_EMAIL"
                echo ""
                cat $OUTFILE
              ) | /usr/sbin/sendmail $REPORT_EMAIL
            fi
            rm -f $OUTFILE
            ;;
          *)
           exit 0
           ;;
    esac
  8. die Cronjobdatei ausführbar machen:
    chmod +x /etc/cron.daily/rkhunter
  9. Default Datei für den rkhunter Cronjob (nano /etc/default/rkhunter) mit folgendem Inhalt erstellen. Hier kann bei „REPORT_EMAIL=“root““ definiert werden, wer den täglichen Report bekommt:
    # Defaults for rkhunter cron jobs
    # sourced by /etc/cron.*/rkhunter
    
    #
    # This is a POSIX shell fragment
    #
    
    # Set this to the email address where reports and run output should be sent
    REPORT_EMAIL="root"
    
    # Set this to yes to enable rkhunter weekly database updates
    CRON_DB_UPDATE="yes"
    
    # Set this to yes to enable reports of weekly database updates
    DB_UPDATE_EMAIL="no"
    
    # Set this to yes to enable rkhunter daily runs
    CRON_DAILY_RUN="yes"
    
    # Nicenesses range from -20 (most favorable scheduling) to 19 (least favorable).
    NICE="0"
  10. Testen ob der Cronjob soweit funktioniert:
    sh /etc/cron.daily/rkhunter
  11. das wärs. rkhunter wird nun jeden Tag einmal ausgeführt! Jetzt nocht weiter unten evtl Sonstiges beachten!

Alte Version über das Repository installieren:

  1. rkhunter installieren:
    apt-get install rkhunter
  2. Konfigurationsdatei öffnen:
    nano /etc/rkhunter.conf
  3. damit der Administrator E-Mails bekommt muss nach „MAIL-ON-WARNING=“““ gesucht werden und wie zum Beispiel angepasst werden:
    MAIL-ON-WARNING="root"
  4. Cronjob Datei öffnen:
    nano /etc/cron.daily/rkhunter
  5. und Versionsprüfung und Update hinzufügen (zwischen fi und case „$CRON_DAILY_RUN“):
    /usr/bin/rkhunter --versioncheck
    /usr/bin/rkhunter --update

    das sollte dann schlussendlich so aussehen:

    #!/bin/sh
    
    RKHUNTER=/usr/bin/rkhunter
    
    test -x $RKHUNTER || exit 0
    
    # source our config
    . /etc/default/rkhunter
    
    if [ -z "$NICE" ]; then
        NICE=0
    fi
    
    /usr/bin/rkhunter --versioncheck
    /usr/bin/rkhunter --update
    
    case "$CRON_DAILY_RUN" in
         [Yy]*)
            OUTFILE=`mktemp` || exit 1
            /usr/bin/nice -n $NICE $RKHUNTER --cronjob --report-warnings-only --appendlog > $OUTFILE
            if [ -s "$OUTFILE" ]; then
              (
                echo "Subject: [rkhunter] $(hostname -f) - Daily report"
                echo "To: $REPORT_EMAIL"
                echo ""
                cat $OUTFILE
              ) | /usr/sbin/sendmail $REPORT_EMAIL
            fi
            rm -f $OUTFILE
            ;;
          *)
           exit 0
           ;;
    esac
  6. nun noch testen ob rkhunter funktioniert:
    sh /etc/cron.daily/rkhunter

Sonstiges:

Fehlermeldungen unterdrücken:

Wenn eingestellt ist, das root sich direkt via SSH einloggen darf (ohne erst durch ein extra Benutzer), dann kommt diese Warnung:

Warning: The SSH and rkhunter configuration options should be the same:
         SSH configuration option 'PermitRootLogin': yes
         Rkhunter configuration option 'ALLOW_SSH_ROOT_USER': no

Diese Meldung kann man unterdrücken wenn man in der Konfigurationsdatei „/etc/rkhunter.conf“ die Zeile:

ALLOW_SSH_ROOT_USER=no
von no auf yes umstellt
ALLOW_SSH_ROOT_USER=yes

Es kann auch passieren das solche eine Warnungen erscheint:

Warning: Hidden directory found: /dev/.udev
Warning: Hidden directory found: /dev/.initramfs

Hier muss man dann in der Konfigurationsdatei (/etc/rkhunter.conf) einstellen, das er die ignorieren soll (einfach dort die # entfernen):

#
# Allow the specified hidden directories.
# One directory per line (use multiple ALLOWHIDDENDIR lines).
#
#ALLOWHIDDENDIR=/etc/.java
ALLOWHIDDENDIR=/dev/.udev
#ALLOWHIDDENDIR=/dev/.udevdb
#ALLOWHIDDENDIR=/dev/.udev.tdb
#ALLOWHIDDENDIR=/dev/.static
ALLOWHIDDENDIR=/dev/.initramfs
#ALLOWHIDDENDIR=/dev/.SRC-unix
#ALLOWHIDDENDIR=/dev/.mdadm

weitere Warnungen:

Warning: The command '/usr/sbin/adduser' has been replaced by a script: /usr/sbin/adduser: a /usr/bin/perl script text executable
Warning: The command '/usr/bin/ldd' has been replaced by a script: /usr/bin/ldd: Bourne-Again shell script text executable
Warning: The command '/bin/which' has been replaced by a script: /bin/which: POSIX shell script text executable

Hier muss SCRIPTWHITELIST angepasst werden, z.B. so:

SCRIPTWHITELIST=/usr/sbin/adduser
SCRIPTWHITELIST=/usr/bin/ldd
SCRIPTWHITELIST=/bin/which

oder:

Warning: Application 'gpg', version '1.4.9', is out of date, and possibly a security risk.
Warning: Application 'openssl', version '0.9.8g', is out of date, and possibly a security risk.
Warning: Application 'sshd', version '5.1p1', is out of date, and possibly a security risk.

dann muss „APP_WHITELIST“ auskommentiert und folgendes so geändert werden:

APP_WHITELIST="gpg:1.4.9 openssl:0.9.8g sshd:5.1p1"

oder

Warning: No output found from the lsmod command or the /proc/modules file:
         /proc/modules output:
         lsmod output:

dann muss bei „DISABLE_TESTS“ noch „os_specific“ hinzugefügt werden, wie zum Beispiel so:

DISABLE_TESTS=suspscan hidden_ports hidden_procs deleted_files packet_cap_apps os_specific

und bei

Warning: The file properties have changed:
         File: /etc/rkhunter.conf
         Current hash: c65f5db297791babedd78a08ef5e5db0c5d73d5c
         Stored hash : 0c24cf86da44da5a1fec1ac70a042f151cba5ecc
         Current size: 44842    Stored size: 44596
         Current file modification time: 1400349457 (17-May-2014 19:57:37)
         Stored file modification time : 1400345132 (17-May-2014 18:45:32)

muss nach dem ganzen konfigurieren zum Schluss noch folgendes ausgeführt werden:

rkhunter --propupd

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert