Slackware Linux
Rysunek 5.11.
Schemat przetwarzania pakietów z wykorzystaniem tablic i łańcuchów przetwarzania
Sieć
__t__
Tablica: mangle Łańcuch: PREROUTING
__ i_
Tablica: nat
Łańcuch: PREROUTING
Tak
Tablica: mangle Łańcuch: INPUT
JL_
Tablica: filter Łańcuch: INPUT
Procesy
Tablica: mangle Łańcuch: OUTPUT
Tablica: nat Łańcuch: OUTPUT
Tablica: filter Łańcuch: OUTPUT
Pakiet przeznaczony dla tego komputera?
Routing
Nie
Tablica: mangle Łańcuch: FORWARD
Tablica: filter Łańcuch: FORWARD
_
Tablica: mangle Łańcuch: POSTROUTING
Y
Tablica: nat
Łańcuch: POSTROUTING
Sieć
W ramach każdej z tablic możesz tworzyć własne łańcuchy przetwarzania pakietów danych i odwoływać się do nich w razie potrzeby. W ten sposób możesz znacznie przyspieszyć działanie zapory sieciowej, nie tracąc możliwości rozbudowy jej ftinkcjo-nalności czy zwiększania stopnia szczegółowości działania filtrów. Zasady przetwarza-nia pakietów w ramach łańcuchów są następujące:
♦ natrafienie na spełnioną regułę nakazującą przyjęcie lub odrzucenie pakietu powoduje natychmiastowe przerwanie przetwarzania tego pakietu oraz przyjęcie
lub odrzucenie go;
♦ natrafienie na spełnioną regułę rejestrowania pakietu w dzienniku powoduje dokonanie rejestracji i kontynuowanie przetwarzania pakietu od kolejnej reguły
♦ dojście do końca łańcucha przetwarzania pakietów powoduje powrót do łańcucha nadrzędnego i kontynuowanie przetwarzania od kolejnego jego wpisu lub — w przypadku standardowych łańcuchów tablic — wykonanie domyślnej akcji, określonej przez administratora (domyślnie jest to akcja ACCEPT, nakazująca przyjęcie pakietu).
Spełnienie warunków reguły zapory sieciowej może powodować skok do jednego ze zdefiniowanych przez administratora własnych łańcuchów przetwarzania pakietów i dalsze przetwarzanie tego pakietu lub też podjęcie jednej ze standardowych akcji (tak zwanych celów — ang. target). Listę najczęściej stosowanych celów pakietów przedstawiono w tabeli 5.1.
Konfiguracja zapory iptables polega na wydawaniu poleceń zmieniających jej stan: dodających nowe reguły przetwarzania pakietów, usuwających je lub czyszczących całe tablice formuł.
Najwygodniej jest umieścić wszystkie formuły czyszczące tablice i tworzące nowe wpisy w pliku /etc/rc.d/rc.firewall. Ponieważ plik taki w standardowej instalacji systemu nie istnieje, musisz go najpierw stworzyć:
touch /etc/rc.d/rc.firewall chmod 700 /etc/rc.d/rc.firewall
i dopiero po utworzeniu poddać edycji poleceniem mcedit /etc/rc.d/rc.firewall. Z kolei, aby plik ten był uruchamiany zawsze podczas ładowania systemu operacyjnego do pamięci (i w efekcie aby utworzona zapora sieciowa zawsze zaczynała pracę po ponownym uruchomieniu serwera), warto na końcu pliku /etc/rc.d/rc.local dopisać wiersz:
/etc/rc.d/rc.fi rewa 11
w sposób analogiczny jak przy okazji automatycznego uruchamiania programu sshprot (co zostało omówione wcześniej w tym rozdziale).
W dalszej części tego rozdziału znajdziesz przykład kompletnej zawartości przykładowego pliku /etc/rc.d/rc.firewall.
Wyczyszczenie używanych tablic i łańcuchów przetwarzania pakietów powinno być jednym z pierwszych zadań skryptu powłoki konfigurującego zaporę sieciową. Dzięki temu możliwe będzie wielokrotne wykonywanie skryptu (i dzięki temu szybkie rekon-figurowanie zapory sieciowej), przy czym za każdym razem konfiguracja odbywać się będzie od nowa.
Do czyszczenia tablic i łańcuchów (co skutkuje usunięciem z nich wszystkich stworzonych reguł filtrowania i przetwarzania pakietów) służy opcja -F polecenia iptables. Parametrem może być albo sama nazwa tablicy (podana w postaci opcji -t) — w takim przypadku czyszczone są wszystkie łańcuchy w danej tablicy — lub też nazwa tablicy wzbogacona o nazwę konkretnego łańcucha.