Filtr pakietów to takie oprogramowanie, które sprawdza nagłówki (ang. header) pakietów w trakcie jak przechodzą przez maszynê na której działa i decyduje o ich losie. Może zdecydowaæ, że pakiet zostanie odrzucony (ang. DROP, tzn. tak jakby pakiet nigdy nie dotarł), zaakceptowany (ang. ACCEPT, tzn. pozwoli mu przejśæ), lub coś bardziej skomplikowanego.
W Linuksie, filtrowanie pakietów jest wbudowane w kernel (jako moduł lub po prostu wbudowane) i jest parê jeszcze sprytniejszych rzeczy które możesz zrobiæ, ale generalnie idea polega na sprawdzaniu nagłówków i decydowaniu o losie pakietów.
Kontrola. Bezpieczeñstwo. Czujnośæ.
kiedy używasz Linuksa by połaczyæ twoją wewnêtrzną sieæ z inną siecią (powiedzmy z Internetem) masz okazjê wpuściæ trochê różnych typów ruchu i odrzuciæ inne. Na przykład, nagłówek pakietu posiada adres docelowy pakietu, wiêc możesz odrzucaæ pakiety które podróżują do określonych czêści sieci zewnêtrznej. Innym przykładem może byæ to: używam Netscape do oglądania archiwów Dilbert'a. Jest tam masa reklam pochodzących z adresu doubleclick.net, wiêc Netscape traci czas by je ładowaæ. Pouczenie filtra pakietów by nie wpuszczał pakietów podróżujących do i z tego adresu rozwiązuje ten problem (jednakże jest parê innych sposobów by zrobiæ to lepiej, sprawdź Junkbuster).
kiedy Twój linuks jest jedynym komputerem pomiêdzy chaosem Internetu i twoją ładną, uporządkowaną siecią, miło jest wiedzieæ że możesz obłożyæ restrykcjami to co nadchodzi do twych drzwi. Na przykład, możesz pozwoliæ by wszystko wychodziło z twojej sieci, ale możesz byæ zaniepokojony znanym atakiem 'Ping of Death' nadchodzącym od różnych złośliwych użytkowników sieci. Innym przykładem może byæ twoje życzenie, by nie zezwalaæ na telnet'owanie siê na Twój komputer, mimo że wszystkie konta mają hasła; prawdopodobnie chcesz byæ (jak wiêkszośæ ludzi) raczej obserwatorem w Internecie a nie serwerem - po prostu nie dawaæ siê nikomu do Ciebie dołączaæ, poprzez filtrowanie nadchodzących pakietów służących do ustanawiania połączeñ.
czasami źle skonfigurowana maszyna w sieci lokalnej zadecyduje o skierowaniu paru pakietów do sieci zewnêtrznej. Miło jest móc poinstruowaæ filtr pakietów by dał Ci znaæ o takich anormalnych zachowaniach; może bêdziesz chciał coś z tym zrobiæ, albo jesteś po prostu ciekawy z natury.
Kernele Linuksa miały wbudowane filtrowanie pakietów od serii 1.1.
Pierwsza generacja, bazująca na ipfw z BSD, została przeniesiona przez
Alana Cox'a pod koniec 1994. Została ona rozbudowana przez Jos'a Vos'a
i innych dla Linuksa wersji 2.0; narzêdzie działające w przestrzeni
użytkownika 'ipfwadm
' kontrolowało reguły filtrujące. W połowie
1998, dla Linuksa 2.2, zmieniłem dosyæ mocno kernel, z pomocą Michael'a
Neuling'a, i wprowadziłem narzêdzie również działające w przestrzeni
użytkownika nazwane 'ipchains
'. Ostatecznie, w połowie 1999 dla
Linuksa 2.4 stworzono kolejne narzêdzie 'iptables
'. Jest to
właśnie to iptables
na którym skoncentrowane jest to HOWTO.
Potrzebujesz kernel z infrastrukturą netfilter: netfilter to ogólny
szkielet w kernelu Linuksa do którego mogą dołączaæ siê inne moduły
(takie jak moduł iptables). Oznacza to że potrzebujesz kernel w wersji
2.3.15 lub późniejszej, i w czasie konfiguracji kernela musisz
zaznaczyæ 'Y
' przy opcji 'CONFIG_NETFILTER
'.
Narzêdzie iptables
wstawia i kasuje reguły z tabeli
filtrowania pakietów kernela. Oznacza to, że cokolwiek do niej
wstawisz, zostanie stracone po restarcie; zajrzyj do
sekcji w której opisujemy zapisywanie reguł
po informacje jak upewniæ siê że po kolejnym starcie linuks
odtworzy je.
iptables
zastêpuje ipfwadm
i ipchains
: zajrzyj
do
sekcji opisującej używanie ipfwadm i ipchains
po informacje jak bezboleśnie uniknąæ przesiadania siê na iptables
jeśli używasz jednego z tych narzêdzi.
Twoje aktualne ustawienia ściany ogniowej zapisane są w kernelu i w
związku z tym znikną po restarcie. Możesz wypróbowaæ skrypty
iptables-save
i iptables-restore
by odpowiednio
zapisaæ je do i odtworzyæ z pliku.
Innym sposobem może byæ umieszczenie komend wymaganych by ustawiæ
twoje reguły w skrypcie wykonywanym w czasie startu. Upewnij siê, że zrobi
on coś inteligentnego w wypadku gdyby coś poszło nie tak
(zwykle wywołanie 'exec /sbin/sulogin
').