Linux Audit - krótkie omówienie

Sun 03 October 2010 by admin

Informacje z działania sytemu dostarczane chociażby przez syslog'a, stanowią podstawę do określenia co i kiedy miało miejsce w systemie. Podobne zadanie spełnia omawiany w dzisiejszym wpisie auditd, pozwala on kontrolować niskopoziomowe operacje (kernel) wedle ustalonych przez nas reguł.

System audit dla Linux'a pozwala śledzić zmiany plików, katalogów oraz wywołania systemowe tzw. syscall'e. Konfiguracja domyślna samego daemon'a auditd z reguły wystarcza do typowych zadań, umiejscowiona jest naogół w /etc/audit/auditd.conf. Do ważniejszych ustawień możemy zaliczyć powiadomienia o kończącym się miejscu na dysku, przywidzianym na logowanie zdarzeń. Po uruchomieniu auditd załadowany jest zestaw reguł zawartych w /etc/audit/audit.rules, reguły zaś możemy podzielić na

podstawowe ustawienia

# usuwa wszystkie reguły
-D

# ustawienia buforow (dla bardziej obciążonych systemów - większe wartości)
-b 8192

# flaga enable. 0-wylaczony, 1-wlaczony, 2 -wlaczony i zablokowany, aby dokonać
# zmian wymagany reboot
-e 1

zestaw reguł służących do obserwowania działań na plikach i katalogach np.

# obserwowany jest plik /home/foo.bar, jeżeli użytkownik o id 500( -F auid)
# zmodyfikuje plik lub jego atrybuty (-p wa), zdarzenie zostanie to
# zaraportowane, w raportach pojawi się z kluczem foo (-k foo)

-w /home/foo.bar -p wa -F auid=500 -k foo

zestaw reguł odnoszący się do wywołań systemowych syscall:

# dodaj nową regułę na koniec (-a), która zaraportuje (always) na wyjściu (exit)
# z sycall'a (-S mkdir) dla użytkownika o id 500 (-F auid), w raportach
# pojawi się pod kluczem (-k mkdir)

-a exit,always -S mkdir -F auid=500 -k mkdir

opis wszystkich  parametrów dostępny w man auditctl

Wybór wymaganych syscall'i nie jest łatwym zadaniem, z pomocą nam jednak przychodzi narzędzie autrace wchodzące w skład auditd. Z jego pomocą możemy prześledzić działanie wybranego programu, wynikiem tej operacji bedą wpisy w pliku dziennika auditd. Przykładowe wywołanie autrace:

autrace /usr/bin/less /home/foo.bar

Przy czym przy korzystaniu z autrace, dobrze jest wyczyścić zestaw regułek.

Wreszcie gdy dobierzemy odpowiednie reguły, możemy przejść do etapu monitorowania. W przeglądaniu pliku dziennika pomagają nam następujące narzędzie  ausearch, aureport. W przypadku tego pierwszego przykładowe wywołanie ausearch, wyświetli nam wszystkie wpisy wygenerowane przez regułki oznaczone kluczem  foo:

ausearch -k foo

Drugie narzędzie aureport, zbiera wszystkie wpisy dziennika auditd, według podanych kategorii  i tak:

aureport -u

wyświetli informacje o poczynaniach użytkowników. Prezentowane wyniki są łatwo identyfikowalne (per kolumny), zatem możliwie jest przekazanie ich do innego narzędzia, do dalszej obróbki.

Narzędzie aureport i ausearch są dobrze udokumentowane i dóbr kryteriów prezentacji wyników ich działanie jest nieskomplikowany.

System dodatkowo możemy monitorować już od samego jego startu dodając do bootloader'a grub wpis audit=1.

Narzędzie auditd, mimo, że jest mało popularne okazuje się być bardzo użyteczne, dostarczając administratorowi cennych informacji nt. działania systemu, co w niektórych środowiskach pracy jest koniecznością.