guidugli.audit
Ansible Ról: audyt
Ról Ansible, który instaluje i konfiguruje audyt na systemach RHEL/CentOS, Fedora oraz Debian/Ubuntu.
Domyślne zasady opierają się na benchmarku CIS RedHat/Ubuntu/Debian oraz na tym repozytorium github: https://github.com/Neo23x0/auditd.
Zastrzeżenie: Nie jestem ekspertem w dziedzinie bezpieczeństwa i nie należy korzystać z tej roli bez wcześniejszego zapoznania się z tym, jak działa audyt i zasady skonfigurowane przez tę rolę. Bezpieczeństwo twoich serwerów to TWOJA odpowiedzialność!
Wymagania
System operacyjny działający na fizycznym sprzęcie lub wirtualizacji hipernadzorczej. W systemach skonteneryzowanych może działać tylko jeden proces auditd, zazwyczaj na systemie gospodarza. Ta rola nie będzie próbowała uruchamiać demona auditd w kontenerach.
Zmienne roli
Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (zobacz defaults/main.yml
):
audit_local_events: true
Ten słowo kluczowe tak/nie określa, czy uwzględnić zdarzenia lokalne. Zwykle chcesz mieć zdarzenia lokalne, więc wartość domyślna to tak. Przypadki, w których ustawiłbyś to na nie, mają miejsce, gdy chcesz zbierać zdarzenia tylko z sieci.
#audit_log_file: /var/log/audit/audit.log
Ten słowo kluczowe określa pełną ścieżkę do pliku dziennika, w którym będą przechowywane rekordy audytowe. Musi to być zwykły plik.
audit_write_logs: true
To słowo kluczowe tak/nie decyduje, czy zapisywać logi na dysku. Zwykle chcesz to mieć, więc wartość domyślna to prawda.
audit_log_format: ENRICHED
Format logu opisuje, jak informacje powinny być przechowywane na dysku. Istnieją 2 opcje: surowy i wzbogacony.
audit_log_group: root
To słowo kluczowe określa grupę, którą stosuje się do uprawnień pliku logu. Wartość domyślna to root. Nazwa grupy może być liczbą lub zapisaną słownie.
audit_priority_boost: 4
To liczba nieujemna, która mówi demonowi audytu, jak duży wzrost priorytetu powinien wziąć. Wartość domyślna to 4. Brak zmiany to 0.
audit_flush: INCREMENTAL_ASYNC
Prawidłowe wartości to none, incremental, incremental_async, data i sync.
audit_freq: 50
To liczba nieujemna, która mówi demonowi audytu, ile rekordów należy zapisać przed wydaniem jawnego polecenia opróżnienia na dysk. Ta wartość jest ważna tylko wtedy, gdy słowo kluczowe flush jest ustawione na incremental lub incremental_async.
audit_num_logs: 5
To słowo kluczowe określa liczbę plików dziennika, które należy zachować, jeśli rotacja jest określona jako maksymalna akcja pliku logu. Jeśli liczba jest < 2, logi nie są rotowane. Ta liczba musi być mniejsza lub równa 999.
audit_name_format: NONE
Ta opcja kontroluje, jak nazwy węzłów komputerowych są wstawiane do strumienia zdarzeń audytu. Ma następujące opcje: none, hostname, fqd, numeric i user. Żaden oznacza, że nie wstawiano żadnej nazwy komputera do zdarzenia audytu.
#audit_name: mydomain
To zdefiniowany przez administratora ciąg, który identyfikuje maszynę, jeśli użytkownik jest podany jako opcja name_format.
audit_max_log_file: 256
To słowo kluczowe określa maksymalny rozmiar pliku w megabajtach. Gdy ten limit zostanie osiągnięty, spowoduje to wyzwolenie konfigurowalnej akcji.
audit_max_log_file_action: keep_logs
Ten parametr mówi systemowi, jaką akcję podjąć, gdy system wykryje, że osiągnięto limit maksymalnego rozmiaru pliku. Prawidłowe wartości to ignore, syslog, suspend, rotate i keep_logs.
audit_verify_email: true
Ta opcja określa, czy adres e-mail podany w action_mail_acct jest sprawdzany pod kątem możliwości rozwiązania nazwy domeny. Ta opcja musi być podana przed action_mail_acct, w przeciwnym razie zostanie użyta wartość domyślna tak.
audit_action_mail_acct: root
Ta opcja powinna zawierać prawidłowy adres e-mail lub alias. Domyślnym adresem jest root. Jeśli adres e-mail nie należy do lokalnej maszyny, musisz upewnić się, że masz poprawnie skonfigurowaną pocztę na maszynie i w sieci. Dodatkowo, ta opcja wymaga, aby na maszynie istniał /usr/lib/sendmail.
audit_space_left: 75
Jeśli wolna przestrzeń w systemie plików zawierającym log_file spadnie poniżej tej wartości, demon audytu podejmuje akcję określoną przez space_left_action. Jeśli wartość space_left jest określona jako liczba całkowita, jest interpretowana jako rozmiar absolutny w megabajtach (MiB). Jeśli wartość jest określona jako liczba z przedziału 1-99, zakończona znakiem procentu (np. 5%), demon audytu oblicza rozmiar absolutny w megabajtach na podstawie rozmiaru systemu plików zawierającego log_file.
audit_space_left_action: email
Ten parametr mówi systemowi, jaką akcję należy podjąć, gdy system wykryje, że zaczyna mieć problemy z przestrzenią na dysku. Prawidłowe wartości to ignore, syslog, rotate, email, exec, suspend, single i halt.
audit_admin_space_left: 50
To wartość numeryczna w megabajtach, która mówi demonowi audytu, kiedy podjąć konfigurowalną akcję, ponieważ system ma mało miejsca na dysku. Należy to uznać za ostatnią szansę na podjęcie działań przed wyczerpaniem przestrzeni na dysku.
audit_admin_space_left_action: suspend
Ten parametr mówi systemowi, jaką akcję podjąć, gdy system wykryje, że ma mało miejsca na dysku. Prawidłowe wartości to ignore, syslog, rotate, email, exec, suspend, single i halt.
audit_disk_full_action: SUSPEND
Ten parametr mówi systemowi, jaką akcję podjąć, gdy system wykryje, że partycja, na którą zapisywane są pliki logów, stała się pełna. Prawidłowe wartości to ignore, syslog, rotate, exec, suspend, single i halt.
audit_disk_error_action: SUSPEND
Ten parametr mówi systemowi, jaką akcję podjąć, gdy wykryto błąd podczas zapisywania zdarzeń audytu na dysku lub rotacji logów. Prawidłowe wartości to ignore, syslog, exec, suspend, single i halt.
#audit_tcp_listen_port: 60
To wartość liczbowa w zakresie 1..65535, która, jeśli jest podana, sprawia, że auditd nasłuchuje na odpowiednim porcie TCP w celu odbierania rekordów audytowych z zdalnych systemów. Demon audytu może być powiązany z tcp_wrappers. Możesz chcieć kontrolować dostęp przy użyciu wpisu w plikach hosts.allow i deny. Jeśli jest to wdrożone na systemie opartym na systemd, może być konieczne dostosowanie dyrektywy 'After'.
#audit_tcp_listen_queue: 5
To wartość liczbowa, która wskazuje, ile oczekujących (zażądanych, ale nie zaakceptowanych) połączeń jest dozwolone. Wartość domyślna to 5. Ustawienie tej wartości zbyt nisko może spowodować odrzucenie połączeń, jeśli zbyt wiele hostów włączy się dokładnie w tym samym czasie, np. po awarii zasilania. To ustawienie jest używane tylko dla serwerów agregujących. Klienci logujący się do zdalnego serwera powinni mieć to ustawienie skomentowane.
#audit_tcp_max_per_addr: 1
To wartość liczbowa, która wskazuje, ile jednoczesnych połączeń z jednego adresu IP jest dozwolone. Wartość domyślna to 1, a maksymalna to 1024. Ustawienie tej wartości zbyt wysoko może umożliwić atak typu Denial of Service na serwer logujący.
audit_use_libwrap: true
To ustawienie decyduje, czy używać tcp_wrappers do rozpoznawania prób połączeń z dozwolonych maszyn.
#audit_tcp_client_ports: 1024-65535
Ten parametr może być jedną wartością liczbową lub dwiema wartościami oddzielonymi myślnikiem (bez spacji). Określa, które porty klientów są dozwolone do połączeń przychodzących. Jeśli nie określono, to dozwolone są wszelkie porty.
audit_tcp_client_max_idle: 0
Ten parametr wskazuje liczbę sekund, przez jakie klient może być nieaktywny (tzn. nie wysyłać żadnych danych), zanim auditd zgłosi skargę. Używane jest to do zamykania nieaktywnych połączeń, jeśli maszyna klienta ma problem, przez co nie może prawidłowo zakończyć połączenia. Należy zauważyć, że jest to ustawienie globalne i musi być wyższe niż jakiekolwiek indywidualne ustawienie heartbeat_timeout klienta, najlepiej w stosunku 2:1. Wartość domyślna to zero, co dezaktywuje to sprawdzenie.
audit_transport: TCP
Jeśli ustawione na TCP, będą używane tylko połączenia TCP w czystym tekście. Jeśli ustawione na KRB5, wówczas Kerberos 5 będzie używany do uwierzytelniania i szyfrowania.
audit_krb5_principal: auditd
To principal dla tego serwera. Wartość domyślna to "auditd". Zgodnie z tym domyślnym ustawieniem, serwer będzie szukał klucza o nazwie auditd/nazwa_hosta@EXAMPLE.COM przechowywanego w /etc/audit/audit.key, aby się uwierzytelnić, gdzie nazwa_hosta to kanoniczna nazwa hosta serwera zwrócona przez zapytanie DNS do jego adresu IP.
#audit_krb5_key_file: /etc/audit/audit.key
Lokalizacja klucza dla principal tego klienta. Należy pamiętać, że plik klucza musi być własnością roota i mieć tryb 0400.
audit_distribute_network: false
Jeśli ustawione na true, zdarzenia pochodzące z sieci będą dystrybuowane do dispatcher'a audytu w celu przetworzenia.
audit_q_depth: 400
To wartość numeryczna, która mówi, jak duża ma być wewnętrzna kolejka dyspozytora zdarzeń audytu. Większa kolejka pozwala lepiej poradzić sobie z zalewem zdarzeń, ale może przechowywać zdarzenia, które nie są przetwarzane, gdy demon zostaje zakończony. Jeśli otrzymujesz wiadomości w syslog o utracie zdarzeń, zwiększ tę wartość.
audit_overflow_action: SYSLOG
Ta opcja określa, jak demon powinien reagować na przepełnienie swojej wewnętrznej kolejki. Kiedy to się dzieje, oznacza to, że otrzymywane są zdarzenia, które przekraczają możliwości przekazywania ich do procesów potomnych. Ten błąd oznacza, że straci bieżące zdarzenie, które próbuje przekazać. Ta opcja ma następujące możliwości: ignore, syslog, suspend, single i halt.
audit_max_restarts: 10
To liczba nieujemna, która mówi dyspozytorowi zdarzeń audytu, ile razy może próbować ponownie uruchomić awaryjny plugin.
audit_plugin_dir: /etc/audit/plugins.d
To lokalizacja, której auditd użyje do wyszukiwania swoich plików konfiguracyjnych pluginów.
force_overwrite_audit: true
Jeśli plik audytu już istnieje, wymusić nadpisanie? Zostanie nadpisany tylko, jeśli zawartość pliku docelowego różni się od źródłowego.
audit_sudo_log: "{{ sudo_log | default('/var/log/sudo.log') }}"
Jeśli zdefiniowano rolę sudo, pobierz wartość z zmiennej sudo_log, w przeciwnym razie użyj domyślnej: /var/log/sudo.log. Działa to, aby zapobiec konieczności wielokrotnego określania tych samych informacji przez użytkowników. Ale rola sudo nie jest zależnością dla tej roli.
Zmienne wymienione poniżej nie muszą być zmieniane dla docelowych systemów (zobacz vars/main.yml):
audit_packages: ['audit', 'audit-libs']
Ta zmienna jest zdefiniowana w vars/main.yml i jest ustawiona zgodnie z dystrybucją Linuksa. Użytkownicy nie muszą zmieniać tej zmiennej dla docelowych systemów tej roli.
audit_config_path: /etc/audit/auditd.conf
Ta zmienna jest zdefiniowana w vars/main.yml i kontroluje lokalizację pliku auditd.conf.
audit_rulesd_path: /etc/audit/rules.d
Ta zmienna jest zdefiniowana w vars/main.yml i kontroluje lokalizację katalogu rules.d.
audit_rules_files:
- 01-init.rules
- 10-self-audit.rules
- 20-filters.rules
- 30-kernel.rules
- 40-identity.rules
- 40-login.rules
- 40-mount.rules
- 40-stunnel.rules
- 40-swap.rules
- 40-time.rules
- 50-cron.rules
- 50-dac.rules
- 50-hostname.rules
- 50-ip-connections.rules
- 50-network.rules
- 50-pkg-manager.rules
- 50-remote-shell.rules
- 50-sudoers.rules
- 50-system-libs.rules
- 50-system-startup.rules
- 55-privileged.rules
- 60-mail.rules
- 60-pam.rules
- 60-sshd.rules
- 60-systemd.rules
- 70-access.rules
- 70-mac-policy.rules
- 70-power-state.rules
- 70-sessions.rules
- 70-shell-profiles.rules
- 80-data-compression.rules
- 80-network.rules
- 80-privilege-abuse.rules
- 80-reconnaissance.rules
- 80-socket-creation.rules
- 80-suspicious.rules
- 80-suspicious-shells.rules
- 80-virtualization.rules
- 90-cred-in-files.rules
- 90-IPC.rules
- 90-root-exec.rules
- 90-special-sw.rules
- 95-32bit-api-exploitation.rules
Określ pliki zasad, które mają być skopiowane. Domyślnie żaden plik nie jest wybrany do skopiowania. Powyższe pliki są dostarczane przez rolę, ale użytkownik może tworzyć własne pliki w razie potrzeby. Rola dostarcza zasady podzielone na kilka małych plików (zamiast jednego dużego), aby promować ponowne użycie: możesz wybierać, które zasady wdrożyć i możesz tworzyć własne niestandardowe zasady. Zasady opierają się na standardach bezpieczeństwa CIS i innych.
Zależności
Brak zależności.
Przykład Podręcznika
- hosts: serwery
vars_files:
- vars/main.yml
roles:
- { role: guidugli.audit }
Licencja
MIT / BSD
Informacje o autorze
Ta rola została stworzona w 2020 roku przez Carlosa Guidugli.
ansible-galaxy install guidugli.audit