Bezpieczeństwo systemu GNU/Linux – Iptables cz.2

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


Blokada konkretnego adresu IP:

iptables -A INPUT -s 192.168.1.101 -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

Przycięcie TTL do 1 (ludek nie będzie udostępniał internetu innym):


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


Otwarcie portu 80 dla eth0:

iptables -A INPUT -p tcp -i eth0 –dport 80 -j ACCEPT

Zamknięcie portu 25 (nie wyślemy maila) dla konkretnego IP:

iptables -I FORWARD -p tcp –dport 25 -s 192.168.1.101 -j DROP

Strona informacyjna dla nie płacących rachunki na porcie 83

iptables -A PREROUTING -t nat -s 192.168.1.101 -p tcp –dport 1:65535 -j DNAT –to- 192.168.1.1:83 

Odblokowanie:

iptables -D PREROUTING -t nat -s 192.168.1.12 -p tcp –dport 1:65535 -j DNAT –to- 192.168.1.1:83

Dzielenie łącza – maskarada dla sieci 10.0.0.0:

echo 1 > /proc/sys/net/ipv4/ip_forward

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:).

Dodaj komentarz

beitadmin.pl - Droga Administratora IT