Solaris Administrator's Security Guide

Zawartość rozdziału:

  1. Audyt i rejestrowanie zdarzeń

11. Audyt i rejestrowanie zdarzeń

Dzienniki zdarzeń są jednym z najważniejszych - z punktu widzenia bezpieczeństwa - elementów systemu. Tworzą one historię działań systemu, zwaną zapisem audytu. To dzięki nim można się dowiedzieć o nieprawidłowościach w działaniu systemu, próbach penetracji i włamań i to one powinny być jednym z najbardziej strzeżonych jego zasobów.


11.1. Wykorzystanie dodatkowego serwera logów

Z oczywistych względów dzienniki zdarzeń nie powinny znajdować się na tym samym serwerze, z którego pochodzą. Intruz, który włamie się na serwer może je łatwo zmodyfikować zacierając po sobie wszystkie ślady. Może również umieścić w nich fałszywe informacje wskazujące np. na kogoś innego.

Dlatego też:


11.2. Konfiguracja demona syslog

Demon syslog działa w oparciu o dwa parametry konfiguracyjne: facility i priority, których dokładny opis znajduje się w podręczniku man - syslog(3), a cała konfiguracja odbywa sie poprzez edycję pliku /etc/syslog.conf.

Możemy tak skonfigurować demon syslog, aby wszystkie najważniejsze informacje były kierowane do jednego centralnego pliku, bądź były kierowane do kilkunastu dzienników - jeden dziennik dla jednej aplikacji bądź demona systemowego. Pierwsza metoda jest wygodniejsza w przypadku pojedynczego serwera, gdy jednak zarządzamy kilkoma serwerami lepszym rozwiązaniem wydaje się być centralny serwer logów i wiele dzienników.

Przetestować powyższe ustawienia możemy za pomocą polecenia logger, np.:

/usr/ucb/logger -p facility.priority -t test "Test"
oraz przejrzeć zawartość odpowiedniego pliku (oczywiście zmienne: facility oraz priority należy zastąpić odpowiednimi wartościami, np. local0.debug).

11.3. /var/adm/loginlog

Domyślnie SUN Solaris ma wyłączoną opcję zbierania informacji o nieudanych próbach logowania. Ponieważ informacje tego typu są bardzo cenne (mogą np. świadczyć o ataku brutalnym na hasło użytkownika) należy taką możliwość włączyć:

cd /var/adm
touch loginlog
chgrp sys loginlog
chmod 600 loginlog

Powyższy plik powinien być sprawdzany przynajmniej raz dziennie, lub monitorowany przez narzędzia takie jak swatch.


11.4. Ustawienie "pułapek"

Wykorzystując program tcpwrapper lub xinetd należy ustawić kilka nieużywanych popularnych portów jako włączone (np. SMB, imap, login, http itp.) lecz bez żadnego prawdziwego demona, np.:

imap stream tcp nowait root /usr/local/bin/tcpd imap.trap 

w hosts.allow należy ustawić:

imap.trap: ALL

gdzie imap.trap nie istnieje lub jest np. skryptem shellowym (/usr/sbin/imap.trap) zawierającym tylko komendę wyjścia.

Ustawienie takiego zabezpieczenia na 3 czy 4 serwerach pozwoli stwierdzić, czy skanowana była cała podsieć, czy konkretna usługa, czy też wszystkie usługi.

Tego rodzaju pułapki warto stosować przede wszystkim na serwerze dns, mail lub www.


11.5. Skrypt test-cgi w przypadku serwera WWW

Jest to skrypt, który znajduje się standardowo np. w przypadku instalacji serwera Apache. Ponieważ dość często jest celem ataku zalecamy jego zmianę na skrypt, którego głównym zadaniem jest logowanie prób jego użycia.


11.6. Rotacja logów

Ponieważ standardowe mechanizmy rotacji logów pozostawiają dużo do życzenia, zalecamy stosowanie skryptów alternatywnych. Można np. skorzystać ze skryptów dostępnych w pakiecie PARCdaily.Z. Więcej szczegółów można znaleźć na stronie www.yassp.org.

Usunięcie standardowego mechanizmu rotacji logów z tablicy crontab konta root (/var/spool/cron/crontabs/root) wykonujemy poprzez skomentowanie poniższych linii:

