Zabezpieczanie sieci za pomocą Iptables - Proxy - NAT - IDS: CZĘŚĆ 2

W zakładać przedniej Widzieliśmy konfigurację IPTables do działania jako zapora ogniowa. Teraz możemy zobaczyć, jak stworzyć te skrypty, aby reguły były wykonywane automatycznie po uruchomieniu systemu, a także jak możemy na chwilę wyeliminować lub zatrzymać te reguły.

Zanim zrobimy skrypt i pokażemy, jak wygląda, porozmawiajmy trochę o NAT i koncepcji tego, co chcemy zrobić z tym sprzętem.

NAT i kontekst przykładu.

Kiedy mówimy o NAT, możemy to pomylić z routingiem, ponieważ oba są odpowiedzialne za łączenie ze sobą dwóch różnych sieci. Prawdziwa różnica polega na tym, że routing jest stosowany do przechodzenia z jednej sieci lokalnej do drugiej, a ta druga sieć może łączyć się z routerem i wychodzić z Internetu.

Natomiast kiedy mówimy o NAT, mówimy o routingu pakietów z sieci lokalnej lub prywatnej do sieci publicznej lub Internetu. Czyni to poprzez maskowanie pakietów, umieszczając publiczny adres IP, z którym trafiają do Internetu. Oznacza to, że nie potrzebujemy routera, ponieważ publiczny adres IP jest bezpośrednio własnością komputera z systemem GNU / Linux.

nat

Będziemy pracować nad tym z hasłem, że używamy naszego Linuksa jako routera / zapory ogniowej, aby połączyć się z Internetem z sieci lokalnej. Ale tutaj mogą pojawić się dwa scenariusze.

  • Że nasz Linux znajduje się pomiędzy routerem usługodawcy a siecią lokalną.

W tym przypadku między routerem a naszym Linuksem byłaby sieć, a między Linuksem a siecią lokalną byłaby inna sieć. Oznacza to, że nasz router nie musiałby wykonywać NAT jako takiego, z prostym routingiem ruchu, jak wyjaśniono w zakładać przedniej Dobrze byłoby.

  • To, że nasz Linux ma interfejs podłączony do sieci lokalnej i przez inny interfejs otrzymuje bezpośrednio publiczny adres IP, z którym się porusza.

Oznacza to, że nasz Linux musi wykonywać NAT, aby pakiety mogły dotrzeć do Internetu.

Na potrzeby tego małego laboratorium powiemy zatem, że nasz Linux bezpośrednio otrzymuje publiczny adres IP i dzięki temu może testować efekty NAT.

Aby wykonać NAT, używamy składni

 iptables -t nat -A POSTROUTING -O eth1 -j MASKARADA

Gdzie eth1 to interfejs, z którego otrzymujemy publiczny adres IP, czyli z którego idziemy do Internetu.

MASQUERADE jest używane, gdy adres IP jest publiczny, ale może się zmieniać w czasie (dynamicznie). W przeciwnym razie możemy użyć SNAT - do źródłowego adresu IP

Tworzenie skryptu iptables

Załóżmy więc, że: 172.26.0.0 to nasza sieć lokalna, a 81.2.3.4 to publiczny adres IP, z którym łączymy się z Internetem. (to jest statyczny adres IP). Mam interfejsy eth0 (sieć lokalna)

eth1 (sieć publiczna).

Zasadniczo polega na utworzeniu skryptu, który można wywołać z /etc/init.d/firestop (na przykład). iz tego skryptu możemy uruchomić, zatrzymać lub sprawdzić stan naszej konfiguracji, tak jak robimy to z każdym demonem systemowym.

Załóżmy, że moje reguły IPTABLES SĄ:

#! / bin / bash # Zapora ogniowa mojego domu. # Nazwa pliku / etc / firewall_on # Autor: Jlcmux Twitter: @Jlcmux # # Basic policy. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT do udostępniania Internetu z eth0 do eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4
# # Zezwalaj na połączenia przychodzące uruchamiane przez moje iptables -A FORWARD -m stan --state USTANOWIONO, POWIĄZANE -j AKCEPTUJ # # Autoryzowany ruch wychodzący iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j AKCEPTUJ iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j AKCEPTUJ iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j AKCEPTUJ
Nie zapominajmy o nadaniu uprawnień do wykonywania

Wyjaśnienie:

Skrypt zasadniczo wykonuje następujące czynności:

  1. Najpierw ogranicz całą nawigację, połączenia i ruch. (Podstawowe zasady zapory)
  2. Następnie utwórz NAT z docelowym eth1. co wskazuje, że mamy statyczny publiczny adres IP «81.2.3.4»
  3. Otwiera porty niezbędne do odbioru zainicjowanych przeze mnie pakietów połączeń.
  4. Akceptuje wychodzący ruch HTTP, HTTPS i DNS.
Reguły są przeznaczone dla ruchu DO PRZODU, ponieważ używamy naszego Linuksa jako routera, więc zasady są używane dla ruchu, który przechodzi przez system Linux, to znaczy działa jako pośrednik. Oznacza to, że nasz Linux nie może tak naprawdę nawigować ani odbierać żadnych danych bezpośrednio. Dotyczy tylko podłączonych do niego komputerów, ale nie samego siebie

Jeśli chcemy użyć naszego sprzętu do nawigacji, powinniśmy powtórzyć linie i odpowiednio zmienić FORWARD na INPUT lub OUTPUT.

