[Wstecz: Packet Tagging] [Spis treści] [Dalej: Wydajność]
Aby wyświetlić zawartość pliku logów:
# tcpdump -n -e -ttt -r /var/log/pflog
Oczywiście przeglądanie plkiu pflog przy pomocy tcpdump(8), nie daje wyników w czasie rzeczywistym. Wyświetlanie logowanych pakietów na bierząco może być osiągnięte przy pomocy interfejsu pflog0:
# tcpdump -n -e -ttt -i pflog0
UWAGA: Podczas analizowania logów, uwagę należy zwracać na szczegółowe dekodowanie protokołów przez tcpdump (tryb "dokładny" aktywowany opcją -v). Dekoder zawarty w programie tcpdump nie ma zbyt chwalebnej przeszłości jeśli chodzi o bezpieczeństwo. Przynajmniej teoretycznie możliwe jest przeprowadzenie opóźnionego ataku poprzez wysyłanie pakietów mających zostać zalogowanymi. Jest zalecaną praktyką, aby przed rozpoczęciem przeglądania plików logów w ten sposób, przenieść je z firewalla na inną maszynę.
Szczególna ostrożność powinna być zachowana w stosunku do zabezpieczenia dostępu do plików logów. Domyślnie, pflogd będzie zapisywać 96 bajtów pakietu w pliku logów. Dostęp do logów może skutkować uzyskaniem dostępu do wrażliwych danych transportowanych w pakietach (jak na przykład nazwy użytkowników i hasła usług telnet(1) lub ftp(1)).
# tcpdump -n -e -ttt -r /var/log/pflog port 80
Aby uzyskać jeszcze bardziej prezycjną informację, można ograniczyć wyświetlane dane do konkretnych kombinacji port-host:
# tcpdump -n -e -ttt -r /var/log/pflog port 80 and host 192.168.1.3
Ta sama technika może być zastosowana podczas odczytu bezpośrednio z interfejsu pflog0:
# tcpdump -n -e -ttt -i pflog0 host 192.168.4.2
Warto podkreślić, że nie ma to wpływu na to, które pakiety są zapisywane w pliku logów pflogd, a jedynie na to, co jest wyświetlane przez tą komendę.
Standardowe reguły filtrujące tcpdump(8) zostały rozszerzone w wersji tego programu dla OpenBSD o dodatkowe możliwości filtrowaia logów pflogd:
Przykład:
# tcpdump -n -e -ttt -i pflog0 inbound and action block and on wi0
Wyświetla logi w czasie rzeczywistym, dla nadchodzących pakietów, które zostały zablokowane na interfejsie wi0.
Prace rozpoczyna się od utworzenia użytkownika pflogger, jego shell to /sbin/nologin. Najprościej zrobić to przy pomocy adduser(8).
Po dodaniu użytkownika pflogger, należy przekopiować dwa proste skrypty:
/etc/pflogrotate
FILE=/home/pflogger/pflog5min.$(date "+%Y%m%d%H%M") kill -ALRM $(cat /var/run/pflogd.pid) if [ $(ls -l /var/log/pflog | cut -d " " -f 8) -gt 24 ]; then mv /var/log/pflog $FILE chown pflogger $FILE kill -HUP $(cat /var/run/pflogd.pid) fi
/home/pflogger/pfl2sysl
for logfile in /home/pflogger/pflog5min* ; do tcpdump -n -e -ttt -r $logfile | logger -t pf -p local0.info rm $logfile done
Przejść do edycji zadań demona cron dla użytkownika root:
# crontab -u root -e
Dodać dwie następujące linie:
# rotate pf log file every 5 minutes
0-59/5 * * * * /bin/sh /etc/pflogrotate
Utworzyć zadania demona cron dla użytkownika pflogger:
# crontab -u pflogger -e
Dodać dwie poniższe linie:
# feed rotated pflog file(s) to syslog
0-59/5 * * * * /bin/sh /home/pflogger/pfl2sysl
Dodać następującą linie do /etc/syslog.conf:
local0.info /var/log/pflog.txt
Dodatkowo, aby prowadzić logi na zdalnym serwerze przeznaczonym do tego celu, należy dodać następującą linie:
local0.info @syslogger
Dodatkow upewnić się, że host syslogger jest zdefiniowany w pliku hosts(5).
Utwórz plik /var/log/pflog.txt, aby umożliwić syslog dopisywanie do niego logów.
# touch /var/log/pflog.txt
Zmiany staną się aktywne po przeładowaniu demona syslogd:
# kill -HUP $(cat /var/run/syslog.pid)
Wszystkie logowane pakiety są teraz wysyłane do /var/log/pflog.txt. Jeśli druga linia została także dodana, są one także wysyłane do zdalnego hosta logującego syslogger.
Skrypt /etc/pflogrotate już działa i zastępuje /var/log/pflog więc rotacja pflog dokonywana przez newsyslog(8) nie jest już potrzebna i powinna być wyłączona. Ponieważ /var/log/pflog.txt przejmuję zadania /var/log/pflog, jego rotacja powinna być aktywowana. Tak więc należy zmienić /etc/newsyslog.conf w następujący sposób:
#/var/log/pflog 600 3 250 * ZB /var/run/pflogd.pid /var/log/pflog.txt 600 7 * 24
PF będzie teraz zapisywał logi w formacie ASCII do pliku /var/log/pflog.txt. Odpowiednio ustawiony plik /etc/syslog.conf sprawi, że dziennik prowadzony będzie także na zdalnym serwerze logów. Logowanie nie będzie natychmiastowe i może upłynąć około 5-6 minut (przerwa pomiędzy zadaniami cron), zanim logowane pakiety pojawią się pliku.
[Wstecz: Packet Tagging] [Spis treści] [Dalej: Wydajność]