Iptables jest zbiorem reguł sterujących filtrem systemu, który decyduje jakie pakiety powinny mieć możliwość wejścia oraz wyjścia a które nie. Mówiąc prościej jak niesfornemu użytkownikowi wyłączyć dostęp do programów p2p. Domyślnie w systemie GNU/Linux iptables już się znajduje, może występować w 2 lokalizacjach: /usr/sbin/iptables lub /sbin/iptables, można je edytować będąc zalogowanym jako root.
1) Składnia iptables:
Dodawanie nowej reguły na końcu łańcucha (obydwie reguły mają te same znaczenia):
iptables [-t TABELA] -A ŁAŃCUCH WŁAŚCIWOŚCI_REGUŁY [OPCJE]
iptables [-t TABELA] --append ŁAŃCUCH WŁAŚCIWOŚCI_REGUŁY [OPCJE]
Usuwanie reguły:
iptables [-t TABELA] -D ŁAŃCUCH WŁAŚCIWOŚCI_REGUŁY [OPCJE]
iptables [-t TABELA] –delete ŁAŃCUCH WŁAŚCIWOŚCI_REGUŁY [OPCJE]
oraz
iptables [-t TABELA] -D ŁAŃCUCH NUMER_REGUŁY [OPCJE]
iptables [-t TABELA] –delete ŁAŃCUCH NUMER_REGUŁY [OPCJE]
Dodanie nowej reguły wewnątrz łańcucha:
iptables [-t TABELA] -I ŁAŃCUCH [NUMER_REGUŁY] WŁAŚCIWOŚCI_REGUŁY [OPCJE]
iptables [-t TABELA] –insert ŁAŃCUCH [NUMER_REGUŁY] WŁAŚCIWOŚCI_REGUŁY [OPCJE]
Wymienienie istniejącej reguły na nową:
iptables [-t TABELA] -R ŁAŃCUCH NUMER_REGUŁY WŁAŚCIWOŚCI_REGUŁY [OPCJE]
iptables [-t TABELA] –replace ŁAŃCUCH NUMER_REGUŁY WŁAŚCIWOŚCI_REGUŁY [OPCJE]
Wylistowanie reguł w danym łańcuchu/tabeli
iptables [-t TABELA] -L [ŁAŃCUCH] [OPCJE]
iptables [-t TABELA] –list [ŁAŃCUCH] [OPCJE]
(jeśli nie jest podany ŁAŃCUCH wylistuje wszystkie reguły w danej tabeli).
Usunięcie wszystkich reguł danego łańcucha:
iptables [-t TABELA] -F [ŁAŃCUCH] [OPCJE]
iptables [-t TABELA] –flush [ŁAŃCUCH] [OPCJE]
(jeśli nie jest podany ŁAŃCUCH usunie wszystkie reguły w danej tabeli).
Wyzerowanie licznika pakietów i bajtów dla łańcuchów:
iptables [-t TABELA] -Z [ŁAŃCUCH] [OPCJE]
iptables [-t TABELA] –zero [ŁAŃCUCH] [OPCJE]
(jeśli nie jest podany ŁAŃCUCH wyzeruje wszystkie liczniki w danej tabeli).
Utworzenie nowego łańcucha:
iptables [-t TABELA] -N ŁAŃCUCH
iptables [-t TABELA] –new-chain ŁAŃCUCH
Usunięcie łańcucha
iptables [-t TABELA] -X [ŁAŃCUCH]
iptables [-t TABELA] –delete-chain [ŁAŃCUCH]
(jeśli nazwa łańcucha nie została podana usunie wszystkie nie wbudowane łańcuchy z podanej tabeli. ŁAŃCUCH musi być pusty – nie może zawierać żadnych reguł aby zostać usuniętym).
Zmiana nazwy łańcucha:
iptables [-t TABELA] -E STARA_NAZWA_ŁAŃCUCHA NOWA_NAZWA_ŁAŃCUCHA
iptables [-t TABELA] –rename-chain STARA_NAZWA_ŁAŃCUCHA NOWA_NAZWA_ŁAŃCUCHA
Ustawia domyślny sposób postępowania dla łańcucha:
iptables [-t TABELA] -P ŁAŃCUCH CEL [OPCJE]
iptables [-t TABELA] –policy ŁAŃCUCH CEL [OPCJE]
(działa tylko dla wbudowanych łańcuchów).
Wyświetlenie krótkiej pomocy:
iptables -h
Tabele:
Tabela filter
Zawiera wbudowane łańcuchy:
INPUT – pakiety przeznaczone do odbioru przez lokalny komputer.
FORWARD – pakiety routowane poprzez lokalny komputer.
OUTPUT – pakiety wygenerowane przez lokalny komputer.
Tabela nat
Trafiają do niej pakiety nawiązujące nowe połączenia. Zawiera wbudowane łańcuchy:
PREROUTING – dla zmian w pakietach w momencie, kiedy się pojawiają.
OUTPUT – dla zmian w pakietach, które utworzone zostały na lokalnym komputerze, przed ich routingiem.
POSTROUTING – dla zmian w pakietach tuż przed ich przesłaniem dalej.
Tabela mangle
Zawiera wbudowane łańcuchy:
PREROUTING – dla zmian w przychodzących pakietach zanim zostaną one routowane.
OUTPUT – dla zmian w pakietach, które utworzone zostały na lokalnym komputerze, przed ich routingiem.
INPUT (od kernela 2.4.18) – dla pakietów zmierzających do lokalnego komputera.
FORWARD (od kernela 2.4.18) – dla pakietów będących routowanymi przez lokalny komputer.
POSTROUTING (od kernela 2.4.18) – dla pakietów po procesie routowania, zanim opuszczą one lokalny komputer.
Tabela raw
Używana przed wszystkimi innymi tablicami. Zawiera następujące łańcuchy:
PREROUTING – dla pakietów przychodzących przez jakiekolwiek urządzenie sieciowe (w rozumieniu eth0, ppp0, lo itd.)
OUTPUT – dla pakietów wygenerowanych przez lokalne procesy.
2) Przykłady użycia:
Blokada p2p 08.00-16.00:
iptables -t mangle -A PREROUTING -m time –timestart 08:00 –timestop 16:00 -m ipp2p –ipp2p -j DROP
Jak wyżej, tyle że dla konkretnego IP:
iptables -I FORWARD -s 192.168.1.101 -m time –timestart 17:00 –timestop 22:00 -m ipp2p –ipp2p -j DROP
Całkowita blokada p2p dla konkretnego IP:
iptables -I FORWARD -s 192.168.1.101 -m ipp2p –ipp2p -j DROP
Przekierowanie portu 1900 dla ip 192.168.1.101 (p2p):
iptables -I FORWARD -p tcp -d 192.168.1.101 –dport 1900 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth0 –dport 1900 -j DNAT –to 192.168.1.101
Blokada konkretnego MAC’a:
iptables -A INPUT -m mac –mac-source 00:00:00:00:00:01 -j DROP
iptables -A FORWARD -m mac –mac-source 00:00:00:00:00:01 -j DROP
Limit podłączeń:
iptables -A FORWARD -p tcp -m connlimit –connlimt-above 70 –connlimit-mask 32 -j DROP
Blokada portów TCP/UDP dla konkretnego IP:
iptables -I FORWARD -s 192.168.1.101 -p tcp –dport 600:800 -j DROP
iptables -I FORWARD -s 192.168.1.101 -p udp –dport 600:800 -j DROP
iptables -A FORWARD -s 192.168.1.101 -j DROP
iptables -A INPUT -d 192.168.1.101 -j DROP
iptables -A FORWARD -d 192.168.1.101 -j DROP
iptables -t mangle -A POSTROUTING -d 192.168.1.101 -j TTL –ttl-set 1
To samo, ale dla całej sieci (tutaj eth1, zmieniając na eth2,3,4 itd robimy to dla wszystkich podsieci):
iptables -t mangle -A POSTROUTING -o eth1 -j TTL –ttl-set 1
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
iptables -t filter -P FORWARD DROP
iptables -t filter -A FORWARD -s 10.0.0.0/255.255.255.0 -d 0/0 -j ACCEPT
iptables -t filter -A FORWARD -s 0/0 -d 10.0.0.0/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 0/0 -j MASQUERADE
Źródło:
http://iptables.pl/
http://zsk.wsti.pl/publikacje/iptables_przystepnie.htm
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).