25 korisnih pravila IPtable vatrozida koja bi svaki Linux administrator trebao znati


Upravljanje mrežnim prometom jedan je od najtežih poslova s kojima se administratori sustava moraju nositi. On mora konfigurirati vatrozid na takav način da će zadovoljiti zahtjeve sustava i korisnika za dolazne i odlazne veze, a da sustav ne bude ranjiv na napade.

Ovdje iptables dobro dolaze. Iptables je vatrozid Linux naredbenog retka koji administratorima sustava omogućuje upravljanje dolaznim i odlaznim prometom putem skupa konfigurabilnih pravila tablice.

Iptables koristi skup tablica koje imaju lance koji sadrže skup ugrađenih ili korisnički definiranih pravila. Zahvaljujući njima administrator sustava može ispravno filtrirati mrežni promet svog sustava.

Prema priručniku za iptables, trenutno postoje 3 vrste tablica:

    1. FILTER – ovo je zadana tablica koja sadrži ugrađene lance za:

      1. INPUT  – paketi namijenjeni lokalnim utičnicama
      2. FORWARD – paketi se usmjeravaju kroz sustav
      3. IZLAZ – paketi generirani lokalno
    2. NAT – tablica koja se pregledava kada paket pokuša stvoriti novu vezu. Ima sljedeće ugrađeno:

      1. PREROUTING – koristi se za izmjenu paketa čim je primljen
      2. IZLAZ – koristi se za izmjenu lokalno generiranih paketa
      3. POSTRUTIRANJE – koristi se za izmjenu paketa koji će izaći
    3. MANGLE – ova tablica se koristi za promjenu paketa. Do verzije kernela 2.4 ova je tablica imala samo dva lanca, ali sada ih je 5:

      1. PREROUTING – za promjenu dolaznih veza
      2. IZLAZ – za izmjenu lokalno generiranih  paketa
      3. ULAZ – za dolazne pakete
      4. POSTRUTIRANJE – za izmjenu paketa koji će izaći
      5. NAPRIJED – za pakete usmjerene kroz kutiju

U ovom ćete članku vidjeti neke korisne naredbe koje će vam pomoći u upravljanju vatrozidom vašeg Linux okvira putem iptables. U svrhu ovog članka, počet ću s jednostavnijim naredbama i ići na složenije do kraja.

1. Pokrenite/zaustavite/ponovno pokrenite Iptables vatrozid

Prvo, trebali biste znati kako upravljati iptables uslugom u različitim Linux distribucijama. Ovo je prilično jednostavno:

Na Linux distribucijama temeljenim na SystemD

------------ On Cent/RHEL 7 and Fedora 22+ ------------
systemctl start iptables
systemctl stop iptables
systemctl restart iptables

Na Linux distribucijama temeljenim na SysVinitu

------------ On Cent/RHEL 6/5 and Fedora ------------
/etc/init.d/iptables start 
/etc/init.d/iptables stop
/etc/init.d/iptables restart

2. Provjerite sva pravila IPtables vatrozida

Ako želite provjeriti postojeća pravila, koristite sljedeću naredbu:

iptables -L -n -v

Ovo bi trebalo vratiti izlaz sličan onom ispod:

Chain INPUT (policy ACCEPT 1129K packets, 415M bytes)
 pkts bytes target prot opt in out source destination 
 0 0 ACCEPT tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
 0 0 ACCEPT udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
 0 0 ACCEPT tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
 0 0 ACCEPT udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination 
 0 0 ACCEPT all -- * lxcbr0 0.0.0.0/0 0.0.0.0/0 
 0 0 ACCEPT all -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 354K packets, 185M bytes)
 pkts bytes target prot opt in out source destination

Ako želite provjeriti pravila za određenu tablicu, možete koristiti opciju -t nakon koje slijedi tablica koju želite provjeriti. Na primjer, za provjeru pravila u NAT tablici, možete koristiti:

iptables -t nat -L -v -n

3. Blokirajte određenu IP adresu u IPtables vatrozidu

Ako pronađete neobičnu ili zlonamjernu aktivnost s IP adrese, možete blokirati tu IP adresu sljedećim pravilom:

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

Gdje trebate promijeniti "xxx.xxx.xxx.xxx" sa stvarnom IP adresom. Budite vrlo oprezni kada pokrećete ovu naredbu jer možete slučajno blokirati vlastitu IP adresu. Opcija -A dodaje pravilo na kraj odabranog lanca.

U slučaju da samo želite blokirati TCP promet s te IP adrese, možete upotrijebiti opciju -p koja navodi protokol. Tako će naredba izgledati ovako:

iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP

4. Deblokirajte IP adresu u IPtables vatrozidu

