20 kwiecień 2010
Wydrukuj tę stronę

Logi Firewalla w osobnym pliku

Kategorie:  Server  Gentoo  Linux

Jak zapisywać logi firewalla opartego na Iptables do osobnego pliku.

Jeśli kiedykolwiek konfigurowałeś firewalla opartego o IPtables, musisz wiedzieć, że śledzenie zdarzeń generowanych przez firewall, nie jest takim prostym zadaniem. Najprawdopodobniej firewall będzie zapisywał informację do /var/log/messages lub /var/log/syslog (zależnie od dystrybucji i konfiguracji). Na moich komputerach (zarówno serwerach jak maszynach biurkowych), używam bardzo prostego podejścia, które sprawia, że firewall zapisuję swoje informacje w osobnym pliku. Jest mi zdecydowanie prościej znaleźć informację, której potrzebuje i podglądać zdarzenia firewalla na żywo używając osobne pliku. To podejście powinno zadziałać w każdej dystrybucji, i dla każdego opartego na IPtables IPv4 firewalla, ale ponieważ jestem użytkownikiem Gentoo opiszę wszystkie kroki jakie administrator Gentoo Linuxa musi wykonać aby jego firewall zapisywał informację w odrębnym pliku.

Aby zapewnić sobie zapisywanie informacji do osobnego pliku wykorzystamy specjalny program nazwany ulogd. Demon ulog może zapisywać informację w osobnym pliku czy nawet bazie danych jeśli tylko tego potrzebujesz. Jako, że osobiście nie chcę używać bazy danych te kwestię pozwolę sobie pominąć, ale konfiguracja jest analogiczne, trzeba tylko utworzyć sobie jakąś bazę danych do przechowywania informacji.

Zanim zainstalujemy uloga, musimy upewnić się, że nasza konfiguracja kernela pozwoli nam używać tego programu logującego. Potrzebujemy modułu stanowiącego cel filtra pakietów dla ulog. Możesz to sprawdzić tą prostą komendą:

zcat /proc/config.gz | grep CONFIG_IP_NF_TARGET_ULOG

Jeśli widzisz: "CONFIG_IP_NF_TARGET_ULOG=m" jeśli gotów do instalacji uloga. Jeśli natomiast widzisz: "# CONFIG_IP_NF_TARGET_ULOG is not set", w takim wypadku musisz wejść do scieżki przechowującej źródła kernela i zmienić jego konfigurację. Jeśli używasz menuconfig, przejdź do Networking Support -> Networking Options -> Network packet Filtering Framework (Netfilter) -> IP: Netfilter Configuration, zaznacz odpowiednią opcję, zapisz zmiany zrekompiluj i zainstaluj nowy kernel. Porównaj z poniższym zrzutem ekranu.

Konfiguracja kernela dla Uloga

Jeśli upewniliśmy się, że mamy wsparcie dla celu uloga w konfiguracji filtra pakietów naszego kernela, możemy zainstalować teraz ulogd. W Gentoo zrobilybyśmy to tak:

emerge -av app-admin/ulogd

Jeśli chcesz wykorzystać bazę danych dodaj flagi USE, które odpowiadają nazwie wykorzystywanej przez ciebie bazy. Logowanie do pliku nie wymaga dodatkowych flag USE.

Teraz możesz dokonać edycji pliku konfiguracyjnego w ulubionym edytorze tekstu. Na przykład:

nano /etc/ulogd.conf

Aby ulog mógł zapisywać informację firewalla, musisz podać odpowiednią wtyczkę wejściową (jeśli chciałbyś logować informację do bazy danych postąpisz tak samo spójrz na zakomentowane linie w pliku konfiguracyjnym)

# output plug-ins.
plugin="/usr/lib/ulogd/ulogd_LOGEMU.so"
 

Następnie odnajdź w pliku konfiguracyjnym sekcje danej wtyczki aby wprowadzić nazwę pliku, w którym będą zapisywane informacje:

[LOGEMU]
file="/var/log/firewall.log"
sync=1

Oto cała konfiguracja jaką trzeba wykonać dla logowania w pliku, dla bazy danych trzeba by było poddać edycji sekcje dotyczące wtyczki danej bazy aby wskazać gdzie zapisywać informację.

Teraz upewnij się, że ulogd będzie startował jako usługa systemowa i uruchom go. W Gentoo zrobilibyśmy to tak:

rc-update add ulogd default
/etc/init.d/ulogd start

Ostania rzecz jaką musimy zrobić to zmusić nasz firewall aby zaczął porozumiewać się ulogiem. Normalnie w twojej konfiguracji dla IPtables znajdziesz linie podobne do tych:

  1. #allow connections to ssh
  2. -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j LOG --log-prefix "ACCEPT IP SSH: "
  3. -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

W ten sposób możesz zapisywać zdarzenia firewall do loggera systemowego, zanim zaakceptujesz połączenia, aby wykorzystać ulogd do zapisywania informacji po prostu zmień te lnie na:

  1. # allow connections to ssh
  2. -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ULOG --ulog-prefix "ACCEPT SSH: "
  3. -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Oczywiście możesz nadal zatrzymać cel sysloga, jeśli sobie życzysz, na przykład na wypadek jeśli ulog się wyłoży. Posiadanie uloga pozwala ci obserwować co dzieję się na firewallu po prostu wykonując tą prostą komendę:

tail -f /var/log/firewall.log

Aby artykuł był kompletny muszę dodać, że powinieneś także stworzyć plik rotacji logów systemowych aby zająć się rotowaniem logów firewalla. Mógłby on na przykład wyglądać tak:

  1. /var/log/firewall.log {
  2. daily
  3. dateext
  4. olddir /var/log/old/firewall
  5. rotate 365
  6. missingok
  7. nocompress
  8. notifempty
  9. nocreate
  10. sharedscripts
  11. postrotate
  12. /etc/init.d/ulogd restart > /dev/null
  13. endscript
  14. }
  15. /var/log/ulog.log {
  16. daily
  17. nocreate
  18. dateext
  19. rotate 2
  20. olddir /var/log/old/ulog
  21. missingok
  22. notifempty
  23. nocompress
  24. sharedscripts
  25. postrotate
  26. /etc/init.d/ulogd restart > /dev/null
  27. endscript
  28. }

Więcej informacji znajdziesz tutaj.




Komentarze

Jeśli znalazłeś jakieś błędy w powyższej informacji lub po prostu chcesz wypowiedzieć swoje zdanie na jej temat, będę wdzięczny za pozostawienie komentarza.
Wszystkie komentarze będą pokazywać się na stronie po tym jak zostaną zatwierdzone. Przepraszam za to ale chcę mieć pewność, że moja strona będzie wolna od obraźliwych lub wulgarnych treści. Nie mam nic przeciwko krytyce ale zrób to właściwie dobierając słowa.

Pozostaw komentarz