GuardX 2.0 nowy moduł monitorowania bezpieczeństwa. Standardowe skrypty sprawdzające działanie systemów anty-włamaniowych często polegają na tworzeniu ciężkich podprocesów powłoki, co przy ciągłym odpytywaniu generuje zbędne obciążenie serwera. Moduł GuardX weryfikuje integralność systemu CrowdSec oraz zapory PF (Packet Filter) we FreeBSD, wykorzystując wywołania systemowe i drastycznie minimalizując narzut na procesor.
Weryfikacja demonów za pomocą sygnałów POSIX
Tradycyjne sprawdzanie statusu usług we FreeBSD zazwyczaj wymusza stosowanie komend typu service crowdsec onestatus. Wymaga to każdorazowego załadowania interpretera /bin/sh oraz parsowania całych skryptów startowych z /etc/rc.d.
W module C++ zaimplementowałem mechanizm całkowicie omijający powłokę:
- Program odczytuje zapisane numery PID bezpośrednio z plików konfiguracyjnych demona w /var/run/.
- Wykorzystuje natywne wywołanie POSIX kill(pid, 0).
- Jądro systemu weryfikuje fizyczną obecność procesu o danym identyfikatorze bez wysyłania do niego faktycznego sygnału zakończenia. Koszt obliczeniowy tej operacji wynosi zero.
Bezpośrednia komunikacja z jądrem PF
Moduł sprawdza, czy firewall jest aktywny i poprawnie wpięty w interfejsy sieciowe, nie używając do tego ciężkiego narzędzia konfiguracyjnego pfctl.
Jak to działa pod maską? Kod w C++ wykonuje próbę bezpośredniego otwarcia systemowego urządzenia znakowego za pomocą funkcji open(„/dev/pf”, O_RDWR). Zwrócenie poprawnego deskryptora plików jednoznacznie gwarantuje, że zapora działa na poziomie kernela. Eliminuje to konieczność alokacji pamięci dla zewnętrznych programów diagnostycznych.
Natywny odczyt kolekcji przez system plików
Wykrywanie aktywnych scenariuszy i parserów (Collections) w CrowdSec zwyczajowo wymaga wywołania ważącej kilkadziesiąt megabajtów binarki cscli.
Zamiast tego nowy moduł GuardX wykorzystuje bibliotekę std::filesystem. Program po prostu analizuje fizyczną strukturę katalogu /usr/local/etc/crowdsec/collections/. Zliczenie obecności powiązań symbolicznych (symlinks) bezpośrednio na poziomie systemu plików redukuje czas testu o kilkaset milisekund w stosunku do parsowania wyjścia w konsoli.
Symulacja blokady (Unit Test w pamięci jądra)
Najbardziej krytycznym etapem walidacji ochrony jest dynamiczny test wstrzyknięcia adresów IP. Moduł nie opiera się wyłącznie na logach systemowych, ale testuje cały łańcuch blokowania na żywym organizmie:
- Program zaczytuje dedykowany adres testowy IP bezpośrednio ze zaktualizowanego pliku guardx.conf.
- Z wykorzystaniem lokalnego API (LAPI) nadaje tymczasowego bana z flagą powodu BSNM_UNIT_TEST.
- Monitor inicjuje szybką pętlę sprawdzającą (maksymalnie 15 sekund), weryfikując, czy demon CrowdSec poprawnie zsynchronizował decyzję i czy testowy adres IP fizycznie zapisał się wewnątrz tablicy jądra zapory (crowdsec-blacklists).
- Po udanej weryfikacji blokada jest błyskawicznie usuwana.
Wdrożenie crowdsectest_program gwarantuje, że testy jednostkowe IDS/IPS można realizować precyzyjnie i z zerowym opóźnieniem. GuardX na bieżąco monitoruje pełną szczelność stosu sieciowego bez narzutu typowego dla rozwiązań powłokowych.


Dodaj komentarz