Wazuh. Monitorowanie integralności plików
Wśród możliwości Wazuha mamy też dość rozbudowany moduł odpowiadający za monitorowanie integralności plików. Potrafi sprawdzić czy plik został, utworzony, skasowany czy zmodyfikowany, jeśli tak, to przez kogo i w jakiej treści. Szczególnie przydatny dla naszych wrażliwych i ważnych danych. Daje to możliwość podniesienia bezpieczeństwa danych poprzez upewnienie się, że nie stały one skompromitowane.
Program pilnuje plików i katalogów, okresowo skanując wskazane miejsca i informuje nas odpowiednio jeśli zauważy, że zaszła jakaś zmiana.

Jak to mi się przyda?
Moduł monitorowania integralności plików może być wykorzystywany do procesów zarządzania zmianą, zgodnością z regulacjami i przepisami, czy wykrywaniu ataków hakerskich.
Moduł ten pomaga pomaga organizacjom spełnić wymagania prawne dotyczące bezpieczeństwa danych, prywatności, poufności i przechowywania danych narzucone przez regulacje o RODO, GDPR, HIPAA, i innych tego typu.
Dobry przykładem wykorzystania monitorowania plików jest sytuacja, w której planujemy katalog do którego użytkownicy mogą zapisać pliki, często to jest wykorzystywane do umieszczenia złośliwego skryptu. Wazuh pomoże zauważyć taką sytuacje, i uruchomić skanowanie programem antywirusowym (ClamAV, TotalVirus, Yara)
Kolejnym przykładem będzie monitorowanie plików, których modyfikacja może oznaczać uzyskanie dostępu do systemu przez niepowołane osoby. Takim plikiem jest na przykład authorized_keys. Ten plik zawiera klucze publiczne, których użytkownik używa do logowania się na swoje konta.
Następnym przydatnym przypadkiem monitorowania jest pilnowanie czy plik konfiguracyjny ważnego programu nie został zmieniony, a jeśli tak to jak wyglądała zmiana i przez jakiego użytkownika została dokonana.
W przypadku systemów Windows wyjątkowo ważnym elementem jest jego Rejestr (Windows Registry). To swego rodzaju baza danych, która przechowuje konfigurację całego systemu, programów i sprzętu. Niepowołany dostęp do Rejestru może spowodować poważne problemy z systemem i danymi. Hakerzy mogą wykorzystać rejestr windows do modyfikacji zabezpieczeń, wykonania złośliwego kodu, właściwie dowolnej modyfikacji w systemie która ułatwi im niecne działania.
Wazuh potrafi monitorować Rejestr Windows, cyklicznie skanuje i sprawdza czy dokonano jakieś zmiany od ostatniego skanowania.
Jak to działa?
Moduł monitorowania wykorzystuje dwie bazy do realizacji tego zadania. Jedna baza jest przechowywana na hoście z agenta (/var/ossec/queue/fim/db) a dodatkowo na serwerze jest też tworzona baza dla każdego agenta /var/ossec/queue/db. Moduł integracji synchronizuje obie bazy. Aktualizuje bazę na serwerze na podstawie zmian z bazy na hoscie z agentem. Baza na serwerze umożliwia realizacje zapytań API dla modułu.
Wazuh przechowuje zaszyfrowaną sumę kontrolną pliku i inne ich atrybuty w swojej lokalnej bazie, jeśli podczas skanowania te dane się różnią, to odpalany jest alert – informacja o tym trafia na dashboard.
Wazuh ma dwa tryby pracy w przypadku monitorowania integralności plików:
- skanowanie okresowe, co określony czas sprawdzana jest integralność plików
- skanowanie na żywo (realtime), gdzie na bieżąco jest skanowana integralność plików i alert odpalany jest natychmiast, gdy zajdzie jakaś zamiana. Ten tryb jest dość obciążający dla systemu
Co więcej, można połączyć monitorowanie integralności plików z odpowiednia reakcją na zdarzenie – na przykład skanowanie antywirusowe danego katalogu gdzie zaszła zmiana w plikach.
Moduł posiada domyślna konfigurację jednak zalecane jest aby dostosować ją do własnych potrzeb.
Możemy ustawić monitorowane katalogi zarówno w konfiguracji na serwerze jak i agencie.
W pliku konfiguracyjnym w sesji syscheck dodaj ścieżki do katalogów lub plików do monitorowania
<syscheck>
<directories>/sciezka/do/monitorowanego/pliku</directories>
<directories>/sciezka/do/monitorowanego/katalogu</directories>
</syscheck>
Po każdej zmianie w konfiguracji pamiętaj o restarcie usługi Wazuha.
Możemy ustawić ścieżkę do monitorowania i w konfiguracji agenta i w konfiguracji serwera.
Miej też na uwadzę, że jeśli skonfigurujesz scieżkę w agent.conf (scentralizowana konfiguracja) i osse.conf (lokalna konfiguracja) to agent.conf ma wyższy priorytet.
Aby przejrzeć wyniki skanowania monitora integralności plików należy przejść do wybranego agenta i wybierz Integrity monitoring z górnego menu
Na zakładce Events będziemy mieć listę z większą ilością szczegółów na temat zanotowanych plików.
Określając katalog do monitorowania możemy dodatkowo zdefiniować więcej opcji dla optymalniejszego skanwania. Oto kilka z nich:
realtime – tu określmy monitorowanie plików w czasie rzeczywistym Oznacza to ze każda zmiana będzie od razu zauważona
Mozemy tez ustawić aby wszystkie lub tylko konkretne atrybuty plikow i katalogow były monitorowane, np check_size, check_owner, check_attrs, check_inode
Jeśli uszczegółowione opcje wykluczają się wzajemnie to ostatni w kolejności parametr bierze gore. Na przykład <directories check_all="no" check_mtime="yes">/etc</directories>
w tym przypadku zadziała tu tylko check_mtime=”yes”
Jak już wspomniałem, skanowanie może odbywa się cyklicznie. Aby zmienić częstotliwość skanowania wystarczy zmodyfikować tag <frequency> w pliku konfiguracyjnym. Domyślnie jest ustawiony na wartość 43200 w sekundach, co oznacza skanowanie co 12 godzin
Aby zmienić na skanowanie co godzinę ustaw tą wartość tak:
<syscheck>
<frequency>3600</frequency>
</syscheck>
Można też ustawić skanowanie tylko o konkretnej godzinie i dniu. Na przykład. aby ustawić skanowanie tylko w poniedziałki o 6 rano:
<syscheck>
<scan_time>6am</scan_time>
<scan_day>monday</scan_day>
</syscheck>
Bardzo ciekawym parametrem jest report_changes który zapisuje co zostało zmienione w pliku. Jeśli chcemy wiedzieć co dokładnie zostało dodane lub usunięte to ten parametr należy dodać do monitorowanej ścieżki do pliku lub katalogu.
Możemy też użyć opcji nodiff aby dodać wyjątek dla pliku w monitorowanym katalogu. Dzięki czemu fakt zmiany będzie dalej monitorowany ale bez szczegółów zawartości zmiany takiego pliku
<syscheck>
<directories check_all="yes" report_changes="yes">/sciezka/do/monitorowanego/katalogu</directories>
<nodiff>/sciezka/do/monitorowanego/katalogu/turbotajne.txt</nodiff>
</syscheck>
Można też dodać pełne wyjątki z monitorowania plików. Co się wyjątkowo przydaje w przypadku pojawiających się plików logów ( .log) czy plików tymczasowych (.tmp)
<syscheck>
<ignore>/sciezka/do/monitorowanego/katalogu</ignore>
<ignore type="sregex">.log$|.tmp$</ignore>
</syscheck>
Wśród standardowych reguł mamy też takie, które sprawdzają wiele parametrów plików. Jednak można też utworzyć własne, które sprawdzają jedynie konkretne parametry pliku i odpalają wtedy alarm.
Aby uzyskać więcej informacji z monitoringu możemy ustawić parametr who-data. Dzięki któremu będziemy mieć szczegółowe informacje o użytkowniku który wprowadził zmiany.
Do działania tego elementu na systemie Linux należy dodatkowo zainstalować pakiet auditd.
<syscheck>
<directories check_all="yes" whodata="yes">/etc</directories>
</syscheck>
Aby ustawić głębokość skanowanych plików ustawimy:
<syscheck>
<directories check_all="yes" recursion_level="3">/sciezka/do/monitorowanego/katalogu</directories>
</syscheck>
Możemy używać znaków wieloznacznych do określenia ścieżek na przykład aby monitorować katalog Download dla wszystkich użytkowników systemu Linux możemy dać taki zapis /home/*/Downloads
Kiedy agent jest restartowany to baza jest przebudowywania,uruchamiany pełny skan i następuje synchronizowany rezultat z bazą na serwerze. Natomiast gdy mamy uruchomiony opcje realtime lub who-data wtedy synchronizacja następuje od razu, inne po wykonaniu pełnego skanu.
Dodatkowo za pomocą regexów można tez dodać wyjątki ze skanowania.