Ako ste odlučili da više ne želite blokirati zahtjeve s određene IP adrese, možete izbrisati pravilo blokiranja sljedećom naredbom:

iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

Opcija -D briše jedno ili više pravila iz odabranog lanca. Ako više volite koristiti dužu opciju, možete koristiti --delete.

5. Blokirajte određeni priključak na IPtables vatrozidu

Ponekad ćete možda htjeti blokirati dolazne ili odlazne veze na određenom priključku. To je dobra sigurnosna mjera i stvarno biste trebali razmisliti o tome kada postavljate vatrozid.

Za blokiranje odlaznih veza na određenom priključku koristite:

iptables -A OUTPUT -p tcp --dport xxx -j DROP

Za dopuštanje dolaznih veza koristite:

iptables -A INPUT -p tcp --dport xxx -j ACCEPT

U oba primjera promijenite "xxx" sa stvarnim priključkom koji želite dopustiti. Ako želite blokirati UDP promet umjesto TCP, jednostavno promijenite "tcp" s "udp" u iznad pravila iptables.

6. Dopustite više portova na IPtables koristeći Multiport

Možete dopustiti više portova odjednom, koristeći multiport, ispod možete pronaći takvo pravilo za dolazne i odlazne veze:

iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT

7. Dopustite određeni mrežni raspon na određenom priključku na IPtables

Možda ćete htjeti ograničiti određene veze na određenom priključku na određenu mrežu. Recimo da želite dopustiti odlazne veze na priključku 22 na mrežu 192.168.100.0/24.

To možete učiniti ovom naredbom:

iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT

8. Blokirajte Facebook na IPtables vatrozidu

Neki poslodavci vole blokirati pristup Facebooku svojim zaposlenicima. Ispod je primjer kako blokirati promet na Facebooku.

Napomena: Ako ste administrator sustava i trebate primijeniti ova pravila, imajte na umu da bi vaši kolege mogli prestati razgovarati s vama :)

Prvo pronađite IP adrese koje koristi Facebook:

host facebook.com 
facebook.com has address 66.220.156.68
whois 66.220.156.68 | grep CIDR
CIDR: 66.220.144.0/20

Tada možete blokirati tu Facebook mrežu pomoću:

iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP

Imajte na umu da raspon IP adresa koje koristi Facebook može varirati u vašoj zemlji.

9. Postavite prosljeđivanje porta u IPtables

Ponekad ćete možda htjeti proslijediti promet jedne usluge na drugi priključak. To možete postići sljedećom naredbom:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525

Gornja naredba prosljeđuje sav dolazni promet na mrežnom sučelju eth0, s priključka 25 na priključak 2525. Možete promijeniti priključke onima koji su vam potrebni.

10. Blokirajte poplavu mreže na Apache portu s IPtables

Ponekad IP adrese mogu zahtijevati previše veza prema web priključcima na vašoj web stranici. To može uzrokovati niz problema, a kako biste spriječili takve probleme, možete koristiti sljedeće pravilo:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT

Gornja naredba ograničava dolazne veze s po minuti na 100 i postavlja ograničenje na 200. Možete urediti limit i limit-burst prema svojim specifičnim zahtjevima.

11. Blokirajte dolazne Ping zahtjeve na IPtables

Neki administratori sustava vole blokirati dolazne ping zahtjeve zbog sigurnosnih razloga. Iako prijetnja nije toliko velika, dobro je znati kako blokirati takav zahtjev:

iptables -A INPUT -p icmp -i eth0 -j DROP

12. Dopustite povratni pristup

Povratni pristup (pristup s 127.0.0.1) je važan i uvijek ga trebate ostaviti aktivnim:

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

13. Vodite zapisnik ispuštenih mrežnih paketa na IPtables

Ako želite zabilježiti ispuštene pakete na mrežnom sučelju eth0, možete koristiti sljedeću naredbu:

iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"

Možete promijeniti vrijednost iza "--log-prefix" nečim po svom izboru. Poruke su prijavljene u /var/log/messages i možete ih tražiti pomoću:

grep "IPtables dropped packets:" /var/log/messages

14. Blokirajte pristup određenoj MAC adresi na IPtables

Možete blokirati pristup svom sustavu s određene MAC adrese koristeći:

iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

Naravno, morat ćete promijeniti "00:00:00:00:00:00" sa stvarnom MAC adresom koju želite blokirati.

15. Ograničite broj istodobnih veza po IP adresi

Ako ne želite imati previše istodobnih veza uspostavljenih s jedne IP adrese na određenom portu, možete koristiti naredbu u nastavku:

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

