25 Przydatne reguły zapory iptable każdy administrator Linux powinien wiedzieć

25 Przydatne reguły zapory iptable każdy administrator Linux powinien wiedzieć

Zarządzanie ruchem sieciowym jest jednym z najtrudniejszych zadań, z którymi mają do czynienia administratorzy systemu. Musi skonfigurować zaporę ogniową w taki sposób, aby spełniło wymagania systemu i użytkowników zarówno w połączeniach przychodzących, jak i wychodzących, nie pozostawiając systemu podatnego na ataki.

25 reguł zapory iptables dla Linux

Tam jest iptables się przydać. Iptables to zapora linii poleceń Linux, która umożliwia administratorom systemu zarządzanie ruchem przychodzącym i wychodzącym za pośrednictwem zestawu konfigurowalnych reguł tabeli.

Iptables używa zestawu tabel, które mają łańcuchy zawierające zestaw reguł wbudowanych lub zdefiniowanych przez użytkownika. Dzięki im administrator systemu może właściwie odfiltrować ruch sieciowy swojego systemu.

Podręcznik IPTABLES, obecnie istnieją 3 rodzaje tabel:

    1. FILTR - Jest to domyślna tabela, która zawiera wbudowane łańcuchy dla:
      1. WEJŚCIE  - pakiety przeznaczone do lokalnych gniazd
      2. DO PRZODU - Pakiety kierowane przez system
      3. WYJŚCIE - pakiety generowane lokalnie
    2. Nat - Tabela, z którą się konsultuje się, gdy pakiet próbuje utworzyć nowe połączenie. Ma następujące wbudowane:
      1. Prerouting - używane do zmiany pakietu, gdy tylko zostanie otrzymany
      2. WYJŚCIE - używane do zmiany pakietów generowanych lokalnie
      3. Postrouting - używane do zmiany pakietów, ponieważ mają one wyjść
    3. MAGIEL - Ta tabela jest używana do zmiany pakietów. Aż do wersji jądra 2.4 Ten stół miał tylko dwa łańcuchy, ale mają teraz 5:
      1. Prerouting - do zmiany przychodzących połączeń
      2. WYJŚCIE - do zmiany lokalnie generowanych pakietów
      3. WEJŚCIE - dla pakietów przychodzących
      4. Postrouting - za zmianę pakietów, ponieważ mają zamiar wyjść
      5. DO PRZODU - W przypadku pakietów kierowanych przez pudełko

W tym artykule zobaczysz kilka przydatnych poleceń, które pomogą Ci zarządzać zaporą Linux Box za pośrednictwem IPTABLES. Na potrzeby tego artykułu zacznę od prostszych poleceń i przejdę do bardziej złożonego do końca.

1. Start/Stop/Restart Firewall IPTABLES

Po pierwsze, powinieneś wiedzieć, jak zarządzać usługą IPTables w różnych dystrybucjach Linux. To jest dość łatwe:

W rozkładach Linux opartych na systemie

------------ Na Cent/Rhel 7 i Fedora 22+ ------------ # Systemctl Start IPTABLES # Systemctl Stop IPTABLES # Systemctl restart iptables 

Na rozkładach Linux opartych na Sysvinit

------------ Na Cent/Rhel 6/5 i Fedora ------------ # /etc /init.d/iptables start #/etc/init.D/iptables Stop #/etc/init.D/iptables restart 

2. Sprawdź wszystkie zasady zapory iptables

Jeśli chcesz sprawdzić swoje istniejące reguły, użyj następującego polecenia:

# iptables -l -n -v 

Powinno to zwrócić dane wyjściowe podobne do tego poniżej:

Wejście łańcucha (Polityka Akceptuj 1129K pakietów, 415 m bajtów) PKTS bajty.0.0.0/0 0.0.0.0/0 TCP DPT: 53 0 0 Zaakceptuj UDP - LXCBR0 * 0.0.0.0/0 0.0.0.0/0 UDP DPT: 53 0 0 Zaakceptuj TCP - LXCBR0 * 0.0.0.0/0 0.0.0.0/0 TCP DPT: 67 0 0 Zaakceptuj UDP - LXCBR0 * 0.0.0.0/0 0.0.0.0/0 UDP DPT: 67
Łańcuch napastnika (zasady akceptuj 0 pakietów, 0 bajtów) bajty docelowe Pkt opcji w miejscu docelowym źródłowym 0 0 akceptuj wszystko - * LXCBR0 0.0.0.0/0 0.0.0.0/0 0 0 Zaakceptuj All - LXCBR0 * 0.0.0.0/0 0.0.0.0/0
Wyjście łańcucha (polityka akceptuj 354 tys. Pakietów, 185 m bajtów) PKTS bajty

