Netfilter

Netfilter Opis obrazu netfilter-logo.png.

Informacja
Opracowany przez Zespół Netfilter
Napisane w VS
System operacyjny Linux
Środowisko GNU / Linux
Rodzaj Firewall
Licencja GNU GPL
Stronie internetowej http://netfilter.org/

Netfilter to framework oprogramowania ( Framework ) implementujący zaporę ogniową w jądrze Linuksa od wersji 2.4 tego ostatniego. Zapewnia punkty zaczepienia w jądrze do przechwytywania i manipulowania pakietami sieciowymi podczas wywoływania procedur do odbierania lub przesyłania pakietów z interfejsów sieciowych .

Wersja 1.4.2 otrzymała certyfikat bezpieczeństwa pierwszego stopnia (CSPN) wydany przez Krajową Agencję Bezpieczeństwa Systemów Informatycznych .

Tryb pracy

Programy narzędziowe

iptables

Moduły jądra o nazwach ip_tables , ip6_tables , arp_tables (podkreślenia są częścią nazwy) i ebtables są systemami przechwytującymi dla Netfilter. Zapewniają oparty na tabelach system definiowania reguł zapory, które filtrują pakiety lub je przekształcają. Tabelami można zarządzać odpowiednio za pomocą narzędzi użytkownika iptables , ip6tables , arptables i ebtables .

Każdy obraz jest w rzeczywistości swoim własnym haczykiem, a każdy obraz został stworzony, aby służyć określonemu celowi. Jeśli chodzi o Netfilter, generalnie uruchamianie tych tabel w określonej kolejności w porównaniu z innymi tabelami. Jednak wszystkie tablice będą wykonywać tę samą funkcję przetwarzania tablic, aby je iterować i wykonywać reguły.

W tym kontekście łańcuchy odpowiadają miejscu wywołania stosu Netfilter, takim jak odbieranie pakietów (PREROUTING), renderowanie w miejscu (INPUT), przekazywanie (FORWARD), generowanie lokalnie (OUTPUT) i wysyłanie / wysyłanie pakietów (POSTROUTING). Moduły Netfilter, które nie udostępniają tabel (patrz poniżej), mogą również sprawdzać pochodzenie pakietów, aby wybrać tryb ich działania.

Śledzenie połączeń

Jedną z ważnych funkcji zbudowanych na frameworku Netfilter jest śledzenie połączeń. CT pozwala jądru śledzić wszystkie logiczne połączenia sieciowe lub sesje, a zatem przenosi wszystkie pakiety, które tworzą to połączenie. NAT polega na tych informacjach, aby równo tłumaczyć wszystkie pakiety, a iptables może używać tych informacji, aby działać jako trwała zapora.

Stan połączenia jest jednak całkowicie niezależny od jakiegokolwiek stanu wysokiego poziomu, takiego jak stan TCP lub SCTP. Po części jest to spowodowane tym, że gdy pakiety są właśnie w drodze (nie są dostarczane lokalnie), silnik TCP niekoniecznie musi być wywoływany. Nawet tryby bezpołączeniowe, takie jak transmisje UDP , IPsec (AH / ESP) , GRE i inne protokoły tunelowania, mają co najmniej jeden stan pseudo-połączenia. Heurystyka tych protokołów jest często oparta na wstępnie ustawionej wartości limitu czasu bezczynności, po której połączenie Netfilter jest przerywane.

Każde połączenie Netfilter jest jednoznacznie identyfikowane za pomocą krotki (protokół warstwy 3, adres źródłowy, adres docelowy, protokół warstwy 4, klucz warstwy 4). Klucz warstwy 4 zależy od protokołu transportowego: w przypadku protokołów TCP / UDP jest to numer portu; w przypadku tuneli jest to identyfikator tunelu. W przeciwnym razie klucz przyjmuje wartość zero, tak jakby nie był częścią krotki. Aby móc sprawdzić port TCP, pakiety muszą zostać zdefragmentowane.

Połączenia Netfilter można obsługiwać za pomocą narzędzia conntrack .

Iptables może sprawdzać informacje o połączeniu, takie jak stany, statusy itp. aby uczynić reguły filtrowania pakietów potężniejszymi i łatwiejszymi w zarządzaniu. Najczęściej stany to:

