![]() |
|||||
![]() |
|||||
![]() |
|||||
Strona startowa Filelist, INFORMATYKA, STEROWNIKI, sterowniki ASUS Eee PC, Eee PC (G) Freud- Kultura jako źródÅ‚o cierpieÅ„- opracowanie, Psychologia Filodemos z Gadary, Opracowania, notatki Flegon z Tralles, Opracowania, notatki Frynich, Opracowania, notatki Forristal - Hack Proofing Your Web Applications, Informatyka Filtrowanie Stateful - Inspection w Linuxie i BSD, --Dokumenty-- , Linux Filtrowanie, Analiza sygnałów Freesco, Opracowania informatyczne Futurama.The.Beast.With.A.Billion.Backs.2008.PROPER.DVDRip.XviD-NODLABS, Filmy, Futurama |
Filtrowanie pakietów w Liinuksie 2.4, Opracowania informatyczne[ Pobierz całość w formacie PDF ]Filtrowanie pakietów w Linuksie 2.4 Rusty Russell, lista pocztowa netfilter@lists.samba.org Wersja oryginalna: 1.26, 2002/01/24 13:42:53 Oryginał tego dokumentu znajduje się pod adresem: Tłumaczenie: Łukasz Bromirski, l.bromirski@mr0vka.eu.org Wersja tłumaczenia: 2.2, $Date: 2002/08/22 21:29:41 $ Oryginał tego tłumaczenia znajduje się pod adresem: Dokument ten opisuje zastosowanie narzędzia iptables w filtrowaniu niepożądanych pakietów, w linuksie z jądrem 2.4. 1. Wprowadzenie Witam Szanownego czytelnika. Zakładam, że wiesz co to adres IP, adres sieciowy, maska sieciowa, ruting i DNS. Jeśli nie, polecam przeczytanie HOWTO Network Concepts. To HOWTO oscyluje na granicy delikatnego wprowadzenia (które sprawi, że poczujesz się zadowolony z siebie, ale niezabezpieczony przed Światem Rzeczywistym) i surowego, pełnego opisu (które oszczędzi tylko największych twardzieli, a reszta będzie zmieszana, w stanie paranoi i poszukiwać będzie ciężkiego uzbrojenia). Twoja sieć nie jest bezpieczna . Problem umożliwienia szybkiej i wygodnej wymiany informacji a jednocześnie ograniczenia jej tylko do właściwych zastosowań, jest porównywalny do innych problemów takich jak zapewnienie wolność wypowiedzi i jednocześnie zapobieganiu wznoszenia okrzyków w stylu 'Pali się!' w zatłoczonym kinie. Ten problem nie zostanie rozwiązany w tym HOWTO. Zatem tylko ty możesz zadecydować jak wyglądać będzie kompromis. Spróbuję poinstruować cię w użytkowaniu dostępnych narzędzi, poinformuję o pewnych słabościach z których trzeba sobie zdawać sprawę, a wszystko to w nadziei że użyjesz tych informacji dla dobrych, a nie złych celów. Kolejny problem porównywalny z tym powyżej. (C) 2000 Paul `Rusty' Russell. Na licencji GNU GPL. 2. Gdzie jest oficjalna strona WWW? Czy jest lista e-mail? Są trzy oficjalne strony: z Dzięki Filewatcher . z Dzięki Zespołowi Samba i SGI . z Dzięki Harald'owi Welte . Możesz osiągnąć je na zasadzie równoważenia obciążenia przez DNS round-robin, wybierając adres i . Oficjalna lista pocztowa znajduje się na serwerze list Samba . 3. To co to jest Filtr Pakietów? 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. 3.1 Dlaczego mógłbym chcieć filtrować pakiety? Kontrola. Bezpieczeństwo. Czujność. Kontrola: 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). Bezpieczeństwo: 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ń. Czujność: 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. 3.2 Jak filtrować pakiety pod Linuksem? 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. Zapisywanie reguł na stałe 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 '). 4. Kim u diabła jesteś i dlaczego bawisz się moim kernelem? Jestem Rusty Russell; człowiek odpowiedzialny za ścianę ogniową IP Linuksa i jeszcze jeden koder który znalazł się we właściwym miejscu we właściwym czasie. Napisałem ipchains (zajrzyj do sekcji Jak filtrować pakiety pod Linuksem? ) powyżej by sprawdzić kto tak naprawdę to wszystko stworzył) i nauczyłem się wystarczająco dużo by tym razem filtrowanie pakietów wyszło dobrze. Tak sądzę. Doskonała firma WatchGuard WatchGuard sprzedająca ściany ogniowe Firebox, zaoferowała że będzie płacić mi za nic, więc mogłem spędzać swój czas pisząc ten dokument i zajmować się poprzednimi rzeczami. Przewidywałem że zajmie to 6 miesięcy, zajęło 12, ale na końcu czuję że zostało to zrobione Właściwie. Wiele razy przepisywane od początku, padnięty twardy dysk, ukradziony laptop, parę uszkodzonych systemów plików i jeden zniszczony ekran, ale jest. Póki jeszcze tu jestem, chciałbym wyklarować mylne wrażenia niektórych ludzi: nie jestem guru kernela. Wiem to wszystko, ponieważ moja praca spowodowała że kontaktowałem się z ludźmi którzy są guru: Davidem S. Millerem, Aleksiejem Kuziecowem, Andi Kleenem, Alanem Coksem. Są zajęci uprawianiem głębokiej magii, a ja mogłem pobawić się na płytkich wodach, tam gdzie jest bezpiecznie. 5. Bardzo krótki przewodnik Rusty'ego do filtrowania pakietów Większość ludzi ma pojedyńcze połączenie PPP do Internetu, i nie chce by ktokolwiek mógł łączyć się do nich, lub do ściany ogniowej: ## Załaduj moduły śledzenia połączeń (niepotrzebne jeśli wbudowane w kernel) # insmod ip_conntrack # insmod ip_conntrack_ftp ## Stwórz łańcuch blokujący nowe połączenia, z wyjątkiem tych od środka # iptables -N block # iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT # iptables -A block -j DROP ## Do łańcuchów INPUT i FORWARD dodaj skok do tego nowego łańcucha # iptables -A INPUT -j block # iptables -A FORWARD -j block 6. Jak pakiety podróżują przez filtry Kernel rozpoczyna pracę z trzema listami reguł w tabeli filtrującej; nazywane sa one łańcuchami ściany ogniowej , lub po prostu łańcuchami . Te trzy nazwane zostały INPUT ( wejściowy ), OUTPUT ( wyjściowy ) i FORWARD ( przekazujący ). Dla fanów ASCII-art, łańcuchy ułożone są w następujący sposób: _____ Przychodzący / \ Wychodzący -->[Decyzja ]--->|FORWARD|-------> [Rutingu ] \_____/ ^ | | v ____ ___ / \ / \ |OUTPUT| |INPUT| \____/ \___/ ^ | | ----> Proces lokalny ---- Trzy koła reprezentują trzy łańcuchy o których wspomniałem wyżej. Kiedy pakiet dociera do koła na diagramie, sprawdzany jest łańcuch reguł by zdecydować o losie pakietu. Jeśli łańcuch mówi że należy odrzucić (DROP) pakiet, jest on odrzucany tutaj, ale jeśli łańcuch mówi by zaakceptować pakiet (ACCEPT), kontynuuje on swoją podróż po diagramie. Łańcuch to lista reguł . Każda reguła mówi 'jeśli nagłówek pakietu wygląda tak, to zrobimy z tym pakietem następującą rzecz'. Jeśli reguła nie pasuje do pakietu, sprawdzana jest następna. Na koniec, jeśli nie ma więcej reguł, kernel sprawdza politykę (ang. policy ) danego łańcucha. W systemie w którym dba się o bezpieczeństwo, polityka mówi zwykle kernelowi by odrzucić (DROP) pakiet. 1. Kiedy pakiet dociera do maszyny (powiedzmy, przez kartę Ethernetową), kernel sprawdza najpierw adres przeznaczenia pakietu: nazywa się to routingiem. 2. Jeśli pakiet przeznaczony jest do tego kompuera, pakiet zostaje przepuszczony do łańcucha INPUT (wejściowego). Jeśli przejdzie go, otrzymuje go proces do którego był adresowany. 3. W innym przypadku, jeśli kernel nie ma włączonego przekazywania (ang. forwarding ), lub nie wie jak przekazać pakiet, jest on odrzucany. Jeśli przekazywanie jest włączone i pakiet jest przeznaczony do innego interfejsu sieciowego (jeśli w ogóle masz jeszcze jeden), pakiet przechodzi w prawo na naszym diagramie do łańcucha FORWARD (przekazującego). Jeśli zostaje zaakceptowany (ACCEPT), zostanie wysłany dalej. 4. Na koniec, program pracujący na tym komputerze może również wysyłać własne pakiety. Przejdą one od razu do łańcucha OUTPUT (wyjściowego): jeśli stwierdzi on że zaakceptuje pakiet (ACCEPT), pakiet przechodzi do właściwego interfejsu sieciowego. 7. Używanie iptables iptables ma całkiem szczegółowy podręcznik ( man iptables ), do którego warto zajrzeć jeśli chodzi ci o coś konkretnego. Ci z was którzy znają ipchains mogą po prostu zajrzeć do różnic pomiędzy iptables i ipchains ; oba narzędzia są bardzo podobne. Istnieje wiele rzeczy które możesz zrobić przy użyciu iptables . Zaczynasz z trzema wbudowanymi łańcuchami INPUT , OUTPUT i FORWARD , których nie możesz skasować. Spójrzmy na listę możliwych operacji na całych łańcuchach: 1. Stworzenie nowego łańcucha (-N). 2. Skasowanie pustego łańcucha (-X). 3. Zmiana polityki dla wbudowanego łańcucha (-P). 4. Wylistowanie reguł w łańcuchu (-L). 5. Wyczyszczenie łańcucha z reguł (-F). 6. Wyzerowanie liczników pakietów i bajtów we wszystkich regułach w łańcuchu (-Z). Jest również parę sposobów na manipulowanie regułami w obrębie łańcucha: 1. Dodanie nowej reguły do łańcucha (-A). 2. Wstawienie nowej reguły na pewnej pozycji w łańcuchu (-I). 3. Zamiana reguły na pewnej pozycji w łańcuchu (-R). [ Pobierz całość w formacie PDF ] |
||||
![]() |
|||||
Wszelkie Prawa Zastrzeżone! Jedyną nadzieją jest... nadzieja. Design by SZABLONY.maniak.pl. |
![]() |
||||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |