25 Przydatne reguły zapory iptable każdy administrator Linux powinien wiedzieć
- 3638
- 769
- Maurycy Napierała
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 LinuxTam 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:
FILTR
- Jest to domyślna tabela, która zawiera wbudowane łańcuchy dla:- WEJŚCIE - pakiety przeznaczone do lokalnych gniazd
- DO PRZODU - Pakiety kierowane przez system
- WYJŚCIE - pakiety generowane lokalnie
Nat
- Tabela, z którą się konsultuje się, gdy pakiet próbuje utworzyć nowe połączenie. Ma następujące wbudowane:- Prerouting - używane do zmiany pakietu, gdy tylko zostanie otrzymany
- WYJŚCIE - używane do zmiany pakietów generowanych lokalnie
- Postrouting - używane do zmiany pakietów, ponieważ mają one wyjść
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:- Prerouting - do zmiany przychodzących połączeń
- WYJŚCIE - do zmiany lokalnie generowanych pakietów
- WEJŚCIE - dla pakietów przychodzących
- Postrouting - za zmianę pakietów, ponieważ mają zamiar wyjść
- 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.
- « 5 wskazówek, aby zwiększyć wydajność serwera WWW Apache
- Jak zainstalować lampę (Linux, Apache, Mariadb i PHP) na serwerze i stacji roboczej Fedora 23 »