Firewall nie spełnia swojego zadania jeśli zostawia otwarte okno dla ataków przez nieużywane usługi. Hakerzy mogą zdobyć twierdzę i zmodyfikować ją dla swoich potrzeb.
Ważnym krokiem jest wyłączenie niepotrzebnych usług.. Plik /etc/inetd.conf kontroluje rzecz o nazwie ,,super serwer” – kontroluje uruchamianie usług na żądanie.
Kompletnie wyłączamy: netstat, systat, tftp, bootp oraz finger, kiedy już to zrobimy wysyłamy sygnał HUP do procesu inetd komendą: ” kill -HUP < pid > ” , gdzie < pid > jest numerem procesu inetd. Spowoduje to powtórne przeczytanie przez inetd pliku konfiguracyjnego (inetd.conf) i restart.
W tym miejscu możemy sprawdzić czy jesteśmy w stanie dostać się do portu obsługującego netstat telnet localhost 15 Jeśli otrzymamy wynik z netstata oznacza to, że zrestartowanie inetd nie odbyło się prawidłowo.
Konfiguracja filtrowania IP (IPFWADM)
By zacząć konfigurację filtrowania IP administrator musi włączyć przesyłanie pakietów IP w swoim jądrze i jego system powinien odsyłać wszystko co mu zostanie przesłane. Nasza tablica trasowania powinna być ustawiona i administrator powinien mieć dostęp tak wewnątrz jak do zewnętrznej Sieci. Domyślnie IP Forwarding w jądrze systemu odsyła wszystko. Dlatego nasze skrypty startowe firewalla powinny rozpoczynać swoja pracę od zakazania dostępu dla wszystkich i zerwania wszelkich połączeń dozwolonych w poprzednim uruchomieniu ipfw.
# Ustawianie rozliczania i odsyłania pakietów IP
# Forwarding
# Domyślnie wszystkie usługi są zakazane.
ipfwadm -F -p deny
# Zerwij wszystkie połączenia
ipfwadm -F -f
ipfwadm -I -f
ipfwadm -O -f
W tym momencie mamy doskonały firewall, który nie przepuszcza niczego. Bez wątpliwości pewna cześć usług powinna być przesyłana (tego dotyczy następny przykład) [1].
# przesyłanie poczty do naszego MTA
ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10
25
# przesyłanie połączeń pocztowych do innych MTA
ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0
1024:65535
# przesyłanie WWW do naszego serwera
/sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D
196.1.2.11 80
# przesyłanie WWW do serwerów zewnętrznych
/sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0
1024:65535
# przesyłanie ruchu DNS
/sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D
196.1.2.0/24
Jeśli administrator jest zainteresowany rozliczaniem ruchu przechodzącego przez jego firewall, może zastosować niżej przedstawiony skrypt, który liczy każdy z pakietów.
# Zerwanie wszystkich połączeń
ipfwadm -A -f
# Rozliczanie
/sbin/ipfwadm -A -f
/sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24
/sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24
[1] na podstawie R. Ziegler „Linux. Firewalls“