Rkhunter (Rootkit Hunter) - skaner złośliwego oprogramowania

  • Data: 2014

Rkhunter jest narzędziem skanującym nasz system w poszukiwaniu złośliwego oprogramowania, głównie: rootkity, backdoory, exploity. Oprócz w/w czynności skrypt sprawdza m.in. pliki startowe, stan interfejsów sieciowych, konfigurację niektórych aplikacji (np. sshd).
Rkhunter działa z powodzeniem na wielu dystrybucjach Linuxa oraz systemach BSD.

Rkhunter dostępny jest w wielu dystrybucjach jako gotowy pakiet:

Instalacja skanera Rkhunter

  • Debian/Ubuntu : aptitude install rkhunter
  • RedHat/CentOS : yum install rkhunter

Jeśli chcemy mieć najświeższą wersrję możemy zainstalować ze źródeł.

  • Pobieramy najnowszą wersję: wget -O rkhunter.tar.gz http://sourceforge.net/projects/rkhunter/files/latest/download
  • Rozpakowujemy: tar -xzvf rkhunter.tar.gz
  • Przechodzimy do katalogu: cd rkhunter-*
  • Instalując oczywiście możemy użyć innych opcji, polecam plik README w katalogu files: ./installer.sh --layout default --install
  • Po udanej instalacji powinien wyświetlić się raport:
Checking system for:
 Rootkit Hunter installer files: found
 A web file download command: wget found
Starting installation:
 Checking installation directory "/usr/local": it exists and is writable.
 Checking installation directories:
  Directory /usr/local/share/doc/rkhunter-1.4.0: creating: OK
  Directory /usr/local/share/man/man8: creating: OK
  Directory /etc: exists and is writable.
  Directory /usr/local/bin: exists and is writable.
  Directory /usr/local/lib: exists and is writable.
  Directory /var/lib: exists and is writable.
  Directory /usr/local/lib/rkhunter/scripts: creating: OK
  Directory /var/lib/rkhunter/db: creating: OK
  Directory /var/lib/rkhunter/tmp: creating: OK
  Directory /var/lib/rkhunter/db/i18n: creating: OK
 Installing check_modules.pl: OK
 Installing filehashsha.pl: OK
 Installing stat.pl: OK
 Installing readlink.sh: OK
 Installing backdoorports.dat: OK
 Installing mirrors.dat: OK
 Installing programs_bad.dat: OK
 Installing suspscan.dat: OK
 Installing rkhunter.8: OK
 Installing ACKNOWLEDGMENTS: OK
 Installing CHANGELOG: OK
 Installing FAQ: OK
 Installing LICENSE: OK
 Installing README: OK
 Installing language support files: OK
 Installing rkhunter: OK
 Installing rkhunter.conf: OK
Installation complete

Instalując program ze źródeł powinniśmy doinstalować program Unhide. Rkhunter instalowany z oficjalnych repozytoriów debiana ma już w zależnościach program unhide. Unhide jest aplikacją, która wykrywa ukryte procesy w systemie. Jest dobrym uzupełnieniem skanera Rkhunter. Można go zainstalować z repozytoriów jak i samemu skompilować. Nie będę opisywać kompilacji, ponieważ na kilku systemach zakończyła się niepowodzeniem. Zainstalowana z repozytoriów działa prawidłowo. Można to sprawdzić sprawdzając logi:

root@jvm grep -A2 "hidden_procs" /var/log/rkhunter.log
[20:49:15] Info: Starting test name 'hidden_procs'
[20:49:15] Info: Found the 'unhide' command: /usr/sbin/unhide
[20:49:15] Info: Found 'unhide' command version: 20100201

Jeżeli po powyższym sprawdzeniu mamy inny komunikat to poszukajcie w logach: "Warning: The file '/usr/sbin/unhide' exists on the system, but it is not present in the rkhunter.dat file.". Wtedy należy jeszcze wykonać polecenie: rkhunter --propupd

Usuwanie skanera jeśli został zainstalowany ze źródeł jest dziecinnie proste, wystarczy wejść do katalogu ze źródłem i wydać polecenie: ./installer.sh --layout default --remove, prawidłowe usunięcie zwieńczy raport:

Starting uninstallation

Checking installation directory "/usr/local": it exists and is writable.
Removing installation files:
 Removing rkhunter.8: OK
 Removing /usr/local/bin/rkhunter: OK
 Removing /etc/rkhunter.conf: OK

Please remove any /etc/rkhunter.conf.* files manually.

Removing installation directories:
 Removing /usr/local/lib/rkhunter: OK
 Removing /usr/local/share/doc/rkhunter-1.4.0: OK
 Removing /var/lib/rkhunter: OK

