25 korisnih pravila IPtable firewall-a koje bi svaki Linux administrator trebao znati
Upravljanje mrežnim prometom jedan je od najtežih poslova s kojima se administratori sistema moraju nositi. On mora da konfiguriše zaštitni zid na takav način da ispunjava zahteve sistema i korisnika i za dolazne i za odlazne veze, a da sistem ne ostane ranjiv na napade.
Ovdje iptables
dobro dolaze. Iptables je Linux komandni red firewall koji omogućava administratorima sistema da upravljaju dolaznim i odlaznim prometom putem skupa konfigurabilnih tabličnih pravila.
Iptables koristi skup tabela koje imaju lance koji sadrže skup ugrađenih ili korisnički definiranih pravila. Zahvaljujući njima administrator sistema može pravilno filtrirati mrežni promet svog sistema.
Prema priručniku za iptables, trenutno postoje 3 vrste tabela:
-
FILTER
– ovo je zadana tabela, koja sadrži ugrađene lance za:- INPUT – paketi namijenjeni lokalnim utičnicama
- PROSLJEDI – paketi koji se usmjeravaju kroz sistem
- OUTPUT – paketi generirani lokalno
NAT
– tabela koja se konsultuje kada paket pokuša da kreira novu vezu. Ima sledeće ugrađene:- PRIROUTING – koristi se za promjenu paketa čim se primi
- OUTPUT – koristi se za izmjenu lokalno generiranih paketa
- POSTROUTING – koristi se za izmjenu paketa dok se spremaju izaći
MANGLE
– ova tabela se koristi za izmjenu paketa. Do verzije kernela 2.4 ova tabela je imala samo dva lanca, ali sada ih ima 5:
- PRIROUTING – za promjenu dolaznih veza
U ovom članku ćete vidjeti neke korisne naredbe koje će vam pomoći da upravljate svojim Linux box firewall-om putem iptablesa. Za potrebe ovog članka, počet ću s jednostavnijim naredbama i ići na složenije do kraja.
1. Start/Stop/Restart Iptables Firewall
Prvo, trebali biste znati kako upravljati iptables uslugom u različitim Linux distribucijama. Ovo je prilično lako:
Na Linux distribucijama baziranim na SystemD-u
------------ On Cent/RHEL 7 and Fedora 22+ ------------
systemctl start iptables
systemctl stop iptables
systemctl restart iptables
Na SysVinit baziranim Linux distribucijama
------------ 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 zaštitnog zida
Ako želite provjeriti postojeća pravila, koristite sljedeću naredbu:
iptables -L -n -v
Ovo bi trebalo vratiti izlaz sličan onome 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 više volite provjeriti pravila za određenu tabelu, možete koristiti opciju -t
nakon koje slijedi tabela koju želite provjeriti. Na primjer, da provjerite pravila u tabeli NAT
, možete koristiti:
iptables -t nat -L -v -n
3. Blokirajte specifičnu IP adresu u IPtables zaštitnom zidu
Ako pronađete neuobičajenu ili uvredljivu aktivnost sa IP adrese, možete blokirati tu IP adresu prema sljedećem pravilu:
iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
Gdje trebate promijeniti "xxx.xxx.xxx.xxx"
sa stvarnom IP adresom. Budite veoma oprezni kada pokrećete ovu naredbu jer možete slučajno blokirati svoju IP adresu. Opcija -A
dodaje pravilo na kraj odabranog lanca.
U slučaju da želite samo blokirati TCP promet sa te IP adrese, možete koristiti opciju -p
koja specificira protokol. Na taj način će komanda izgledati ovako:
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP
4. Deblokirajte IP adresu u IPtables zaštitnom zidu
Ako ste odlučili da više ne želite blokirati zahtjeve sa 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 da koristite dužu opciju, možete koristiti --delete
.
5. Blokirajte određeni port na IPtables zaštitnom zidu
Ponekad ćete možda htjeti blokirati dolazne ili odlazne veze na određenom portu. To je dobra mjera sigurnosti i trebali biste stvarno razmisliti o tome kada postavljate svoj firewall.
Za blokiranje odlaznih veza na određenom portu koristite:
iptables -A OUTPUT -p tcp --dport xxx -j DROP
Da dozvolite dolazne veze koristite:
iptables -A INPUT -p tcp --dport xxx -j ACCEPT
U oba primjera promijenite "xxx"
sa stvarnim portom koji želite dopustiti. Ako želite blokirati UDP promet umjesto TCP, jednostavno promijenite "tcp"
sa "udp"
u iznad iptables pravila.
6. Dozvolite više portova na IP tablicama koristeći Multiport
Možete dozvoliti više portova odjednom, koristeći više portova, 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. Dozvolite određeni mrežni raspon na određenom portu na IP tablicama
Možda ćete htjeti ograničiti određene veze na određenom portu na datu mrežu. Recimo da želite dozvoliti odlazne veze na portu 22
na mrežu 192.168.100.0/24
.
To možete učiniti sa ovom komandom:
iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT
8. Blokirajte Facebook na IPtables zaštitnom zidu
Neki poslodavci vole da blokiraju pristup Facebook-u svojim zaposlenima. Ispod je primjer kako blokirati promet na Facebooku.
Napomena: Ako ste administrator sistema i trebate primijeniti ova pravila, imajte na umu da vaše kolege mogu 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
Zatim možete blokirati tu Facebook mrežu sa:
iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP
Imajte na umu da opseg IP adresa koje koristi Facebook može varirati u vašoj zemlji.
9. Postavite prosljeđivanje portova u IPtables
Ponekad ćete možda htjeti proslijediti promet jedne usluge na drugi port. 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 komanda prosljeđuje sav dolazni promet na mrežnom interfejsu eth0
, sa porta 25
na port 2525
. Možete promijeniti portove sa onima koji su vam potrebni.
10. Blokirajte Network Flood na Apache portu sa IPtables
Ponekad IP adrese mogu zahtijevati previše veza prema web portovima na vašoj web stranici. To može uzrokovati brojne probleme i da 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 komanda ograničava dolazne veze sa po minuti na 100
i postavlja ograničenje burst na 200
. Možete urediti limit i limit-burst prema vlastitim specifičnim zahtjevima.
11. Blokirajte dolazne ping zahtjeve na IP tablicama
Neki sistemski administratori vole da blokiraju 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. Dozvolite pristup povratnoj petlji
Pristup povratnom petljom (pristup sa 127.0.0.1
) je važan i uvijek ga ostavite aktivnim:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
13. Vodite evidenciju ispuštenih mrežnih paketa na IPtables
Ako želite da zabilježite ispuštene pakete na mrežni interfejs eth0
, možete koristiti sljedeću naredbu:
iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"
Možete promijeniti vrijednost nakon "--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 IP tablicama
Možete blokirati pristup vašem sistemu sa određene MAC adrese koristeći:
iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP
Naravno, moraćete da promenite "00:00:00:00:00:00"
sa stvarnom MAC adresom koju želite da blokirate.
15. Ograničite broj istovremenih veza po IP adresi
Ako ne želite da imate previše istovremenih veza uspostavljenih sa jedne IP adrese na datom portu, možete koristiti naredbu ispod:
iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
Gornja naredba ne dozvoljava više od 3
veze po klijentu. Naravno, možete promijeniti broj porta da odgovara drugoj usluzi. Također --connlimit-above
treba promijeniti da odgovara vašim zahtjevima.
16. Pretraživanje unutar IPtables pravila
Nakon što definirate svoja iptables pravila, htjet ćete pretraživati s vremena na vrijeme i možda ćete ih morati mijenjati. 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
sa stvarnom tablicom unutar koje želite pretraživati i $string
sa stvarnim nizom koji tražite.
Evo primjera:
iptables -L INPUT -v -n | grep 192.168.0.100
17. Definirajte novi lanac IPTables
Uz iptables, možete definirati svoj vlastiti lanac i pohraniti prilagođena pravila u njega. Za definiranje lanca koristite:
iptables -N custom-filter
Sada možete provjeriti postoji li vaš novi filter:
iptables -L
Sample Output
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. Flush IPtables Firewall Chains ili Pravila
Ako želite isprazniti lance zaštitnog zida, možete koristiti:
iptables -F
Možete isprati lance sa određene tabele sa:
iptables -t nat -F
Možete promijeniti "nat"
sa stvarnom tablicom koje lance želite isprazniti.
19. Spremite IPtables pravila u datoteku
Ako želite da sačuvate pravila zaštitnog zida, možete koristiti naredbu iptables-save
. Možete koristiti sljedeće da sačuvate i pohranite svoja pravila u datoteku:
iptables-save > ~/iptables.rules
Na vama je gdje ćete pohraniti datoteku i kako ćete je imenovati.
20. Vratite IPtables pravila iz datoteke
Ako želite da vratite listu iptables pravila, možete koristiti iptables-restore
. Naredba izgleda ovako:
iptables-restore < ~/iptables.rules
Naravno, put do vaše datoteke pravila može biti drugačiji.
21. Postavite IPtables pravila za PCI usklađenost
Neki sistemski administratori će možda morati da konfigurišu svoje servere da budu kompatibilni sa PCI. Postoje mnogi zahtjevi različitih dobavljača usklađenosti s PCI, ali postoji nekoliko uobičajenih.
U mnogim slučajevima, morat ćete imati više od jedne IP adrese. Moraćete da primenite dolenavedena pravila za IP adresu sajta. Budite posebno oprezni kada koristite dolenavedena pravila i koristite ih samo ako ste sigurni šta 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čan kontrolni panel, možda ćete morati blokirati i njegove portove. 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 vašeg PCI dobavljača, pažljivo provjerite njihov izvještaj i primijenite potrebna pravila. U nekim slučajevima možda ćete morati blokirati i UDP promet na određenim portovima.
22. Dozvolite uspostavljene i povezane veze
Kako je mrežni promet odvojen od dolaznog i odlaznog, poželjet ćete dozvoliti uspostavljeni i povezani dolazni promet. Za dolazne veze uradite to sa:
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 neki mrežni paketi budu označeni kao nevažeći. Neki ljudi možda više vole da zapisuju te pakete, ali drugi radije da ih ispuste. Za izbacivanje nevažećih paketa možete koristiti:
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
24. Blokirajte vezu na mrežnom sučelju
Neki sistemi mogu imati više od jednog mrežnog interfejsa. 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š sistem ne bi trebao slati e-poštu, možete blokirati odlazne 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 firewall od kojeg lako možete imati koristi. Za svakog administratora sistema je od vitalnog značaja da nauči barem osnove iptablesa. 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 ovu listu, podijelite ih s nama, tako što ćete ih poslati u odeljku za komentare ispod.