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

Ten post próbuje trochę wyjaśnić, jak działają sieci i jak zamienić nasz sprzęt linuksowy w router, który sprawia, że ​​nasza sieć jest trochę bardziej bezpieczna, czy to w domu, czy nawet w firmie. A więc przejdźmy do rzeczy:

Ta treść jest oparta na książce „Linux - Administracja systemem i działanie usług sieciowych” - Sébastien BOBILLIER

Routing i filtrowanie

Aby porozmawiać i zrozumieć routing, możemy najpierw zdefiniować rolę routera? Do tego możemy powiedzieć, że router oprócz stworzenia sieci i umożliwienia połączenia z innym sprzętem (wiedząc, że możemy to zrobić z AP, Switch, Hubem lub innymi) ma możliwość połączenia ze sobą dwóch różnych sieci.

Router

Jak widać na obrazku, istnieje sieć lokalna „10.0.1.0” utworzona przez router i docierająca do jednego z jego dwóch interfejsów. Wtedy router na swoim drugim interfejsie ma inną sieć z publicznym adresem IP, za pomocą której może łączyć się z Internetem. Funkcja routingu ma zasadniczo służyć jako pośrednik między tymi dwiema sieciami, aby mogły się komunikować.

Linux jako router.

Oczywiście jądro Linuksa ma już możliwość „przekazywania”, ale domyślnie jest ono wyłączone, więc jeśli chcemy, aby nasz Linux wykonał tę pracę, musimy przejść do pliku.

/proc/sys/net/ipv4/ip_forward

Tam stwierdzimy, że jest to plik, który zawiera tylko zero „0”, co musimy zrobić, to zmienić go na jeden „1”, aby aktywować to zachowanie. To niestety jest usuwane po ponownym uruchomieniu komputera, aby pozostawić go domyślnie aktywowanym, musimy użyć polecenia:

sysctl net.ipv4.ip_forward=1

Lub edytuj go bezpośrednio w pliku /etc/sysctl.conf. W zależności od dystrybucji ta konfiguracja może również znajdować się w pliku w formacie  /etc/sysctl.d/.

Domyślnie nasz Linux musi mieć tablicę routingu, która jest ogólnie konfiguracją naszej sieci LAN i połączeniem z routerem. Jeśli chcemy zobaczyć ten routing, możemy użyć dwóch poleceń:

route -n

o

netstat -nr

Obie komendy powinny zwrócić to samo.

Zrzut ekranu z 2014 09:30:18

Ogólnie ta konfiguracja jest wystarczająca, aby Twój Linux służył jako brama, a inne komputery mogą nawigować po naszym komputerze. Teraz, jeśli chcemy, aby nasz Linux łączył dwie lub więcej sieci, lokalną lub nie, możemy skorzystać z tras statycznych.

Załóżmy, że mój Linux ma dwa interfejsy sieciowe, pierwszy ma połączenie z Internetem, którego sieć to 172.26.0.0, a drugi (10.0.0.0) ma kilka komputerów z innej sieci lokalnej. Jeśli chcemy skierować pakiety do tej innej sieci, możemy użyć:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

Ogólnie jest to:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

jeśli damy route -n niezależnie od tego, czy ta sieć istnieje, czy nie, ten routing zostanie ustalony w naszej tabeli.

Zrzut ekranu z 2014 09:30:18

Jeśli chcemy wyeliminować wspomniany routing, możemy użyć

route del -net 10.0.0.0 netmask 255.0.0.0

iptables.