Finished removing files. Please double-check.

Pierwsze uruchomienie

Przed uruchomieniem dokonamy aktualizacji następującymi komendami (co dokładnie oznaczają: man rkhunter):

rkhunter —update
rkhunter --propupd
#skanowanie, ewentualnie z opcją --sk (skip keypress)
rkhunter -c

Należy wspomnieć o możliwości bogatej konfiguracji skanera znajdującej się przeważnie w /etc/rkhunter.conf lub /usr/local/etc/rkhunter.conf

Nie zamierzam się rozpisywać o konfiguracji, każda opcja w pliku rkhunter.conf jest dość dobrze opisana. Prostym przykładem może być ostrzeżenie o możliwości zdalnego logowania się przez ssh na konto root. Jeśli jesteśmy świadomi zagrożenia i denerwuje nas to ostrzeżenie wystarczy w pliku konfiguracyjny zmienić z ALLOW_SSH_ROOT_USER=no na ALLOW_SSH_ROOT_USER=yes.

#ALLOW_SSH_ROOT_USER=no
Performing system configuration file checks
   Checking for SSH configuration file                      [ Found ]
   Checking if SSH root access is allowed                   [ Warning ]
   Checking if SSH protocol v1 is allowed                   [ Not allowed ]

#ALLOW_SSH_ROOT_USER=yes
Performing system configuration file checks
   Checking for SSH configuration file                      [ Found ]
   Checking if SSH root access is allowed                   [ Allowed ]
   Checking if SSH protocol v1 is allowed                   [ Not allowed ]

Cykliczne skanowanie systemu

Zapewnienie odpowiedniego poziomu bezpieczeństwa wymaga od nas systematyczności w działaniu. Tak jak powinno się dbać o aktualizację systemy tak powinniśmy go skanować. Twórcy Rkhunter wbudowali kilka opcji, które są przydatne do cyklicznego skanowania. Najlepiej posłużyć się cronem, pamiętając o podaniu pełnych ścieżek. W tym przypadku sprawdzamy: whereis rkhunter i whereis mail. Skrypt będzie uruchamiany codziennie, wymagany jest zainstalowany serwer smtp.
Tworzymy plik: /etc/cron.daily/rkhunter.sh, nadając uprawnienia: chmod 755 etc/cron.daily/rkhunter.sh

#!/bin/sh
(
/usr/local/bin/rkhunter --versioncheck
/usr/local/bin/rkhunter --update
/usr/local/bin/rkhunter --cronjob --report-warnings-only
) 2>&1 | /usr/bin/mail -s "RKhunter Raport" nasz_login@domena.pl

Rkhunter a OpenVZ

Nie miałem okazji testować skanera na innego typu wirtualizacjach ale na OpenVZ Rkhunter potrafi kolokwialnie ujmując "sypać ostrzeżeniami". W telegraficznym skrócie OpenVZ nie jest pełną wirtualizacją (m.in. wspólne jądro dla kontenerów). Błąd na który możemy się napotkać: Warning: The kernel modules directory '/lib/modules' is missing or empty. Wyeliminowanie ostrzeżenia wygląda następująco, edytujemy konfigurację: /etc/rkhunter.conf:

DISABLE_TESTS="suspscan hidden_procs deleted_files packet_cap_apps"
#dodajmy do stringa: os_specific
DISABLE_TESTS="suspscan hidden_procs deleted_files packet_cap_apps os_specific"

Rkhunter - fałszywe alarmy

Jak w tytule - zdarzają się. Jednym z popularniejszych jest wykrycie: Xzibit Rootkit, jeżeli mamy zainstalowany pakiet hdparm . Z moich doświadczeń wynika, że na pewno rkhunter będzie nas alarmował zainstalowany z oficjalnych repozytoriów Debiana 6, choć i na innych dystrybucjach Xzibit Rootkit potrafi się "przypałętać". Błąd na pewno nie występuje od wersji Rkhunter 1.4.0. Jest kilka rozwiązań, możemy to zignorować, odinstalować hdparm (głupie rozwiązanie) albo wykorzystać funkcjonalność rkhunter-a, mianowicie białe listy. W pliku konfiguracyjnym odnajdujemy RTKT_FILE_WHITELIST i po kolei podajemy ścieżki, o których Rkhunter fałszywie alarmował. Na przykład:

RTKT_FILE_WHITELIST="/etc/init.d/hdparm  /etc/init.d/.depend.boot"

Oczywiście musimy być pewni, dodając do białej listy.

Powrót »