Jeśli wolisz sprawdzić reguły dla określonej tabeli, możesz użyć -T opcja, a następnie tabela, którą chcesz sprawdzić. Na przykład, aby sprawdzić zasady w Nat Tabela, możesz użyć:

# iptables -t nat -l -v -n 

3. Blokuj specyficzny adres IP w zaporze IPTABLES

Jeśli znajdziesz niezwykłe lub obraźliwe działanie z adresu IP, możesz zablokować ten adres IP za pomocą następującej reguły:

# iptables -a wejście -s xxx.xxx.xxx.XXX -J Drop 

Gdzie musisz się zmienić "xxx.xxx.xxx.xxx " Z rzeczywistym adresem IP. Bądź bardzo ostrożny podczas uruchamiania tego polecenia, ponieważ możesz przypadkowo zablokować własny adres IP. -A Opcja dołącza regułę na końcu wybranego łańcucha.

Na wypadek, gdybyś chciał tylko zablokować TCP ruch z tego adresu IP, możesz użyć -P opcja, która określa protokół. W ten sposób polecenie będzie wyglądać tak:

# iptables -a wejście -p tcp -s xxx.xxx.xxx.XXX -J Drop 

4. Unblock IP Adres w zaporze IPTABLES

Jeśli zdecydowałeś, że nie chcesz już blokować żądań z określonego adresu IP, możesz usunąć regułę blokowania następującym poleceniem:

# iptables -d wejście -s xxx.xxx.xxx.XXX -J Drop 

-D Opcja usuwa jedną lub więcej zasad z wybranego łańcucha. Jeśli wolisz używać dłuższej opcji, której możesz użyć --usuwać.

5. Blokuj określony port w zaporze iptables

Czasami możesz chcieć zablokować połączenia przychodzące lub wychodzące w określonym porcie. To dobry środek bezpieczeństwa i naprawdę powinieneś pomyśleć w tej sprawie podczas konfigurowania zapory.

Aby zablokować połączenia wychodzące w określonym użyciu portu:

# iptables -a wyjście -p tcp -dport xxx -j upuść 

Aby umożliwić przychodzące połączenia:

# iptables -a wejście -p tcp -dport xxx -j akceptuj 

W obu przykładach się zmieniają „xxx” z rzeczywistym portem, które chcesz zezwolić. Jeśli chcesz zablokować UDP ruch zamiast TCP, po prostu zmień „TCP” z „UDP” W powyższej zasadzie IPTABLES.

6. Zezwalaj na wiele portów na iptables za pomocą multiport

Możesz zezwolić na wiele portów jednocześnie, używając Multiport, Poniżej można znaleźć taką regułę zarówno dla połączeń przychodzących, jak i wychodzących:

# iptables -a wejście -p Tcp -m Multiport -Dports 22,80,443 -J Zaakceptuj # iptables -a wyjście -p Tcp -m Multiport -Sports 22,80,443 -J Zaakceptuj 

7. Zezwalaj na określony zakres sieci na konkretnym porcie na iptables

Możesz ograniczyć niektóre połączenia w określonym porcie do danej sieci. Powiedzmy, że chcesz zezwolić na połączenia wychodzące w porcie 22 do sieci 192.168.100.0/24.

Możesz to zrobić za pomocą tego polecenia:

# iptables -a wyjście -p TCP -D 192.168.100.0/24 -DPORT 22 -J Zaakceptuj 

8. Zablokuj Facebook na zaporze IPTABLES

Niektórzy pracodawcy lubią blokować dostęp do Facebook do ich pracowników. Poniżej znajduje się przykład blokowania ruchu na Facebooku.

Notatka: Jeśli jesteś administratorem systemu i musisz zastosować te zasady, pamiętaj, że twoi koledzy mogą przestać z tobą rozmawiać :)

Najpierw znajdź adresy IP używane przez Facebook:

# host Facebook.com Facebook.com ma adres 66.220.156.68 
# whois 66.220.156.68 | GREP CIDR CIDR: 66.220.144.0/20 

Następnie możesz zablokować tę sieć Facebooka z:

# iptables -a wyjście -p TCP -D 66.220.144.0/20 -J Drop 

Należy pamiętać, że zakres adresów IP używany przez Facebook może się różnić w twoim kraju.

9. Konfiguracja przekazywania portów w IPTABLES

