Jeśli korzystasz z systemu Linux, masz wiele opcji ochrony swojego urządzenia. Jest dostarczany z iptables, narzędziem zapory sieciowej uruchamianym z wiersza poleceń, które zapewnia elastyczność i doskonałą ochronę.
Ponieważ jednak jest to narzędzie wiersza poleceń, wymaga niewielkiej krzywej uczenia się.
Tak więc, jeśli jesteś administratorem systemu lub uczysz się Linuksa, jesteś we właściwym miejscu, ponieważ przeglądamy typowe polecenia iptables z przykładami.
Co to jest iptables?
iptables to oparta na oprogramowaniu wbudowana zapora systemu Linux. Pozwala użytkownikom Linuksa tworzyć lub definiować zasady, które bezpośrednio i pośrednio wpływają na ruch internetowy.
Oznacza to, że możesz używać iptables do tworzenia reguł blokujących lub zezwalających na ruch przez port, źródłowy adres IP, interfejsy sieciowe i inne.
Po zdefiniowaniu reguł cały ruch musi przez nie przechodzić. Na przykład dla każdego nowego połączenia iptables sprawdzi, czy istnieją predefiniowane reguły pasujące do połączenia. Jeśli tak, zastosuje regułę do połączenia. Jeśli jednak nie ma żadnych powiązanych odpowiednich reguł, zaimplementuje regułę domyślną.
Aby użyć iptables, musisz użyć następującego polecenia.
$ iptables -L -n -v
Tutaj parametry są jak poniżej:
- -L służy do wyświetlania wszystkich reguł.
- -n powoduje, że dane wyjściowe numeryczne oferują większą wydajność.
- -v do wyświetlania danych wyjściowych w szczegółowym formacie.
Po uruchomieniu polecenia iptables bez żadnego parametru zwróci ono następujące dane wyjściowe:
iptables v1.8.7 (nf_tables): no command specified Try `iptables -h' or 'iptables --help' for more information.
Musisz go zainstalować, jeśli wystąpi błąd, na przykład polecenie „iptables” nie zostało znalezione.
Aby zainstalować iptables w swojej dystrybucji Linuksa, uruchom następujące polecenie.
$ sudo apt-get install iptables
Zwróci następujące informacje, ponieważ jest już wstępnie zainstalowany w mojej dystrybucji Linuksa.
#output Reading package lists... Done Building dependency tree... Done Reading state information... Done iptables is already the newest version (1.8.7-1ubuntu5). iptables set to manually installed. 0 upgraded, 0 newly installed, 0 to remove, and 35 not upgraded.
Co to jest zapora ogniowa?
Zapory ogniowe to najbardziej podstawowa forma ochrony systemów, sieci i komputerów osobistych. Może być oparty na sprzęcie lub oprogramowaniu, a jego prawidłowe działanie polega na regułach.
Większość zapór ogniowych można w dużym stopniu dostosowywać, umożliwiając tworzenie lub edytowanie reguł. Na przykład, ponieważ pakiety z Internetu używają portów, aby dostać się do systemu, skanowanie oparte na portach może pomóc je odfiltrować. Oprócz tego możesz także zezwalać lub blokować usługi na podstawie źródłowego adresu IP lub interfejsu sieciowego.
Jeśli używasz Linuksa, masz dostęp do wbudowanych iptables. Możesz jednak również użyć samodzielnej zapory ogniowej systemu Linux, aby pomóc sobie w procesie ochrony systemu.
Dlaczego potrzebujesz iptables do skonfigurowania zapory?
Ale po co w ogóle używać iptables? W końcu istnieją dobre alternatywne narzędzia zapory sieciowej uruchamiane z wiersza poleceń, takie jak ufw i firewalld. Możesz także używać samodzielnych zapór sieciowych Linux, które są proste w użyciu i oferują więcej funkcji.
Co sprawia, że iptables jest tak atrakcyjny podczas konfigurowania zapory ogniowej? Powody, dla których warto z niego korzystać, to m.in.
- Oferuje doskonałą elastyczność po wyjęciu z pudełka. Możesz ustawić reguły na poziomie pakietu.
- Jest stosunkowo łatwy w użyciu, gdy wiesz, jak to działa.
- Blokuj niechciany ruch w prosty sposób.
- Przekieruj pakiety na alternatywny adres IP.
- Chroń swoje systemy przed atakami typu „odmowa usługi” (DoS).
I wiele więcej!
Zrozumienie architektury iptables i jej związku z Netfilter
Aby właściwie zrozumieć iptables, musimy poznać ich architekturę. Po pierwsze, da nam to jasne zrozumienie różnych komponentów iptables. Następnie, gdy już wiemy o każdym z nich, możemy użyć ich do napisania reguł zapory.
A kiedy mówimy o iptables, pojawia się również Netfilter. Możesz myśleć o „Netfilter” jako o starszym bracie iptables. Opiera się na iptables i oferuje lepszy zestaw funkcji do zarządzania zaporą ogniową. Jednak używa iptables jako jednego ze sposobów osiągnięcia doskonałych możliwości zapory.
Iptables to interfejs wiersza poleceń do przechwytywania na poziomie jądra Netfiltera. Te haki mogą wchodzić w interakcje ze stosem sieciowym Linuksa, który wpływa na pakiety na najgłębszym poziomie.
Jak wygląda architektura iptables:
Stoły
Architektura iptables zaczyna się od tabel. Te tabele dbają o organizację reguł. Każda tabela jest klasyfikowana na podstawie typu decyzji, którą podejmuje. Mówiąc prościej, tabela upraszcza ogólne przetwarzanie pakietów, dołączając określony sposób przetwarzania pakietów.
Różne tabele oferowane przez iptables obejmują:
- Tabela filtrów: Określa typ decyzji dla filtrowania pakietów. Mówiąc prościej, określa, czy paczka powinna dotrzeć do miejsca przeznaczenia, czy nie.
- Tabela NAT: Określa typ decyzji dla translacji adresów. W tym przypadku trasa pakietów jest określana na podstawie sieci NAT. Na przykład, jeśli pakiet nie może uzyskać dostępu do NAT, pominie i spróbuje wyszukać sieć inną niż NAT.
- Stół Mangle: zarządza specjalnymi potrzebami przetwarzania paczki. Można go na przykład skonfigurować tak, aby zmieniał informacje nagłówka pakietu, takie jak wartości TTL.
- Raw table: Raw table pozwala ci pilnie pracować z stanowym aspektem zapory iptables. Korzystając z tabeli, możesz kierować pakiety na podstawie ich „stanu”, zanim jądro Linuksa zacznie śledzić swój stan. Służy przede wszystkim do oznaczania pakietów, niezależnie od tego, czy system śledzenia połączeń je obsługuje, czy nie. Jeśli pakiet nie jest śledzony, jest ustawiany jako cel NOTRACK.
Więzy
A potem mamy „łańcuchy” w „stołach”.
Łańcuchy te obsługują głęboką kontrolę pakietów na różnych etapach ich podróży. Na przykład możesz je sprawdzić, gdy dotrze do portu lub interfejsu sieciowego. W ten sposób decyzja może zostać podjęta przed zwolnieniem pakietu do procesu systemowego.
Podobnie jak stoły, otrzymujesz również różne łańcuchy. Obejmują one:
- Łańcuch PREROUTING: W tym przypadku reguły obsługują pakiety, które właśnie dotarły do interfejsu sieciowego.
- Łańcuch INPUT: Reguły wymienione w łańcuchu INPUT obsługują zachowanie połączeń przychodzących. Po zakończeniu są one przekazywane do procesu lokalnego.
- Łańcuch OUTPUT: Łańcuch OUTPUT zajmuje się pakietami wytwarzanymi przez procesy.
- Łańcuch FORWARD: Łańcuch FORWARD zarządza pakietami nieprzeznaczonymi dla systemów lokalnych. Jest nośnikiem dla innych systemów docelowych, takich jak router.
- Łańcuch POSTROUTING: Na koniec mamy łańcuch POSTROUTING, który zajmuje się pakietami, które mają opuścić interfejs sieciowy.
Nie wszystkie łańcuchy są dostępne w każdym stole. Na przykład łańcuch FORWARD jest dostępny tylko w tabeli mangle, filter i security. Podobnie łańcuch POSTROUTING jest dostępny na mangle i nat (SNAT). We wszystkich tabelach dostępny jest tylko łańcuch OUTPUT.
Cel
Teraz mamy „cel”. Po przybyciu paczka przechodzi przez łańcuchy, aby zobaczyć, który opis reguły najlepiej pasuje. Jeśli pasuje do opisu reguły, wykonuje na jej podstawie powiązaną akcję, a następnie przenosi ją do celu — przypieczętowując los pakietu.
W wielu przypadkach pakiet nie pasuje do żadnego opisu ani zestawu reguł. I tu pojawia się domyślna zasada, cel.
Cele mogą być AKCEPTOWANE, ODRZUCONE i ODRZUCONE. Są to cele kończące, które decydują o losie pakietu.
- AKCEPTUJ: Akceptuje pakiety.
- DROP: Upuszcza pakiet, uniemożliwiając nadawcy sprawdzenie, czy system jest obecny, czy nie.
- ODRZUĆ: Odrzuca pakiet.
Istnieją również cele niezakończone, które są używane głównie do przechowywania informacji o pakiecie.
Najczęstsze polecenia iptables z przykładami
Zanim skoczysz i zaczniesz wykonywać polecenie iptables, upewnij się, że:
- Masz dostęp administracyjny do uruchamiania poleceń. Jeśli polecenie nie powiedzie się z powodu uprawnień administracyjnych, uruchom ponownie polecenie z poleceniem sudo przed nim.
- Artykuł nie jest samouczkiem dotyczącym konfigurowania iptables w systemie Ubuntu.
- Użyjemy polecenia iptables, które działa z IPv4. Jeśli zamierzasz pracować z IPv6, będziesz musiał zamiast tego użyć ip6tables.
Sprawdzanie stanu iptables
Aby sprawdzić aktualny status iptables, musisz uruchomić następujące polecenie.
$ iptables -L -n -v
#output Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Powyższe dane wyjściowe zawierają wiele informacji. Jednak wskazuje również na nieaktywną zaporę ogniową. To dlatego, że obecnie wszystkie łańcuchy są ustawione na AKCEPTUJ i nie mają żadnych reguł.
Aby aktywować zaporę, musisz rozpocząć dodawanie reguł.
Dodawanie reguł do łańcucha
Kiedy dodajesz regułę, jest ona zawsze dołączana do łańcucha. Dlatego należy użyć opcji -A (Dołącz). Składnia dla niego jest następująca:
$ sudo iptables - A
Jednak po uruchomieniu zwróci następujące informacje:
iptables v1.8.7 (nf_tables): option "-A" requires an argument Try `iptables -h' or 'iptables --help' for more information.
Argumenty, których można użyć do dodania reguł, to:
- – i: oznacza interfejs. Tutaj możesz wspomnieć o interfejsie, dla którego dodajesz reguły. Może to być ppp0, eth0 i tak dalej.
- – p: oznacza protokół. Tutaj wspominasz o regule używania protokołu sieciowego do filtrowania programów pakujących. Na przykład możesz powiedzieć ICMP, TCP, UDP itp. Jeśli chcesz, aby reguła działała we wszystkich protokołach, podaj „all” jako wartość argumentu.
- – s: Następnie pojawia się argument source, który wymienia źródło ruchu (jako adres IP lub nazwę hosta)
- – dport: dport oznacza port docelowy, w którym należy podać numer portu, do którego pakiet jest przeznaczony.
- – j: Na koniec mamy argument TARGET, w którym możesz podać nazwę TARGET, AKCEPTUJ, DROP lub RETURN
Konieczne jest również napisanie polecenia w następującej kolejności:
$ sudo iptables -A <chain-name> -i <interface-name> - p <protocool-name> - s <source> --dport <port no.> -j <target>
Zapisywanie zmian w iptables
Po dodaniu reguły możesz ją zapisać za pomocą polecenia iptables -save.
$ sudo iptables -save
Dane wyjściowe są następujące:
[email protected]:~$ sudo iptables-save # Generated by iptables-save v1.8.7 on Sun May 14 13:37:34 2023 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 392 -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -o lo -j ACCEPT COMMIT # Completed on Sun May 14 13:37:34 2023
Trwałe reguły ręcznie
Domyślnie iptables nie zapisuje reguł. Jeśli więc ponownie uruchomisz komputer, usunie to wszystkie reguły. Będziesz musiał użyć następujących poleceń, aby upewnić się, że nie musisz ponownie konfigurować iptables.
W przypadku reguł IPv4 napisz polecenie:
$ sudo iptables-save > /etc/iptables/rules.v4
A dla reguł IPv6 napisz polecenie:
$ sudo iptables-save > /etc/iptables/rules.v6
Trwałe reguły automatycznie
Aby reguły zachowywały się nawet po ponownym uruchomieniu, i to również automatycznie, musisz zainstalować pakiet iptables-presistent.
Aby to zrobić, uruchom następujące polecenie.
$ sudo apt-get install iptables-persistent
Otworzy się następujące okno. Naciśnij enter na
Ponieważ pracujemy z tabelą IPv4, pokaże ona tylko reguły IPv4. Jeśli pracujesz na IPv6, wyświetli się odpowiednie okno.
Uwaga: pakiet ładuje tylko zapisane reguły iptables. Tak więc za każdym razem, gdy zmienisz iptables, będziesz musiał zapisać go za pomocą polecenia iptables -save.
Ponowne ładowanie reguł po ponownym uruchomieniu
Po zapisaniu reguł musisz je przywrócić za pomocą następującego polecenia.
$ sudo iptables-restore < /etc/iptables/rules.v4
I
$ sudo iptables-restore < /etc/iptables/rules.v6
Włączanie ruchu na hoście lokalnym / Włączanie sprzężenia zwrotnego
Aby włączyć ruch na Localhost, użyj następującego polecenia:
$ sudo iptables -A INPUT -i lo -j ACCEPT
Tutaj lo oznacza interfejs sprzężenia zwrotnego dla całej komunikacji z hostem lokalnym.
Podobnie możemy pozwolić pakietom na wyjście przez interfejs pętli zwrotnej.
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
Aby sprawdzić, jak zmienił reguły, uruchom iptables -L -n -V
#output Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Umożliwienie ruchu na określonych portach
Możesz włączyć ruch AKCEPTUJ lub ODRZUĆ na określonych portach.
Na przykład porty SSL, HTTP i SSH są ważne dla normalnego funkcjonowania aplikacji. Możesz dodać reguły do pakietu AKCEPTUJ poprzez numery portów, aby upewnić się, że działają zgodnie z przeznaczeniem.
W przypadku protokołu SSL uruchom następujące polecenie.
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
W przypadku protokołu HTTPS uruchom następujące polecenie.
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Za zezwolenie na cały ruch HTTPS w interfejsie eth0.
$ iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT $ iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
W przypadku protokołu SSH uruchom następujące polecenie.
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Aby zaakceptować CAŁY przychodzący ruch SSH na interfejsie eth0, uruchom następujące polecenie:
$ iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT $ iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Innym przykładem może być włączenie ruchu portu na określonym porcie dla aplikacji niestandardowej. Powiedzmy port 233.
Aby otworzyć połączenia na tym porcie, uruchom.
$ sudo iptables -A INPUT -p tcp --dport 233 -j ACCEPT
Podobnie możesz również wyłączyć połączenia na określonym porcie, używając opcji celu ODRZUĆ.
Zablokujmy wszystkie połączenia na porcie 392.
$ sudo iptables -A INPUT -p tcp --dport 392 -j REJECT
Aby to sprawdzić, uruchom polecenie iptables -L -n -v.
#output Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:233 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Usuń istniejące reguły
Aby usunąć istniejące reguły, musisz uruchomić następujące polecenie.
$ iptables -F
Lub
$ iptables --flush
Uwaga: jeśli nie zapisałeś swoich reguł, są one utracone na zawsze i nie można ich przywrócić za pomocą iptables -restore
Usuń reguły z numerami linii
Aby usunąć określoną regułę, musisz uzyskać listę reguł z numerami.
$ sudo iptables -L --line-numbers
#output Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh 2 ACCEPT tcp -- anywhere anywhere tcp dpt:http 3 ACCEPT tcp -- anywhere anywhere tcp dpt:https 4 ACCEPT tcp -- anywhere anywhere tcp dpt:233 5 REJECT tcp -- anywhere anywhere tcp dpt:392 reject-with icmp-port-unreachable
Uruchom następujące polecenie, jeśli chcesz usunąć regułę numer 4 dla łańcucha INPUT.
$ sudo iptables -D INPUT 4
A jeśli ponownie uruchomisz polecenie iptables -n -v -L.
#output Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Wyświetlaj tylko reguły łańcucha INPUT lub OUTPUT
Aby wyświetlić tylko reguły łańcucha INPUT, uruchom następujące polecenie.
$ sudo iptables -L INPUT -n -v --line-numbers
#ouput Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 4 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Podobnie, jeśli chcesz zobaczyć tylko reguły łańcucha OUTPUT, uruchom:
$ sudo iptables -L OUTPUT -n -v --line-numbers
#output Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Uruchom/zatrzymaj/uruchom ponownie zaporę sieciową
Jeśli korzystasz z systemu RHEL/Fedora Linux lub CentOS, możesz uruchomić/zatrzymać lub ponownie uruchomić zaporę ogniową, uruchamiając polecenia.
$ service iptables stop $ service iptables start $ service iptables restart
Możesz także użyć polecenia systemctl.
Jednak nie będzie działać na Ubuntu.
Wstaw zasady w określonym miejscu
Jeśli chcesz wstawić reguły w określonej pozycji, musisz użyć następujących poleceń.
Najpierw sprawdź regulamin.
$ sudo iptables -L INPUT -n --line-numbers
#output Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 4 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Uruchom następujące polecenie, jeśli chcesz wstawić reguły między 2 a 3.
$ sudo iptables -I INPUT 3 -s 252.32.1.2 -j DROP
Teraz sprawdź zaktualizowane zasady.
#output Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 3 DROP all -- 252.32.1.2 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 5 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Blokuj ruch przychodzący, ale zezwalaj na ruch wychodzący
Aby zablokować cały ruch przychodzący, musisz wprowadzić następujące polecenie.
$ iptables -P INPUT DROP $ iptables -P FORWARD DROP $ iptables -P OUTPUT ACCEPT $ iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT $ iptables -L -v -n
W ten sposób możesz pingować lub pobierać pakiety, ale blokować nieznany ruch przychodzący.
Zablokuj określony adres IP
Aby zablokować określony adres IP, uruchom następujące polecenie.
$ iptables -A INPUT -s 14.23.59.9 -J DROP
Możesz także zdefiniować zmienną do przechowywania zablokowanego adresu IP, a następnie uruchomić polecenie.
BLOCK_THE_IP = “a.b.c.d”
A następnie uruchom:
$ iptables -A INPUT -s “BLOCK_THE_IP” -j DROP
Uwaga: Zmień „abcd” na preferowany adres IP.
Zezwalanie na pingowanie systemu z zewnątrz
Możesz poprosić użytkowników zewnętrznych o wysłanie polecenia ping do Twojego serwera, aby Twoja sieć była wykrywalna.
$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT $ sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
Zezwalanie sieci wewnętrznej na rozmowę z siecią zewnętrzną
Uruchom następujące polecenie, aby zezwolić sieci wewnętrznej (powiedzmy eth0) na sieć zewnętrzną (powiedzmy eth1).
$ sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
Zezwól na wychodzący DNS
Aby zezwolić na połączenia DNS z serwerem, uruchom następujące polecenie.
$ iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT $ iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
Zezwalaj na Rsycn z określonej sieci
Jeśli używasz polecenia Rsync i chcesz włączyć je w określonej sieci, uruchom następujące polecenie.
iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT
Zablokuj port
Uruchom następujące polecenie, aby zablokować określony port i wszelkie żądania przychodzące.
iptables -A INPUT -p tcp --dport 80 -j DROP iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
Blokuj ruch wychodzący do określonego adresu IP
Możesz zablokować ruch do dowolnego adresu IP, uruchamiając następujące polecenie.
$ host -t a newsblog.pl.com
#wyjście
newsblog.pl.com ma adres 172.66.40.93
Aby zablokować ruch wychodzący do tego konkretnego adresu IP, uruchom następujące polecenie.
iptables -A OUTPUT -d 72.66.40.93 -j DROP
Podobnie możesz również blokować platformy mediów społecznościowych, takie jak Instagram, Twitter i Facebook.
Znajdź adres IP mediów społecznościowych, uruchamiając następujące polecenie:
$ host -t a social-media-web-adrress.com
Na przykład na Instagramie byłoby to:
$ host -t a www.instagram.com
Teraz musisz znaleźć CIDR dla adresu IP tej konkretnej platformy mediów społecznościowych.
$ whois 185.89.219.11 | grep CIDR
Uwaga: może być konieczne zainstalowanie pakietu whois, uruchamiając sudo apt-get install whois
Teraz wprowadź wartość CIDR w następujący sposób:
$ iptables - A OUTPUT -p tcp -d CIDR-value -j DROP
Uwaga: pamiętaj o odpowiedniej zmianie wartości CIDR.
Zezwól lub zablokuj żądanie ping ICMP
Aby zezwolić lub zablokować żądania ICMP ping, uruchom następujące polecenia.
$ iptables -A INPUT -p icmp --icmp-type echo-request -j DROP $ iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
Otwórz określony zakres portów
Aby otworzyć zakres portów, uruchom następujące polecenie.
$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8933: 8500 -j ACCEPT
Lista reguł NAT
Aby wyświetlić listę reguł NAT, uruchom następujące polecenie:
$ sudo iptables -t nat -L -n -v
Lub
$ sudo iptables -t nat -v -L -n --line-number
Zresetuj liczniki pakietów
Aby sprawdzić bieżący licznik iptables:
$ sudo iptables -L -n -v
Aby zresetować lub wyczyścić liczniki, wykonaj następujące czynności:
$ sudo iptables -Z $ sudo iptables -L -n -v
Aby zresetować tylko licznik łańcucha INPUT, uruchom:
$ iptables -Z INPUT
Aby zresetować licznik określonej reguły, wykonaj następujące czynności:
$ iptables -z INPUT RULE-NUMBER
Pamiętaj, aby zmienić RULE-NUMBER na tę konkretną regułę.
Ostatnie słowa
iptables to potężne narzędzie wiersza poleceń zapory sieciowej. Możesz skonfigurować prawie wszystko, co dotyczy zasobów sieciowych, pakietów, interfejsów i określonych scenariuszy.
Ponadto iptables oferuje wiele opcji. Sprawdź jego stronę główną za pomocą polecenia man, aby uzyskać pełny obraz.
$ man iptables $ man ip6tables
Następnie sprawdź zaporę sieciową i dowiedz się, jak pomaga powstrzymać ataki.