Gornja naredba dopušta ne više od 3 veze po klijentu. Naravno, možete promijeniti broj priključka da odgovara drugoj usluzi. Također --connlimit-above treba promijeniti da odgovara vašim zahtjevima.

16. Pretraživanje unutar pravila IPtables

Nakon što definirate svoja pravila za iptables, povremeno ćete htjeti pretraživati i možda ćete ih morati promijeniti. Jednostavan način pretraživanja unutar vaših pravila je korištenje:

iptables -L $table -v -n | grep $string

U gornjem primjeru morat ćete promijeniti $table stvarnom tablicom unutar koje želite pretraživati i $string stvarnim nizom koji tražite.

Evo primjera:

iptables -L INPUT -v -n | grep 192.168.0.100

17. Definirajte novi lanac IPTables

Pomoću iptables možete definirati vlastiti lanac i u njemu pohraniti prilagođena pravila. Za definiranje lanca koristite:

iptables -N custom-filter

Sada možete provjeriti je li vaš novi filter tu:

iptables -L
Uzorak izlaza
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain custom-filter (0 references)
target prot opt source destination

18. Ispraznite IPtables vatrozidne lance ili pravila

Ako želite isprati svoje lance vatrozida, možete koristiti:

iptables -F

Možete isprati lance iz određene tablice pomoću:

iptables -t nat -F

Možete promijeniti "nat" sa stvarnom tablicom koje lance želite isprati.

19. Spremite IPtables pravila u datoteku

Ako želite spremiti svoja pravila vatrozida, možete koristiti naredbu iptables-save. Za spremanje i pohranjivanje pravila u datoteku možete koristiti sljedeće:

iptables-save > ~/iptables.rules

Na vama je gdje ćete pohraniti datoteku i kako ćete je imenovati.

20. Vratite IPtables pravila iz datoteke

Ako želite vratiti popis pravila iptables, možete koristiti iptables-restore. Naredba izgleda ovako:

iptables-restore < ~/iptables.rules

Naravno, put do vaše datoteke s pravilima može biti drugačiji.

21. Postavite pravila IPtables za PCI usklađenost

Neki administratori sustava možda će morati konfigurirati svoje poslužitelje da budu kompatibilni s PCI. Postoje mnogi zahtjevi različitih dobavljača PCI usklađenosti, ali malo je uobičajenih.

U mnogim slučajevima morat ćete imati više od jedne IP adrese. Morat ćete primijeniti pravila u nastavku za IP adresu stranice. Budite posebno oprezni kada koristite pravila u nastavku i koristite ih samo ako ste sigurni što radite:

iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP

Ako koristite cPanel ili sličnu upravljačku ploču, možda ćete morati blokirati i njezine priključke. Evo primjera:

iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports  2082,2083,2095,2096,2525,2086,2087 -j DROP

Napomena: Kako biste bili sigurni da ispunjavate zahtjeve dobavljača PCI-ja, pažljivo provjerite njihovo izvješće i primijenite potrebna pravila. U nekim ćete slučajevima možda morati blokirati i UDP promet na određenim priključcima.

22. Dopusti uspostavljene i povezane veze

Budući da je mrežni promet odvojen na dolazni i odlazni, dopustite uspostavljeni i povezani dolazni promet. Za dolazne veze učinite to s:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Za odlaznu upotrebu:

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

23. Ispustite nevažeće pakete u IPtables

Moguće je da su neki mrežni paketi označeni kao nevažeći. Neki ljudi možda radije zapisuju te pakete, ali drugi ih radije odbacuju. Za ispuštanje nevažećih paketa, možete koristiti:

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP 

24. Blokiraj vezu na mrežnom sučelju

Neki sustavi mogu imati više od jednog mrežnog sučelja. Možete ograničiti pristup tom mrežnom sučelju ili blokirati veze s određene IP adrese.

Na primjer:

iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP

Promijenite “xxx.xxx.xxx.xxx ” sa stvarnom IP adresom (ili mrežom) koju želite blokirati.

25. Onemogućite odlaznu poštu kroz IPTables

Ako vaš sustav ne bi trebao slati e-poštu, možete blokirati izlazne portove na SMTP portovima. Na primjer, možete koristiti ovo:

iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT

Zaključak

Iptables je moćan vatrozid od kojeg možete lako imati koristi. Od vitalne je važnosti za svakog administratora sustava da nauči barem osnove iptables. Ako želite pronaći detaljnije informacije o iptables-u i njegovim opcijama, preporučujemo da pročitate njegov priručnik:

man iptables

Ako mislite da bismo trebali dodati još naredbi na ovaj popis, podijelite ih s nama tako što ćete ih poslati u odjeljak za komentare ispod.