Logi Firewalla w osobnym pliku
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](uploads/images/blog/KernelUlogConfig.png)
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:
#allow connections to ssh -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j LOG --log-prefix "ACCEPT IP SSH: " -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:
# allow connections to ssh -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ULOG --ulog-prefix "ACCEPT SSH: " -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:
/var/log/firewall.log { daily dateext olddir /var/log/old/firewall rotate 365 missingok nocompress notifempty nocreate sharedscripts postrotate /etc/init.d/ulogd restart > /dev/null endscript } /var/log/ulog.log { daily nocreate dateext rotate 2 olddir /var/log/old/ulog missingok notifempty nocompress sharedscripts postrotate /etc/init.d/ulogd restart > /dev/null endscript }
Więcej informacji znajdziesz tutaj.
GNU Free Documentation License or Creative Commons Share Alike
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.
Trwa przetwarzanie komentarza.