[8] PF – Packet Filter – Rejestrowanie aktywności zapory

31 stycznia 2024 Wyłączono przez Adam [zicherka] Nogły

W tym rozdziale będziemy pracować z logowaniem PF, którym zarządza pseudointerfejs o nazwie [pflog]. Rejestrowanie jest włączane podczas rozruchu poprzez dodanie [pflog_enabled=”YES”] do pliku [/etc/rc.conf], co zrobiliśmy w rozdziale: Testowanie wstępnego zestawu reguł. Dzięki temu demon [pflogd] wyświetla interfejs o nazwie [pflog0] i zapisuje dzienniki w formacie binarnym do pliku o nazwie [/var/log/pflog]. Dzienniki mogą być analizowane w czasie rzeczywistym z interfejsu lub odczytywane z pliku [/var/log/pflog] za pomocą narzędzia [tcpdump].

Najpierw uzyskajmy dostęp do niektórych dzienników z pliku [/var/log/pflog]:

root@vfbsd01:~ # tcpdump -ner /var/log/pflog
reading from file /var/log/pflog, link-type PFLOG (OpenBSD pflog file)

Zastosowaliśmy opcje [-ner], które formatują dane wyjściowe pod kątem czytelności, a także określamy plik do odczytu, którym w naszym przypadku jest [/var/log/pflog].

Na tych wczesnych etapach (czas od uruchomienia PF) plik [/var/log/pflog] może nie zawierać żadnych danych. W krótkim czasie plik dziennika zacznie się jednak powiększać.

Można także przeglądać dzienniki w czasie rzeczywistym z interfejsu pflog0, używając następującego polecenia:

root@vfbsd01:~ # tcpdump -nei pflog0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pflog0, link-type PFLOG (OpenBSD pflog file), capture size 262144 bytes

Zastosowaliśmy opcje [-nei], które również formatują dane wyjściowe pod kątem czytelności, ale tym razem określamy interfejs, którym w naszym przypadku jest pflog0.

Dostęp do plików dziennika za pomocą pftop

Narzędzie pftop to narzędzie do szybkiego przeglądania aktywności zapory w czasie rzeczywistym. Na jego nazwę ma wpływ dobrze znane narzędzie Unix [top]. Aby z niego skorzystać, musimy najpierw zainstalować pakiet pftop.

root@vfbsd01:~ # pkg install pftop

root@vfbsd01:~ # pftop
pfTop: Up State 1-7/7, View: default, Order: none, Cache: 10000                             20:23:03
PR      DIR SRC                     DEST                   STATE       AGE       EXP    PKTS   BYTES
tcp     In  192.168.100.151:57730   192.168.100.106:22      4:4   07:53:44  23:59:55    7675  532191
tcp     In  192.168.100.151:62627   192.168.100.106:22      4:4   00:13:30  23:59:59    1648  101679
tcp     In  192.168.100.151:62632   192.168.100.106:22      9:4   00:13:28  00:01:33      26    5418
tcp     Out 192.168.100.106:22487   147.28.184.43:80        7:9   00:00:44  00:00:41      15    1243
tcp     Out 192.168.100.106:19466   147.28.184.43:80        7:9   00:00:44  00:00:45      15    1253
tcp     Out 192.168.100.106:49206   147.28.184.43:80        7:9   00:00:43  00:00:45      15    1253
tcp     Out 192.168.100.106:25052   147.28.184.43:80        9:9   00:00:26  00:01:04     111   80831

Tworzenie dodatkowych interfejsów dziennika

Jak przy każdym innym interfejsie, można utworzyć wiele interfejsów dziennika i nazwać je za pomocą pliku [/etc/hostname]. Może się to okazać przydatne do celów organizacyjnych, na przykład jeśli chcemy oddzielnie rejestrować określone rodzaje działań. Utworzymy zatem dodatkowy interfejs rejestrowania o nazwie pflog1.

root@vfbsd01:~ # mcedit /etc/hostname.pflog1
# dodaj na początku pliku
up

Teraz włącz urządzenie podczas uruchamiania systemu w pliku [/etc/rc.conf].

root@vfbsd01:~ # sysrc pflog1_enable="YES"
pflog1_enable:  -> YES

Możemy teraz monitorować i rejestrować aktywność zapory. Dzięki temu możemy zobaczyć, kto nawiązuje połączenia z naszym serwerem i jakie rodzaje połączeń są nawiązywane.