W praktyce pierwszy pakiet, który dostrzega podsystem conntrack, jest zatem klasyfikowany jako „nowy”. Pakiet odpowiedzi jest klasyfikowany jako „ustanowiony”. I odwrotnie, błąd ICMP jest „połączony”, a pakiet błędu ICMP, który nie pasuje do żadnego znanego połączenia, jest klasyfikowany jako „nieprawidłowy”.

Pomoc w śledzeniu połączeń

Dzięki zastosowaniu wtyczek CT może poznać protokoły warstwy aplikacji, a tym samym zrozumieć, że dwa lub więcej różnych połączeń jest „połączonych”. Weźmy na przykład pod uwagę protokół FTP. Nawiązywane jest połączenie sterujące, ale za każdym razem, gdy przesyłane są dane, ustanawiane jest oddzielne połączenie w celu ich przesłania. Po załadowaniu modułu nf_conntrack_ftp pierwszy pakiet połączenia danych FTP zostanie sklasyfikowany jako „połączony” zamiast „nowy”, ponieważ jest logiczną częścią istniejącego połączenia.

Pomocnicy sprawdzają tylko jedną paczkę naraz. Jeśli istotne informacje dla CT zostaną podzielone na dwa pakiety - z powodu fragmentacji IP lub segmentacji TCP - pomocnik niekoniecznie rozpozna wzorce i dlatego nie będzie w stanie wykonać swojej operacji. Fragmentacja IPv4 jest obsługiwana przez podsystem CT wymagający defragmentacji, mimo że segmentacja TCP nie jest przetwarzana. W przypadku FTP, pakiety są uważane za nieobjęte segmentacją „w pobliżu” polecenia PASV z rozmiarami sektorów (MSS) i dlatego nie są przetwarzane przez Netfilter.

Historia

Projekt netfilter / iptables został uruchomiony w 1998 roku przez Rusty Russell  (in) , który był również autorem poprzedniego programu ipchains . Chociaż projekt się rozrósł, założył Netfilter Core Team (lub po prostu coreteam , główny zespół programistów) w 1999 roku. Oprogramowanie, które produkują (nazywane teraz netfilter) jest objęte licencją GNU General Public License (GPL) i zostało zintegrowane z Linux 2.3 wMarzec 2000. Wsierpień 2003, Harald Welte powstał prezes coreteam, awKwiecień 2004po intensywnych badaniach w ramach projektu Netfilter nad produktami komercyjnymi, które rozpowszechniały oprogramowanie bez przestrzegania warunków licencji, Haraldowi Welte udało się uzyskać przełomowy nakaz przeciwko Sitecom Germany, który odmówił przestrzegania warunków licencji GPL. Wwrzesień 2007Patrick McHardy, który kierował rozwojem przez kilka ostatnich lat, został wybrany na nowego przewodniczącego głównego zespołu.

Przed iptables, głównym oprogramowaniem do tworzenia zapory ogniowej w Linuksie były ipchains (jądro Linuksa 2.2) i ipfwadm (jądro Linuksa 2.0), oparte na ipfw , programie pierwotnie zaprojektowanym pod BSD . ipchains i ipfwadm bezpośrednio modyfikowały kod sieciowy, aby umożliwić im manipulowanie pakietami, ponieważ nie było pakietu ogólnej struktury kontrolnej aż do netfiltra.

Podczas gdy ipchains i ipfwadm łączyły filtrowanie pakietów i NAT (w szczególności trzy typy NAT, zwane maskowaniem, przekierowywaniem portów i przekazywaniem), Netfilter rozdziela operacje pakietowe na kilka części, które opisano poniżej. Każdy z nich łączy się z różnymi punktami dostępowymi w zaczepach Netfilter w celu sprawdzenia pakietów. Podsystemy Connection Tracking i NAT są bardziej ogólne i wydajniejsze niż niższe wersje w ipchains i ipfwadm.

Uwagi i odniesienia

  1. http://www.ssi.gouv.fr/fr/produits-et-prestataire/produits-certify-cspn/certificat_cspn_2009_04.html

Zobacz też

Powiązane artykuły

Linki zewnętrzne

Strony główne:

Dokumentacja: