Rkhunter (Rootkit Hunter) - skaner złośliwego oprogramowania
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 »