Jak skonfigurować zaporę iptables, aby umożliwić zdalny dostęp do usług w Linux - część 8

Jak skonfigurować zaporę iptables, aby umożliwić zdalny dostęp do usług w Linux - część 8
Certyfikowany inżynier Linux Foundation - Część 8

Wprowadzenie programu certyfikacji Fundacji Linux

Przypomnisz sobie z części 1 - o iptables tego Lfce (Inżynier certyfikowanego Linux Foundation ) Seria, którą podaliśmy podstawowy opis tego, czym jest zapora: mechanizm zarządzania pakietami wchodzącymi i opuszczającymi sieć. Przez „zarządzanie” mamy na myśli:

  1. Umożliwić lub zapobiec wprowadzeniu niektórych pakietów lub opuszczeniu naszej sieci.
  2. Aby przekazać inne pakiety z jednego punktu sieci do drugiego.

na podstawie określonych kryteriów.

W tym artykule omówimy, jak zaimplementować podstawowe filtrowanie pakietów i jak skonfigurować zaporę ogniową z IPTables, frontend do Netfilter, który jest natywnym modułem jądra używanym do zapory.

Należy pamiętać, że zapory ogniowe jest rozległym tematem, a ten artykuł nie ma być kompleksowym przewodnikiem po zrozumieniu wszystkiego, co można o tym wiedzieć, ale raczej jako punkt wyjścia do głębszego badania tego tematu. Jednak ponownie odwiedzimy ten temat Część 10 tej serii, gdy badamy kilka konkretnych przypadków użycia zapory w Linux.

Możesz pomyśleć o zaporze jako międzynarodowym lotnisku, na którym samoloty pasażerskie przychodzą i odchodzą prawie 24/7. W oparciu o szereg warunków, takich jak ważność paszportu osoby lub jej kraj pochodzenia (aby wymienić kilka przykładów), może mieć możliwość wejścia lub opuszczenia określonego kraju lub opuszczenia określonego kraju.

Jednocześnie funkcjonariusze lotniska mogą poinstruować ludzi, aby w razie potrzeby przeprowadzili się z jednego miejsca lotniska do drugiego, na przykład, gdy muszą przejść przez usługi celne.

Możemy uznać, że analogia lotniska jest przydatna podczas reszty tego samouczka. Pamiętaj o następujących relacjach w trakcie postępowania:

  1. Osoby = pakiety
  2. Zapora = lotnisko
  3. Kraj #1 = sieć nr 1
  4. Kraj #2 = sieć #2
  5. Przepisy dotyczące lotniska egzekwowane przez funkcjonariuszy = przepisy zapory

IPTABLES - podstawy

Na niskim poziomie jest to samo jądro „decyduje„Co zrobić z pakietami opartymi na regułach pogrupowanych w więzy, Lub zdania. Łańcuchy te określają, jakie działania należy podjąć, gdy pakiet spełnia określone przez nich kryteria.

Pierwsza akcja podjęta przez IPTABLES będzie polegała na podjęciu decyzji z pakietem:

  1. Zaakceptuj to (pozwól mu przejść do naszej sieci)?
  2. Odrzuć go (zapobiec dostępu do naszej sieci)?
  3. Przekaż go (do innego łańcucha)?

Na wypadek, gdybyś zastanawiał się, dlaczego to narzędzie się nazywa iptables, To dlatego, że łańcuchy te są zorganizowane w tabelach, z Tabela filtru będąc najbardziej znanym i ten, który służy do implementacji filtrowania pakietów z trzema domyślnymi łańcuchami:

1. WEJŚCIE Łańcuch obsługuje pakiety wchodzące do sieci, które są przeznaczone do programów lokalnych.

2. WYJŚCIE Łańcuch służy do analizy pakietów pochodzących z sieci lokalnej, które mają być wysyłane na zewnątrz.

3. DO PRZODU łańcuch procesów, które należy przekazać do innego miejsca docelowego (jak w przypadku routera).

Dla każdego z tych łańcuchów istnieje domyślna polityka, która decyduje o tym, co należy zrobić domyślnie, gdy pakiety nie pasują do żadnych zasad w łańcuchu. Możesz wyświetlić reguły utworzone dla każdego łańcucha i domyślne zasady, uruchamiając następujące polecenie:

# iptables -l 