Czasami możesz przenieść ruch jednej usługi do innego portu. Możesz to osiągnąć za pomocą następującego polecenia:

# iptables -t Nat -a Prerouting -i Eth0 -p Tcp - -Dport 25 -J Przekierowanie -do portu 2525 

Powyższe polecenie przekazuje cały przychodzący ruch w interfejsie sieciowym ETH0, z portu 25 do portu 2525. Możesz zmienić porty z potrzebnymi.

10. Block Network Flood na porcie Apache z iptables

Czasami adresy IP mogą żądać zbyt wielu połączeń w kierunku portów internetowych w Twojej witrynie. Może to powodować liczbę problemów i aby zapobiec takich problemów, możesz użyć następującej zasady:

# iptables -a wejście -p tcp -dport 80 -m limit -limit 100/minutę -limit -burest 200 -j akceptuj 

Powyższe polecenie ogranicza połączenia przychodzące od minuty do 100 i ustawia limit wybuchu 200. Możesz edytować limit i ograniczenie do własnych konkretnych wymagań.

11. Block Incoming Ping Prośby na IPTABLES

Niektórzy administratorzy systemu lubią blokować przychodzące żądania pingu z powodu problemów bezpieczeństwa. Chociaż zagrożenie nie jest tak duże, dobrze jest wiedzieć, jak zablokować taką prośbę:

# iptables -a wejście -p icmp -i eth0 -j upuść 

12. Zezwalaj na dostęp do pętli

Dostęp do pętli (dostęp z 127.0.0.1) jest ważne i zawsze powinieneś pozostawić to aktywne:

# iptables -a input -i lo -j akceptuj # iptables -a wyjście -o lo -J akceptuj 

13. Zachowaj dziennik upuszczonych pakietów sieciowych na iptables

Jeśli chcesz zalogować upuszczone pakiety w interfejsie sieciowym ETH0, Możesz użyć następującego polecenia:

# iptables -a input -i eth0 -J log - -log -prefix „iptables upuszczane pakiety:” 

Możesz zmienić wartość po „--log-prefix” z czymś według twojego wyboru. Wiadomości są zalogowane /var/log/wiadomości I możesz ich wyszukać z:

# grep "iptables upuszczone pakiety:"/var/log/message 

14. Blokuj dostęp do określonego adresu MAC na iPtables

Możesz zablokować dostęp do swojego systemu z określonego adresu MAC za pomocą:

# iptables -a wejście -m Mac - -Mac -source 00: 00: 00: 00: 00: 00 -J upuść 

Oczywiście będziesz musiał się zmienić „00: 00: 00: 00: 00: 00” z rzeczywistym adresem MAC, który chcesz zablokować.

15. Ogranicz liczbę jednoczesnych połączeń na adres IP

Jeśli nie chcesz mieć zbyt wielu równoczesnych połączeń z pojedynczego adresu IP na danym porcie, możesz użyć poniższego polecenia:

# iptables -a input -p tcp - -syn - -dport 22 -m connlimit - -connlimit -above 3 -J Odrzuć 

Powyższe polecenie pozwala nie więcej niż 3 Połączenia na klienta. Oczywiście możesz zmienić numer portu, aby pasował do innej usługi. Także --Connlimit-Above należy zmienić, aby pasowały do ​​twojego wymagania.

16. Wyszukaj w regule IPTABLES

Po zdefiniowaniu zasad IPTABLES, od czasu do czasu będziesz szukać i być może będziesz musiał je zmienić. Łatwym sposobem wyszukiwania w swoich zasadach jest użycie:

# iptables -l $ table -v -n | Grep $ String 

W powyższym przykładzie musisz się zmienić $ Table z rzeczywistą tabelą, w której chcesz wyszukać i $ String z rzeczywistym ciągiem, dla którego szukasz.

Oto przykład:

# iptables -l wejście -v -n | GREP 192.168.0.100 

17. Zdefiniuj nowy łańcuch IPTABLES

Dzięki iptables możesz zdefiniować własną sieć i przechowywać w nim niestandardowe zasady. Aby zdefiniować łańcuch, użyj:

# iptables -n filtr niestandardowy 

Teraz możesz sprawdzić, czy Twój nowy filtr jest dostępny:

# iptables -l 
Przykładowy wyjście
Wejście łańcucha (akceptować zasadę) docelowe miejsce docelowe protestu 
Przekazanie łańcucha (akceptować zasadę) docelowe docelowe źródło Protu
Wyjście łańcucha (akceptować zasadę)
Łańcuch Filtr niestandardowy (0 odniesień)

