[8] PF – Packet Filter – Rejestrowanie aktywności zapory
31 stycznia 2024W 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.