Dostępne zasady są następujące:

  1. ZAAKCEPTOWAĆ → Wypuszcza pakiet. Każdy pakiet, który nie pasuje do żadnych zasad w łańcuchu, jest dozwolony w sieci.
  2. UPUSZCZAĆ → cicho upuszcza pakiet. Każdy pakiet, który nie pasuje do żadnych zasad w łańcuchu, nie może wejść do sieci.
  3. ODRZUCIĆ → Odrzuca pakiet i zwraca wiadomość pouczającą. Ten w szczególności nie działa jako zasady domyślne. Zamiast tego ma uzupełnić zasady filtrowania pakietów.
Linux IPTABLES

Jeśli chodzi o podjęcie decyzji, które zasady będziesz wdrożyć, musisz rozważyć profesjonaliści I Cons każdego podejścia, jak wyjaśniono powyżej-zauważ, że nie ma żadnego roztworu uniwersalnego.

Dodawanie zasad

Aby dodać regułę do zapory ogniowej, wywołać polecenie IPTABLES w następujący sposób:

# IPTABLES -A Chain_name Criteria -j Cel 

Gdzie,

  1. -A oznacza dołączenie (dołącz bieżącą regułę do końca łańcucha).
  2. łańcuch_nazwa jest albo wejście, wyjście lub do przodu.
  3. cel jest działaniem lub zasadami, które należy zastosować w tym przypadku (akceptuj, odrzuć lub upuść).
  4. kryteria jest zbiorem warunków, na podstawie których pakiety mają zostać zbadane. Składa się z co najmniej jednego (najprawdopodobniej więcej) z następujących flag. Opcje wewnątrz nawiasów, oddzielone pionowym paskiem, są ze sobą równoważne. Reszta reprezentuje opcjonalne przełączniki:
[--protocol | -p] protokół: Określa protokół zaangażowany w zasadę. [-Source-Port | -Sport] Port: [Port]: definiuje port (lub zasięg portów), w którym pakiet powstał. [--Destination-Port | -dport] port: [port]: definiuje port (lub zakres portów), do którego przeznaczony jest pakiet. [-SOORCE | -s] adres [/maska]: reprezentuje adres źródłowy lub sieć/maskę. [-Destination | -D] Adres [/maska]: reprezentuje adres docelowy lub sieć/maskę. [--state] stan (poprzedzony -M Stan): Zarządzaj pakietami w zależności od tego, czy są one częścią połączenia państwowego, w którym państwo może być nowe, ustalone, powiązane lub nieważne. [--in-interface | -i] interfejs: Określa interfejs wejściowy pakietu. [--out-Interface | -O] interfejs: interfejs wyjściowy. [-Jump | -J] cel: Co zrobić, gdy pakiet pasuje do reguły. 

Nasze środowisko testowe

Przyklejmy to wszystko w 3 klasycznych przykładach przy użyciu następującego środowiska testowego dla pierwszych dwóch:

Firewall: Debian Wheezy 7.5 nazwa hosta: Dev2.Gabrielcanepa.adres IP: 192.168.0.15 
Źródło: Centos 7 nazwa hosta: Dev1.Gabrielcanepa.adres IP: 192.168.0.17 

I to dla ostatniego przykładu

NFSV4 Server and Firewall: Debian Wheezy 7.5 nazwa hosta: Debian adres IP: 192.168.0.10 
Źródło: Debian Wheezy 7.5 nazwa hosta: Dev2.Gabrielcanepa.adres IP: 192.168.0.15 
Przykład 1: Analiza różnicy między polityką spadku i odrzucania

Zdefiniujemy UPUSZCZAĆ Polityka najpierw dla wkładu do naszej zapory. Oznacza to, że pakiety ICMP zostaną po cichu upuszczone.

# ping -c 3 192.168.0.15 
# iptables -a input --protocol ICMP -in -interface ETH0 -J Drop 
Odrzuć żądanie ping ICMP

Przed przystąpieniem do ODRZUCIĆ Częściowo, wypłukamy wszystkie reguły z łańcucha wejściowego, aby upewnić się, że nasze pakiety zostaną przetestowane przez tę nową zasadę:

# iptables -f wejście # iptables -a input --protocol icmp - -in -interface ETH0 -J Odrzuć 
# ping -c 3 192.168.0.15 
Odrzuć żądanie ping ICMP w zaporze
Przykład 2: Wyłączanie / odbieranie login SSH z DEV2 do DEV1

Będziemy mieli do czynienia z WYJŚCIE łańcuch, gdy radzimy sobie z ruchem wychodzącym:

# iptables -a wyjście --protocol TCP--Destination-Port 22 --out-Interface ETH0-JUMP Odrzuć 
Blok login SSH w zaporze ogniowej
Przykład 3: Zezwalanie / zapobieganie klientom NFS (od 192.168.0.0/24) do montażu akcji NFS4

