Linux Auditd rejestruje zdarzenia związane z bezpieczeństwem bezpośrednio z jądra i zapewnia mi kompletną ścieżkę audytową dotyczącą logowań, zmian w plikach, wykonywania poleceń oraz wywołań systemowych. Prawidłowo Dzięki tej konfiguracji wcześnie wykrywam ataki, spełniam wymogi zgodności, takie jak ISO 27001 czy PCI DSS, oraz przeprowadzam analizy incydentów w sposób zapewniający wiarygodność dowodową.
Punkty centralne
To Celowo przedstawiam ten przegląd w zwięzły, praktyczny sposób, bez frazesów, abyś od razu zrozumiał, jak definiować zasady audytu, chronić logi i wyciągać wnioski. I Wymień najważniejsze elementy, typowe zastosowania, przydatne zasady oraz źródła błędów, które w wielu środowiskach prowadzą do powstania „martwych punktów”. Więc od razu widać, które ustawienia w pliku auditd.conf mają znaczenie i jakie narzędzia są dostępne do analizy. Następnie Każdy temat omawiam bardziej szczegółowo, podając przykłady, konkretne zalecenia oraz tabelę zawierającą kluczowe parametry. Tak więc uda ci się przejść od etapu „Auditd działa“ do etapu „Auditd dostarcza przydatne sygnały dotyczące bezpieczeństwa“.
- Ścieżka audytu: pełna identyfikowalność działań mających wpływ na bezpieczeństwo
- Zasady: konkretne pliki krytyczne, execve, uprawnienia i konfiguracje
- Ochrona dziennika: rotacja, wyzwalacz pamięci, reakcja w przypadku wąskich gardeł
- Zdalny: scentralizowane gromadzenie danych za pośrednictwem protokołów TCP/TLS oraz integracja z systemem SIEM
- Analiza: ausearch, aureport, przejrzyste klucze i uporządkowana dokumentacja
Linux Auditd w koncepcji bezpieczeństwa
Auditd uzupełnia klasyczne logi systemowe, skupiając się konkretnie na działaniach związanych z bezpieczeństwem i rejestrując zdarzenia za pośrednictwem interfejsu jądra. Der Daemon domyślnie zapisuje te zdarzenia w pliku /var/log/audit/audit.log i rejestruje, który użytkownik wykonał jaką czynność i w jakim momencie. W ten sposób mogę szybko sprawdzić potencjalne nieprawidłowości, na przykład niezamierzone zmiany w /etc/ssh/sshd_config lub plików wrażliwych, takich jak /etc/shadow. Na stronie W środowiskach podlegających regulacjom zapewniam w ten sposób dowody naruszeń wytycznych i spełniam wymagania dotyczące rzetelnego protokołowania. Naprzeciwko W porównaniu z klasycznymi danymi z dzienników lub syslogów, Auditd zapewnia dogłębny, skoncentrowany na bezpieczeństwie wgląd, który ma kluczowe znaczenie dla analizy ataków.
Architektura: jądro, demon, narzędzia
Das System audytowy dzieli się na podsystem jądra służący do rejestrowania oraz usługę przestrzeni użytkownika audyt do przechowywania danych oraz narzędzi do zarządzania i analizy. O auditctl ustalam reguły w czasie wykonywania lub ładuję reguły trwałe podczas uruchamiania /etc/audit/rules.d/*.rules. Z ausearch filtruję zdarzenia według czasu, użytkownika, klucza lub pliku, podczas gdy aureport generuje zwięzłe raporty. Więc Łączę szczegółowo kontrolowane gromadzenie danych z szybką analizą i zapewniam pełną prześledzalność ścieżki audytu. Ważne jest spójną nomenklaturą dotyczącą -k Klucze, aby późniejsze zapytania działały poprawnie.
Instalacja i aktywacja
Na stronie Instaluję RHEL/CentOS audyt za pośrednictwem dnf install audit lub yum install audit, w systemie Debian/Ubuntu używam apt install auditd audispd-plugins. Według Po uruchomieniu instalacji uruchamiam i aktywuję usługę za pomocą systemctl start auditd oraz systemctl enable auditd, status sprawdzam za pomocą systemctl status auditd. Jak tylko Gdy podsystem audytowy i usługa działają, zdarzenia trafiają zgodnie z regułami do /var/log/audit/audit.log. I Sprawdź poprawność działania poprzez ukierunkowany dostęp do monitorowanego pliku, a następnie wyszukaj zdarzenie za pomocą ausearch -k keyname. Dla Aby zapewnić spójny start przy każdym uruchomieniu systemu, dbam o to, by reguły trwałe były dostępne i ładowały się poprawnie.
Wcześniejszy start, zaległości i ochrona przed przepisami
Do Aby nie przegapić wczesnych zdarzeń związanych z uruchamianiem systemu, aktywuję podsystem audytowy już podczas uruchamiania jądra. W związku z tym ustawiam parametry jądra i odpowiednią wielkość bufora zdarzeń, aby zdarzenia nie zostały utracone w fazie uruchamiania. Ponadto Po załadowaniu zabezpieczam bazę reguł przed manipulacją.
- Parametry jądra:
audit=1 audit_backlog_limit=8192w/etc/default/grubdopełnić, a następnieupdate-grub(Debian/Ubuntu) lubgrub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS). - Zaległości w zakresie zasad: W zasadach startu wpisuję
-b 8192, aby odpowiednio dobrać rozmiar kolejki jądra. - Zablokuj reguły: Po załadowaniu ostatecznej bazy reguł włączam tryb Immutable za pomocą
-e 2. Zmiany będą wtedy możliwe dopiero po ponownym uruchomieniu systemu – stanowi to skuteczną ochronę przed manipulacjami na żywo. - Zachowanie w przypadku przepełnienia: W
/etc/audit/auditd.confdefiniujęoverflow_action(np.SYSLOGlubSINGLE), aby przy pełnym buforze uzyskać jasno określone reakcje.
Prawidłowe zdefiniowanie zasad audytu
Die Jakość ścieżki audytowej zależy od jasnych, precyzyjnych zasad, które obejmują kluczowe działania i pozwalają uniknąć zbędnych zakłóceń. Dla Pliki wrażliwe umieszczam na przykład -w /etc/passwd -p warx -k passwd_changes i dodaj odpowiednie reguły dla /etc/shadow, /etc/sudoers lub /etc/ssh/. Do Aby rejestrować wykonanie poleceń, korzystam z -a always,exit -F arch=b64 -S execve oraz wersję 32-bitową, aby każda wersja pozostała widoczna, nawet poprzez korzeń. Dla Narzędzia takie jak Apache filtruję selektywnie na podstawie ścieżki do pliku binarnego, na przykład -a always,exit -F arch=b64 -S all -F exe=/usr/sbin/apache2 -k apache_activity. I Dokumentuj każdą regułę za pomocą zwięzłych komentarzy i jednoznacznych kluczy, aby analizy były powtarzalne, a współpracownicy mogli zrozumieć zamysł.
Zaawansowane przykłady reguł i dostosowywanie
Dla Aby uzyskać większą głębię, tworzę ukierunkowany zestaw narzędzi, który uwidacznia zmiany uprawnień, interwencje w jądro, modyfikacje czasu i sieci, a także mechanizmy trwałe – bez zakłóceń związanych z pakietami lub kopiami zapasowymi.
- Tylko użytkownicy interaktywni:
-F auid >= 1000 -F auid != 4294967295uzupełniono oexecve-Zasady wykluczania usług systemowych. - Zmiana uprawnień:
-a always,exit -F arch=b64 -S setuid,setreuid,setresuid -k priv_changeoraz wersja 32-bitowa. Opcjonalnie:-C uid!=euid, o ile obsługiwane są porównania pól. - Moduły jądra:
-a always,exit -F arch=b64 -S init_module,finit_module,delete_module -k kmod_change; dodatkowo:-w /sbin/insmod -p x -k kmod_exec,-w /sbin/modprobe -p x -k kmod_exec. - Zmiany godzin:
-a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k time_changeoraz-w /etc/localtime -p wa -k time_change. - Nośniki danych i system plików:
-a always,exit -F arch=b64 -S mount,umount2 -k fs_mount;-w /etc/fstab -p wa -k fs_mount. - Podstawa sieciowa:
-a always,exit -F arch=b64 -S sethostname,setdomainname -k net_conf;-w /etc/hosts -p wa -k net_conf,-w /etc/hostname -p wa -k net_conf,-w /etc/resolv.conf -p wa -k net_conf. - Cron i Timer:
-w /etc/crontab -p wa -k sched,-w /etc/cron.d/ -p wa -k sched,-w /var/spool/cron/ -p wa -k sched,-w /etc/systemd/system/ -p wa -k sched,-w /usr/lib/systemd/system/ -p wa -k sched. - Trwałość poprzez SSH:
-w /root/.ssh/ -p wa -k ssh_keys,-w /home/ -p wa -k ssh_keys(wąska ścieżka naauthorized_keys-pliki na użytkownika, aby uniknąć zakłóceń). - Ograniczenie nadużyć związanych z uprawnieniami SUID i SGID: Skupienie się na katalogach zawierających pliki wykonywalne:
-w /usr/bin/ -p wa -k bin_change,-w /usr/sbin/ -p wa -k bin_change,-w /bin/ -p wa -k bin_change,-w /sbin/ -p wa -k bin_change. - Rejestruj tylko niepowodzenia (dla głośnych wywołań systemowych):
-a always,exit -F arch=b64 -S open,openat -F success=0 -k file_denied. - Tłumienie szumów: Wykluczyć menedżery pakietów/kopie zapasowe, np.
-a never,exit -F exe=/usr/bin/dpkg,-a never,exit -F exe=/usr/bin/apt,-a never,exit -F exe=/usr/bin/yum,-a never,exit -F exe=/usr/bin/rpm,-a never,exit -F exe=/usr/bin/rsync(Należy sprawdzić ścieżkę dla każdej dystrybucji).
Zarządzanie logami i ochrona przed utratą logów
Bez Nawet przy prawidłowej rotacji i wyraźnie zdefiniowanych progach dzienniki audytowe narażone są na utratę cennych danych lub zapełnienie systemu plików. Na stronie /etc/audit/auditd.conf definiuję między innymi max_log_file, max_log_file_action, num_logs, space_left oraz reakcje takie jak space_left_action, disk_full_action lub działanie_w_przypadku_błędu_dysku. I preferuję takie działania jak OBRÓT oraz wczesne powiadomienie w systemie Syslog, abym mógł na czas zareagować w przypadku wystąpienia wąskich gardeł. Ponadto zapisuję logi audytowe na oddzielnym serwerze, aby utrudnić manipulacje w danym systemie i zachować dowody. Die Poniższa tabela przedstawia najważniejsze parametry oraz typowe, praktyczne ustawienia.
| Parametry | Cel | Przykład | Wskazówka |
|---|---|---|---|
plik_logowy | Miejsce przechowywania dzienników audytowych | /var/log/audit/audit.log | Zachować ścieżkę domyślną i zabezpieczyć ją w sposób jednoznaczny |
log_format | Format wydarzeń | RAW | Format RAW ułatwia analizę kryminalistyczną bez utraty informacji |
max_log_file | Maksymalny rozmiar pliku (MB) | 100 do 500 | Dostosuj rozmiar do liczby zdarzeń i pojemności pamięci |
max_log_file_action | Promocja po osiągnięciu określonego rozmiaru | OBRÓT | Rotacja zapobiega zatrzymaniu się lub nadpisaniu danych |
num_logs | Liczba przechowywanych plików | 5 do 10 | Wystarczająca ilość danych historycznych do analiz, bez nadmiernego obciążania pamięci |
space_left | Próg wolnej pamięci (MB) | 1024 lub wyższy | Wczesne ostrzeżenia zapewniają czas na reakcję |
space_left_action | Reakcja w przypadku nieosiągnięcia progu | SYSLOG | Rozważyć dodatkowo powiadomienie e-mailowe lub alarm SIEM |
disk_full_action | Co zrobić, gdy nośnik danych jest pełny | SUSPEND lub STOP | Jednoznaczna decyzja zależna od poziomu akceptacji ryzyka |
Zdalne rejestrowanie danych i scentralizowana analiza
Dla Wiele serwerów konfiguruję tak, aby korzystały z centralnego rejestrowania za pośrednictwem protokołu TCP/TLS, sterowanego za pomocą parametrów takich jak tcp_listen_port oraz odpowiednie urządzenia końcowe. O Za pomocą wtyczek audispd lub rsyslog przekazuję zdarzenia do platformy SIEM lub platformy bezpieczeństwa, a także koreluję błędy logowania, zmiany konfiguracji oraz podejrzane uruchomienia procesów. Więc dostrzegam wzorce, które na pojedynczym serwerze wydają się niebudzące podejrzeń, ale w połączeniu z innymi natychmiast wywołują alarm. Kto która już korzysta z pulpitów nawigacyjnych, czerpie korzyści z Agregacja logów w hostingu, ponieważ zdarzenia audytowe są tam łączone z innymi danymi telemetrycznymi. I Należy również zadbać o bezpieczną trasę transportu oraz wyraźne oddzielenie systemów produkcyjnych od instancji zbiorczej.
Analiza: jak efektywnie wykorzystać ausearch i aureport
Surowe dane są bezużyteczne, jeśli nie mogę ich szybko przefiltrować, dlatego zaczynam od jasnych kluczy i korzystam z ausearch do wyszukiwań ukierunkowanych. Z ausearch -k passwd_changes -ts today oceniam na przykład aktualne zmiany w /etc/passwd ; w razie potrzeby doprecyzuję przedział czasowy i filtry użytkowników. Dla Dostarcza raporty podsumowujące aureport --summary zwięzłe tabele, które uwidaczniają nietypowe logowania, zmiany w plikach oraz częstotliwość wywołań systemowych. Ponadto uzupełniam obraz dotyczący uruchamiania procesów i wykorzystania zasobów o Rozliczanie procesów, aby ustalić zależności między seriami produkcyjnymi a szczytami obciążenia. Na Najważniejsze jest to, że potrafię w ciągu kilku sekund odpowiedzieć na pytania: kto, co, kiedy, gdzie i w jaki sposób.
Pogłębienie analizy: prawidłowa interpretacja pól zdarzeń
Tak więc Aby analizy były trafne, znam najważniejsze pola i typy zdarzeń. SYSCALL-Wpisy obejmują m.in. auid (numer identyfikacyjny użytkownika), uid/euid/suid (rzeczywisty/efektywny/zapisany identyfikator UID), ses (identyfikator sesji) oraz exe (plik wykonywalny). PATH-Bloki wskazują ścieżki, których to dotyczy, EXECVE wymienia argumenty, CWD podaje katalog roboczy. Z ausearch -m SYSCALL -sc execve -ua 1000 -ts recent skupiam się na prezentacjach interaktywnych; aureport -x --summary -i dzięki temu na pierwszy rzut oka widzę częstotliwości i nietypowe wyniki. Ważne: auid pozostaje ponad sudo lub skoki setuid są stałe, a zatem stanowią bardziej niezawodne kryterium filtrowania w przypadku pytania „Kto to zainicjował?“.
Unikanie typowych błędów
Do Zbyt szeroko sformułowane reguły powodują nadmierne rozrost logów i przesłaniają naprawdę istotne informacje, dlatego skupiam się na plikach krytycznych, funkcji execve, zmianach uprawnień oraz konfiguracjach mających wpływ na bezpieczeństwo. Brakuje Aby zapewnić sprawny obieg, systemy narażają się na ryzyko, dlatego wyznaczam jasne ograniczenia dotyczące wielkości i liczby, a także działań w przypadku wąskich gardeł. I monitoruję również konfigurację audytu oraz katalog /var/log/audit/, ponieważ atakujący chcą zatrzeć ślady. I Dokumentuję każdą regułę, podając klucz, cel i krótkie uzasadnienie, aby analizy były spójne. Kto Kto ma obawy dotyczące wydajności, powinien precyzyjnie filtrować dane, usuwać zbędne ścieżki i najpierw zweryfikować wpływ nowych reguł w ramach testów.
Wydajność, stabilność i kontrole jakości
Audyt nie może spowalniać działalności. I sprawdzaj regularnie za pomocą auditctl -s, czy zagubiony-Wykrywanie zdarzeń i monitorowanie wartości zaległości po zmianach reguł. Na stronie W przypadku dużej liczby zdarzeń zwiększam kolejkę dyspozytora (q_depth) wtyczek audispd i ustaw overflow_action świadomie. Gdzie execve-Jeśli reguły generują zbyt dużą objętość, ograniczam ją za pomocą auid lub poprzez exe=-Wprowadź listy białych i czarnych adresów i rejestruj tylko niepowodzenia w przypadku głośnych wywołań systemowych. Przed Przed szeroko zakrojonym wdrożeniem testuję nowe reguły w środowisku stagingowym, mierzę częstotliwość zdarzeń i obciążenie procesora oraz porównuję aureport --summary przed/po zmianie, aby oszacować efekt.
Środowiska kontenerowe i wirtualizacyjne
Na stronie Oprócz hostów kontenerów jądro rejestruje również procesy kontenerów – jest to zamierzone zachowanie, ale może generować dużo komunikatów. I kieruję się zasadami ochrony hosta (np. dockerd lub Podman), bezpieczne ścieżki do plików binarnych i konfiguracji oraz filtruję widok użytkownika poprzez auid. Przykłady: -w /usr/bin/dockerd -p x -k container_runtime, -w /etc/docker/ -p wa -k container_conf, a także ogólne reguły dotyczące hostów, takie jak execve z auid-Filtr. Na stronie W przypadku maszyn wirtualnych traktuję dzienniki audytowe jak dane ulotne: włączam zdalne przekazywanie, ustalam krótki cykl rotacji i zwracam uwagę na spójność czasową w przypadku migawek. Ważne Pozostaje zapewnienie prawidłowej synchronizacji NTP/Chrony, aby analizy osi czasu były wiarygodne.
Zgodność z przepisami i prowadzenie dokumentacji
Dla Zgodnie z normą ISO 27001 (m.in. A.12.4 Rejestrowanie/monitorowanie, A.16 Zarządzanie incydentami) oraz PCI DSS (rozdz. 10) sporządzam dokumentację podlegającą weryfikacji: Co Czy rejestruje się, jak długo, kto ma dostęp i w jaki sposób zapewniana jest integralność? I Należy prowadzić wersjonowanie bazy reguł, dokumentować klucze i cele, podpisywać logi archiwalne za pomocą skrótów oraz przechowywać je w sposób zabezpieczony przed manipulacją. Na stronie W odniesieniu do danych osobowych stosuję zasadę minimalizacji danych (precyzyjne zasady, krótkie okresy przechowywania) oraz określam jasne procedury usuwania danych. Więc powstają raporty, które przekonują audytorów i faktycznie dostarczają odpowiedzi w przypadku zdarzenia.
Eksploatacja, monitorowanie i scenariusze działania
Na stronie W przypadku pracy w trybie ciągłym potrzebuję ustalonych procedur: codzienne kontrole wyrywkowe z aureport, alarmy w przypadku stracone > 0, sprawdzenie dostępności partycji audytowej oraz przekierowania zdalnego. I utwórz playbooki: „Wyróżniający się członkowie kadry kierowniczej“ (filtr według exe= oraz auid), „Zmieniono plik krytyczny“ (korelacja z PATH, SYSCALL, EXECVE), „interwencja w jądro“ (zasady dotyczące init_module oraz mount). Znany Rodzaje wydarzeń, takie jak ANOM_PROMISCUOUS (interfejs w trybie promisc) lub MAC_POLICY_LOAD (Po załadowaniu polityki MAC) dokonuję oceny według priorytetów i uruchamiam kolejne etapy reakcji.
Usuwanie usterek i ponowne uruchomienie
Kiedy Jeśli nie ma żadnych wydarzeń, najpierw sprawdzam ausearch -m DAEMON -ts today oraz auditctl -s (Status/Zaległości). Brak Zasady – wgrywam je za pomocą augenrules --load nowy i sprawdź za pomocą auditctl -l. Jest tryb Immutable jest aktywny (-e 2), jedynym rozwiązaniem jest ponowne uruchomienie systemu z odpowiednio dostosowanymi regułami startowymi. Na stronie Problemy z uprawnieniami w /var/log/audit/ przywracam właściciela i tryb; jeśli SELinux jest aktywny, koryguję konteksty. I Potwierdzam, że log_format = RAW jest ustawione – czytelny dane wejściowe dla analizy kryminalistycznej i parsera.
Audyt w środowiskach hostingowych
Prosto W środowiskach hostingowych z dużą liczbą obciążeń program Auditd pomaga mi zapewnić przejrzystość w zakresie separacji klientów oraz wcześnie wykrywać nadużycia. I Monitoruj serwery internetowe, baz danych i aplikacji za pomocą wielopoziomowych zestawów reguł oraz zintegruj zdarzenia z istniejącym systemem monitorowania i reagowania na incydenty. Dla O zapewnienie wyraźnego rozdzielenia dbam poprzez centralne przechowywanie danych, oddzielne role oraz restrykcyjne uprawnienia do katalogów logów. Do W razie potrzeby uzupełniam diagnostykę systemu o journalctl do wykrywania błędów, jednak analizy o znaczeniu krytycznym dla bezpieczeństwa należy przeprowadzać przede wszystkim w kanale audytowym. Więc powstaje wiarygodna ścieżka audytowa, która łączy interesy klientów, wymogi dotyczące zgodności z przepisami oraz efektywność operacyjną.
Krótko i na temat: moje podejście
I Zacznij od jasno określonego celu, sformułuj precyzyjne zasady dotyczące plików krytycznych, funkcji `execve` oraz zmiany uprawnień, a także zabezpiecz proces rotacji przed utratą danych. W takim razie Włączam przekierowanie zdalne z wykorzystaniem protokołu TLS, dokumentuję klucze i testuję działanie każdej reguły przed jej powszechnym wdrożeniem. Dla W codziennej pracy stawiam na ausearch oraz aureport, twórz ukierunkowane wyszukiwania i generuj przejrzyste raporty dla działu operacyjnego i działu bezpieczeństwa. Na stronie W przypadku wykrycia nieprawidłowości koreluję zdarzenia audytowe z innymi sygnałami, takimi jak dane procesowe lub sieciowe, aby szybko zidentyfikować przyczynę. Więc W systemie Linux Auditd nie otrzymuję zalewu logów, lecz jasne odpowiedzi na pytania dotyczące bezpieczeństwa w środowiskach produkcyjnych.


