Ponad 25 najczęściej używanych poleceń iptables z przykładami

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.