#10 3 * * 0,4 /etc/cron.d/logchecker 
#10 3 * * 0 /usr/lib/newsyslog

Następnie należy zainstalować skrypt do rotacji logów stosując się do wytycznych znajdujących się w dołączonej do niego dokumentacji.


11.7. Monitorowanie logów

Ponieważ przeglądanie logów w przypadku dużych systemów może być zajęciem żmudnym i czasochłonnym, można je zautomatyzować poprzez użycie narzędzi, takich jak np. logcheck lub swatch.


11.8. Accounting

Accounting czyli monitorowanie systemu operacyjnego (dawniej używane do rozliczania użytkowników korzystających z zasobów systemu) jest kolejnym elementem przydatnym przy audycie. Umożliwia on zapisywanie danych o czasie uruchomienia i zakończenia procesów, liczbie zużytej pamięci, identifikatorze użytkownika uruchamiającego proces itp. W przypadku systemu Solaris, informacje te są zapisywane w pliku /var/adm/pacct.

Accounting włączamy poleceniem accton:

/usr/lib/acct/accton /var/adm/pacct

Informacje zapisane w pliku /var/adm/pacct odczytujemy za pomocą polecenia lastcomm. Polecenie to działa dość wolno, dlatego też lepszym rozwiązaniem jest użycie programu Spar. Pomimo wielu zalet process accounting posiada ograniczone możliwości. Potężnym narzędzie do audytu, którym dysponuje Solaris jest BSM.


11.9. BSM

SunSHIELD Basic Security Module umożliwia uruchomienie systemu na poziomie bezpieczeństwa C2, którego jednym z wymagań jest rejestrowanie wszystkich istotnych z punktu widzenia bezpieczeństwa zdarzeń wykonywanych przez użytkowników i system. BSM bardzo często wykorzystywany jest przez systemy IDS bazujące na hoście, np. RealSecure. BSM wymaga dokładnej konfiguracji, dlatego niezbędne jest skorzystanie z dokumentacji "SunSHIELD Basic Security Module Guide" z AnswerBook2. Należy zauważyć, że niewłaściwa konfiguracja może doprowadzić do szybkiego zapełnienia dysku.

Do odczytywania zdarzeń zarejestrowanych przez BSM służą polecenia: praudit i auditreduce. Ze względu na niezbyt wygodną obsługę tych komend zachęcamy również do zainstalowania dodatkowych skryptów (jak np. audit2info), które ułatwiają przeglądanie danych.

  1. Włączenie BSM
    init S
    cd /etc/security
    ./bsmconv
    
  2. Włączenie logowania argumentów

    Włączamy rejestrowania argumentów poleceń wykonywanych przez użytkowników i system poprzez dodanie do pliku /etc/security/audit_startup polecenia:

    auditconfig -setpolicy +argv
  3. Logowanie wszystkich komend użytkowników

    Aby zapisywać wszystkie komendy wykonywane przez użytkowników, do /etc/security/audit_control wstawiamy:

    flags:ex
  4. Logowanie działań superużytkownika

    Aby dokładnie rejestrować działania superużytkownika, do pliku /etc/security/audit_user dodajemy:

    root:lo,ex,fd,fc,fm,fw:no
  5. Restartujemy serwer
    sync
    reboot
    
  6. Przetwarzanie danych

    W celu przetworzenia danych rejestrowanych przez BSM do postaci czytelnej należy użyć polecenia:

    auditreduce | praudit > ascii_plik.txt

Tak przygotowany plik możemy poddać obróbce przy pomocy skryptu audit2info. Skrypt ten wymaga również zainstalowania GNU awk, który jest dostępny na stronie www.sunfreeware.com.


11.10. IDS

Ponieważ sam system operacyjny nie ma możliwości rejestrowania prób połączeń TCP/IP, umożliwia to osobom z zewnątrz skanowanie portów w celu wyszukania otwartych usług, wersji serwisów, ewentualnych dziur czy uruchamiania programów złośliwych bez żadnego odnotowania w systemie.

Dlatego podstawowym narzędziem każdego administratora powinien być używanie narzędzi takich jak snort lub iplogger, ewentualnie narzędzi alternatywnych (patrz punkt: 1.19)




Poprzedni rozdział Spis treści Bibliografia