Zasadniczo iptables służy do filtrowania pakietów, wychodzących, przychodzących lub innych, co czyni go doskonałym narzędziem do zarządzania ruchem w sieci. Cóż, iptables, tak jak pozwala nam filtrować ruch z tego samego komputera, pozwala nam również filtrować ruch, który przez niego przechodzi. (Przekierowanie). Iptables można podzielić na tabele, łańcuchy i akcje.

  • Tablice:  w zasadzie mogą być dwa stoły, filtr, do filtrowania pakietów i  nat tłumaczyć adresy, czyli przenosić się z jednej sieci do drugiej.
  • Więzy: Łańcuch odnosi się do typu ruchu, który chcemy filtrować lub pływać, to znaczy do jakiego ruchu będziemy stosować tabele? i mogą to być:  WEJŚCIE: Ruch przychodzący, WYDAJNOŚĆ: ruch wychodzący lub NAPRZÓD: Ruch, który przez nią przechodzi, ale nie jest to prawidłowe połączenie.
  • Może się również pojawić POCZĄTEK, który jest używany do traktowania pakietu w określony sposób po jego trasowaniu.
  • Działania: Akcje to w zasadzie akcja, która ma być wykonana z łańcuchem. Ta akcja może być DROP który po prostu niszczy ten ruch lub ZAAKCEPTOWAĆ. która umożliwia ruchowi wykonanie takiej czynności.

Reguły IPTABLES są zapisywane i wykonywane w kolejności, w jakiej zostały utworzone, a jeśli reguła usuwa poprzednią regułę, zawsze stosowana jest ostatnia reguła w kolejności.

Zasady zapory.

Ogólnie rzecz biorąc, zapory działają naturalnie na dwa sposoby:

  1. Zezwalaj na cały ruch z wyjątkiem lub
  2. Nie zezwalaj na żaden ruch z wyjątkiem ...

Aby zastosować zasady, użyj IPTABLES - P ŁAŃCUCH AKCJI

Gdzie łańcuch reprezentuje typ ruchu (INPUT, OUTPUT, FORWARD, POSTROUTING ...), a akcja to DROP OR ACCEPT.

Spójrzmy na przykład.

Zrzut ekranu z 2014 09:30:18

Tutaj widzimy, że na początku byłem w stanie pingować, a następnie powiedziałem IPTABLES, że cały ruch WYJŚCIOWY jest DROP lub niedozwolony. Następnie powiedziałem IPTABLES, aby to zaakceptował.

Jeśli mamy zamiar zbudować zaporę od podstaw, zawsze musimy stosować zasady (Nie zezwalaj na żaden ruch oprócz ... W tym celu stosujemy reguły

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Jeśli te zasady mają zastosowanie, nie będą mieć żadnego typu połączenia
.

Aby powrócić, piszemy to samo i zamieniamy DROP na ACCEPT.

W tym momencie, ponieważ cały ruch jest odrzucany, zaczynamy mówić naszym IPTABLES, jaki ruch może mieć.

Składnia jest następująca:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

Gdzie:

Ciąg = INPUT, OUTPUT lub FORWARD

origin_ip = Pochodzenie pakietów, może to być pojedynczy adres IP lub sieć iw tym przypadku musimy określić maskę).

Docelowy adres IP = gdzie idą pakiety. może to być pojedynczy adres IP lub sieć iw tym przypadku musimy określić maskę).

Protokół = wskazuje protokół używany przez pakiety (icmp, tcp, udp ...)

port = docelowy port ruchu.

akcja = DROP lub ACCEPT.

przykład:

Zrzut ekranu z 2014 09:30:19

Obowiązują wszystkie zasady ograniczone.

Zrzut ekranu z 2014 09:30:19

Następnie dodajemy reguły, aby móc mieć ruch przez port 80 HTTP i 443 HTTPS, z protokołem TCP. Następnie port 53 Jest stosowany do klienta DNS w celu rozwiązania domen, w przeciwnym razie nie będziesz nawigować. Działa to z protokołem UDP.

Linia:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Dzieje się tak z następujących powodów: Kiedy na przykład wysyłasz żądanie HTTP, łączysz się z portem 80 serwera, ale serwer, aby zwrócić informacje, musi łączyć się z tobą przez dowolny port. (Ogólnie więcej niż 1024).

Ponieważ wszystkie nasze porty są zamknięte, nie zostanie to osiągnięte, chyba że otworzymy wszystkie porty wyższe niż 1024 (zły pomysł). Oznacza to, że cały ruch przychodzący pochodzący z połączenia, które sam ustanowiłem, jest akceptowany. Mam na myśli połączenie, które w zasadzie zacząłem.