Uruchom następujące polecenia na serwerze / zaporze NFSV4, aby zamknąć porty 2049 i 111 dla wszelkiego rodzaju ruchu:

# iptables -f # iptables -a input -i eth0 -s 0/0 -p tcp -dport 2049 -J reject # iptables -a input -i eth0 -s 0/0 -p tcp -dport 111 -J Odrzuć 
Blokuj porty NFS w zaporze

Teraz otwórzmy te porty i zobaczmy, co się stanie.

# iptables -a wejście -i ETH0 -S 0/0 -p 
Otwórz porty NFS w zaporze

Jak widać, byliśmy w stanie zamontować udział NFSV4 po otwarciu ruchu.

Zasady wstawiania, dołączania i usuwania

W poprzednich przykładach pokazaliśmy, jak dołączyć zasady do WEJŚCIE I WYJŚCIE więzy. Jeśli chcielibyśmy je wstawić w predefiniowanej pozycji, powinniśmy użyć -I (Uppercase I) Zamiast tego przełącz.

Musisz pamiętać, że reguły zostaną ocenione jeden po drugiej i że ocena zatrzymuje się (lub skoki), gdy UPUSZCZAĆ Lub ZAAKCEPTOWAĆ Polityka jest dopasowana. Z tego powodu możesz znaleźć potrzebę przenoszenia zasad w górę lub w dół na liście łańcucha w razie potrzeby.

Użyjemy trywialnego przykładu, aby to zademonstrować:

Sprawdź zasady zapory iptables

Umieśćmy następującą zasadę,

# iptables -i wejście 2 -p tcp - -dport 80 -j Zaakceptuj 

w pozycji 2) w łańcuchu wejściowym (w ten sposób przesuwając poprzedni nr 2 jako #3)

IPTABLES ACAMUJE RELIDA

Korzystając z powyższej konfiguracji, ruch zostanie sprawdzony, aby sprawdzić, czy jest on skierowany do portu 80 Przed sprawdzeniem portu 2049.

Alternatywnie możesz usunąć zasadę i zmienić cel pozostałych zasad na ODRZUCIĆ (używając -R przełącznik):

# iptables -d wejście 1 # iptables -nl -v -line -numbers # iptables -r wejście 2 -i eth0 -s 0/0 -p tcp -dport 2049 -J reject # iptables -r wejście 1 -p tcp -DPORT 80 -J Odrzuć 
Reguła upuszczania iptables

Wreszcie, musisz pamiętać, że aby zasady zapory były trwałe, musisz zapisać je na pliku, a następnie automatycznie przywrócić je (przy użyciu preferowanej metody wyboru lub tej, która jest taka. jest dostępny do Twojej dystrybucji).

Oszczędzanie zasad zapory:

# iptables-save>/etc/iptables/reguły.v4 [on Ubuntu] # iptables-save> /etc /sysconfig /iptables [na centos /openSuse] 

Przywracanie zasad:

# IPTABLES-RESTORE < /etc/iptables/rules.v4 [On Ubuntu] # iptables-restore < /etc/sysconfig/iptables [On CentOS / OpenSUSE] 

Tutaj możemy zobaczyć podobną procedurę (ręcznie zapisywanie i przywracanie reguł zapory) za pomocą nazywanego pliku o nazwie iptables.wysypisko zamiast domyślnego, jak pokazano powyżej.

# iptables-save> iptables.wysypisko 
Zrzuć Linux iPtables

Aby te zmiany są trwałe w butach:

Ubuntu: Zainstaluj IPTABLES-PERSistent pakiet, który załaduje reguły zapisane w /etc/iptables/reguły.v4 plik.

# apt-get instaluj iptables-persistent 

Centos: Dodaj następujące 2 wiersze do /etc/sysconfig/iptables-config plik.

Iptables_save_on_stop = "tak" iptables_save_on_restart = "tak" 

OpenSuse: Lista dozwolonych portów, protokołów, adresów i tak dalej (oddzielona przez przecinek) w /etc/sysconfig/susefirewall2.

Więcej informacji można znaleźć w samym pliku, który jest mocno skomentowany.

Wniosek

Przykłady podane w tym artykule, nie obejmując wszystkich dzwonków i gwizdków iptables, służą ilustrującemu, jak włączyć i wyłączyć ruch przychodzący lub wychodzący.

Dla tych z was, którzy są fanami zapory ogniowej, pamiętaj o tym, że ponownie odwiedzimy ten temat z bardziej szczegółowymi aplikacjami Część 10 tego Lfce seria.

Daj mi znać, jeśli masz jakieś pytania lub komentarze.

Zostań inżynierem certyfikowanym Linux