18. Spłukać łańcuchy lub zasady zapory iptable

Jeśli chcesz spłukać łańcuchy zapory, możesz użyć:

# iptables -f 

Możesz spłukać łańcuchy z określonego tabeli z:

# iptables -t nat -f 

Możesz się zmienić „Nat” z rzeczywistym stołem, które łańcuchy chcesz spłukać.

19. Zapisz reguły IPTABLES w pliku

Jeśli chcesz zapisać reguły zapory, możesz użyć IPTABLES-SAVE Komenda. Możesz użyć następujących, aby zapisać i przechowywać swoje reguły w pliku:

# iptables-save> ~/iptables.zasady 

To zależy, gdzie przechowujesz plik i jak go nazwiesz.

20. Przywróć reguły iptables z pliku

Jeśli chcesz przywrócić listę reguł iptables, możesz użyć IPTABLES-RESTORE. Polecenie wygląda tak:

# IPTABLES-RESTORE < ~/iptables.rules 

Oczywiście ścieżka do pliku reguł może być inna.

21. Skonfiguruj reguły IPTABLES dla zgodności z PCI

Niektórzy administratorzy systemów mogą być zobowiązani do skonfigurowania swoich serwerów tak, aby były PCI Compiliant. Istnieje wiele wymagań różnych dostawców zgodności z PCI, ale istnieje niewiele popularnych.

W wielu przypadkach będziesz musiał mieć więcej niż jeden adres IP. Będziesz musiał zastosować poniższe zasady dla adresu IP witryny. Zachowaj bardzo ostrożność podczas korzystania z poniższych zasad i użyj ich tylko wtedy, gdy masz pewność, co robisz:

# iptables -i wejście -d strona -p TCP -m Multiport -Dports 21,25,110,143,465 587,993 995 -J Drop 

Jeśli używasz CPANEL lub podobnego panelu sterowania, może być konieczne zablokowanie jego portów. Oto przykład:

# iptables -i in_sg -d dedi_ip -p Tcp -m Multiport -dports 2082,2083,2095,2096,2525,2086,2087 -j upuszczenie 

Notatka: Aby upewnić się, że spełniasz wymagania swojego dostawcy PCI, sprawdź ich raport i zastosuj wymagane zasady. W niektórych przypadkach może być konieczne zablokowanie ruchu UDP również w niektórych portach.

22. Zezwalaj na ustalone i powiązane połączenia

Ponieważ ruch sieciowy jest oddzielony pod względem przychodzących i wychodzących, będziesz chciał zezwolić na ustalony i powiązany ruch przychodzący. W przypadku połączeń przychodzących rób to z:

# iptables -a wejście -m contrack --ctState ustalone, powiązane -j zaakceptuj 

Do użytku wychodzącego:

# iptables -a wyjściowe -m contrack --ctState ustał -j akceptuj 

23. Upuść nieprawidłowe pakiety w iptables

Możliwe, że niektóre pakiety sieciowe są oznaczone jako nieprawidłowe. Niektóre osoby wolą rejestrować te pakiety, ale inne wolą je upuścić. Aby upuścić pakiety nieprawidłowe, możesz użyć:

# iptables -a wejście -m contrack --ctState nieprawidłowy -j upuść 

24. Blokuj połączenie w interfejsie sieciowym

Niektóre systemy mogą mieć więcej niż jeden interfejs sieciowy. Możesz ograniczyć dostęp do tego interfejsu sieciowego lub blokowania połączeń z określonego adresu IP.

Na przykład:

# iptables -a wejście -i eth0 -s xxx.xxx.xxx.XXX -J Drop 

Zmiana „XXX.xxx.xxx.xxx ” z rzeczywistym adresem IP (lub sieci), który chcesz zablokować.

25. Wyłącz wychodzące poczty przez IPTABLES

Jeśli system nie powinien wysyłać żadnych wiadomości e -mail, możesz blokować porty wychodzące na portach SMTP. Na przykład możesz tego użyć:

# iptables -a wyjście -p 

Wniosek

Iptables jest potężną zaporą, z której można łatwo skorzystać. Niezbędne jest, aby każdy administrator systemu uczył się przynajmniej podstaw iptables. Jeśli chcesz znaleźć bardziej szczegółowe informacje o IPTABLES i jego opcjach, zdecydowanie zalecamy przeczytanie podręcznika:

# Man Iptables 

Jeśli uważasz, że powinniśmy dodać więcej poleceń do tej listy, udostępnij je nam, przesyłając je w sekcji komentarzy poniżej.