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:
-
FILTER
– ovo je zadana tablica koja sadrži ugrađene lance za:- INPUT – paketi namijenjeni lokalnim utičnicama
- FORWARD – paketi se usmjeravaju kroz sustav
- IZLAZ – paketi generirani lokalno
NAT
– tablica koja se pregledava kada paket pokuša stvoriti novu vezu. Ima sljedeće ugrađeno:- PREROUTING – koristi se za izmjenu paketa čim je primljen
- IZLAZ – koristi se za izmjenu lokalno generiranih paketa
- POSTRUTIRANJE – koristi se za izmjenu paketa koji će izaći
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:
- PREROUTING – za promjenu dolaznih veza
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.