Umieszczając OUTPUT w regułach, dotyczy to tylko danego sprzętu, jeśli używamy naszego sprzętu jako routera, aby umożliwić te połączenia, musimy zmienić OUTPUT na FORWARD. Ponieważ ruch przechodzi przez komputer, ale nie jest przez niego inicjowany
Wszystkie te reguły są usuwane po ponownym uruchomieniu, więc musisz utworzyć skrypty, aby uruchamiały się domyślnie. Ale zobaczymy to w następnym

Mam nadzieję, że spodobała Ci się ta informacja. W następnym opowiem o NAT, proxy i skryptach dla Firewal.


12 komentarzy, zostaw swoje

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.   Rogelio pinto powiedział

    To podstawa, którą wielu przedsiębiorców przyjmuje do produkcji własnych zapór ogniowych, dlatego na rynku jest tak wiele marek zapór ogniowych z wbudowanym linuxem, jedne dobre, a inne mniej.

  2.   Heber powiedział

    Świetny artykuł. Nie mogę się doczekać drugiej części.

  3.   Milton powiedział

    Bardzo dobre wyjaśnienie, pomogło mi zrozumieć proxy mojej pracy. Dziękuję Ci

  4.   Faustod powiedział

    Cześć Jlcmux,

    Świetnie, bardzo mi się podobało, kiedy druga strona będzie dostępna?

    Pozdrowienia i podziękowania za udostępnienie

    1.    @JlcMux. powiedział

      Dziękuję za komentarz.

      Wczoraj wysłałem drugą część, w ciągu dnia myślę, że będą ją publikować.

      Pozdrowienia.

  5.   Izrael powiedział

    Bardzo dobry przyjaciel artykułu @ Jlcmux, naprawdę nauczyłem się z nim, ponieważ wyjaśnił pewne wątpliwości, które miałem przez jakiś czas, przy okazji nie miałbyś nic przeciwko udostępnieniu książki źródła artykułu, Sébastiena BOBILLIERA, dobrze slau2s i teraz aby zobaczyć drugą część, salu2s.

    1.    @JlcMux. powiedział

      Witam Dziękuję za komentarz Izraela.

      Okazuje się, że mam książkę w formie fizycznej. Ale znalazłem ten link w Książkach Google. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Myślę, że jest kompletny.

  6.   Ariel powiedział

    Bardzo dobry artykuł, dodam pytanie: Jaka byłaby korzyść z używania linuxa jako routera, jeśli taki istnieje, w stosunku do dedykowanego mu sprzętu? Czy to tylko do ćwiczeń? Wiem, że istnieją dedykowane dystrybucje, ale nie wiem, czy mają one uratować stare komputery PC, czy zapewnić większą elastyczność w konfiguracji.

    1.    @JlcMux. powiedział

      Cóż, myślę, że zalety i wady zależą od scenariusza, w którym zamierzasz to wdrożyć. Dlaczego na pewno nie zamierzasz kupić UTM lub czegoś podobnego do swojego domu? A może dla małej firmy, której też na to nie stać. Jest to również dobre jako ćwiczenie, ponieważ pomaga zrozumieć całą logikę tego procesu i można lepiej skonfigurować dedykowany FWall. Poza tym prawie wszystkie te urządzenia naprawdę mają wbudowany Linux.

      Pozdrowienia.

  7.   Ariel powiedział

    Witam, pytanie, czy możesz wygenerować "sztuczny" interfejs w Linuksie dla podobnego routingu między sieciami? (styl śledzenia pakietów) do pracy z maszynami wirtualnymi? np. jeśli mam eth0 (ponieważ mam oczywiście jedną kartę), czy mogę stworzyć eth1, aby stworzyć inną sieć? Bardzo dobry nauczyciel!

    1.    pełen życia powiedział

      Oczywiście w Linuksie można tworzyć wirtualne interfejsy. Jeśli masz eth0, możesz mieć eth0: 0, eth0: 1, eth0: 2 ... itd

  8.   Chinoloco. powiedział

    Tak dobrze, dzięki za udostępnienie