Anuluj skrypt.

Teraz utworzymy skrypt, który zastępuje wszystkie powyższe i pozostawia komputer czysty z tego wszystkiego. (Do celów testowych lub po prostu chcemy wyłączyć zaporę).

#! / bin / bash # Zapora sieciowa mojego domu. # Nazwa pliku / etc / firewall_off # Autor: Jlcmux Twitter: @Jlcmux # #Usuwanie reguł iptables -F # #Stosowanie domyślnych polityk (akceptowany jest cały ruch) iptables -P WEJŚCIE AKCEPTUJ iptables -P WYJŚCIE AKCEPTUJ iptables -P DALEJ AKCEPTUJ

Automatyzacja.

Teraz musimy stworzyć skrypt wewnątrz /etc/init.d/ a usługa uruchamia się automatycznie i możemy nią zarządzać w wygodniejszy sposób.

#! / bin / bash # Zapora ogniowa mojego domu. # Nazwa pliku /etc/init.d/ firewall # By Jlcmux Twitter: @Jlcmux case $ 1 na początku) / etc / firewall_on ;; stop) / etc / firewall_off ;; status) iptables -L ;; *) echo "Zła składnia. Poprawna = /etc/init.d/ firewall start | stop | status ;; esac

Wyjaśnienie:

Ten ostatni skrypt, który wstawiliśmy /etc/init.d/ z imieniem zapora ogniowa. Jeśli więc chcemy zarządzać firewallem, możemy skorzystać z polecenia /etc/init.d/ firewall start. W ten sam sposób możemy to zatrzymać lub zobaczyć stan.

Teraz zamierzamy edytować plik /etc/rc.local i wstawiamy coś takiego: /etc/init.d/ firewall start zacząć od systemu.

Także. To jest druga część. Mam nadzieję, że coś wam to przyniesie. W następnym widzimy Proxy i IDS.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   łowca powiedział

    Jeśli używasz Debiana, w repozytorium znajduje się pakiet (iptables-persistent), który dokładnie to robi, zrzuca aktualne reguły w /etc/iptables/rules.v4 lub v6 w zależności od tego, czego używasz, a następnie stosuje je do ciebie, kiedy podnosisz system.

  2.   Ocz powiedział

    W praktyce, aby wyczyścić konfigurację konwencjonalnej zapory ogniowej iptables (a używanie NAT nie byłoby takie z mojego punktu widzenia), w większości przypadków wystarczyłoby wyczyszczenie reguły i zresetowanie domyślnych polityk do ACCEPT.
    Ale w teorii, o ile wiem, oprócz tego musisz również wyczyścić niedomyślne ciągi i zresetować liczniki. Działania, które należy wykonać pamiętając, że oprócz „filtru” istnieją inne tabele (w tym celu konieczne jest przeczytanie pliku „/ proc / net / ip_tables_names”).

    Nawiasem mówiąc, ortodoksja mówi, że zapora ogniowa musi już działać, zanim sieć zostanie uruchomiona. Nie wiem, jak można to osiągnąć w innych systemach Linux, ale w przypadku typu Debian skrypt można dostosować i ustawić w katalogu „/etc/network/if-pre-up.d/”.

    Dobry firewall dla wszystkich. 😉

  3.   Łodzik powiedział

    Witam, post jest bardzo dobry. Przeczytałem całe 2 tomy.

    Czekam na następne 🙂

  4.   Anonimo powiedział

    Pytanie z mojej ignorancji, kontynuujemy z iptables, ale dla kilku wersji jądra mamy nftables, już testuję, pytania są takie, czy nftables jest czymś w rodzaju beta w stosunku do iptables? Czy iptables będzie używane znacznie dłużej?

    Dziękuję.

    1.    jukiteru powiedział

      nftables zawiera wszystkie funkcjonalności iptables, ip6tables, arptables i ebtables, wszystkie wykorzystujące nową infrastrukturę zarówno w obszarze jądra, jak i przestrzeni użytkownika, co zapewnia lepszą wydajność i lepszą funkcjonalność. nftables zastąpi iptables i wszystkie inne wymienione narzędzia, ale nie na razie, przynajmniej dopóki nie będzie bardziej powszechne wykorzystanie nftables jako takiego.

  5.   Alejandro powiedział

    bardzo dobry post, chciałem przeczytać więcej, ponieważ jest bardzo dobrze wyjaśniony .. pozdrawiam dzięki wspaniałemu wkładowi

  6.   Awraha powiedział

    Witaj! Bardzo dobre oba posty.
    Jako wkład możesz dodać na końcu tej części:

    „Teraz mamy zamiar edytować plik /etc/rc.local i wstawić coś takiego: /etc/init.d/firestop start, aby zaczynał się od systemu”.

    Dodaj to do rc.local.

    if [-x /etc/init.d/ firewall]; następnie
    /etc/init.d/ firewall start
    fi

    Co oznacza, że ​​jeśli „firewall” ma uprawnienia do wykonywania, uruchom go, jeśli nie.
    Jeśli nie chcesz, aby „zapora sieciowa” się nie uruchamiała, wystarczy usunąć uprawnienia.

    Na przykład: chmod + x /etc/init.d/ firewall
    aby działał na każdym startupie lub ...
    chmod -x /etc/init.d/ firewall
    całkowicie go wyłączyć.

    Pozdrowienia!