iptables je program koji omogućuje sistem administratorima da konfigurišu zabrane i pravila firewall-a na Linux-u. Razni programi, procesi, servisi itd koriste mrežne protokole kako bi komunicirali između servera i kompjutera na logalnoj ili globalnoj mreži. iptables je namenjen IPV4 dok je ip6tables namenjen IPV6 protokolu.
Ovde ću navesti neke od osnovnih funkcija kako bi običan desktop korisnik mogao da obezbedi svoj kompjuter. Firewall pravila mogu biti složena i prilično detaljna tako da mimo navedenih ima mnogo složenijih. Više o njima možete saznati u dokumentaciji iptables-a.
iptables je samo jedan od sistema firewall-a, ali je prisutan kao default-an u većini Linux distribucija.
Obratite pažnju, da bi pristupili radu sa iptables, morate biti root. Molim vas pazite na velika i mala slova, inače vam pravila neće raditi ili će se pogrešno konfigurisane.
iptables se sastoji od tri takozvana chain-a
- INPUT – dolazni saobraćaj
konekcije koje su upućene ka našem kompjuteru - OUTPUT – odlazni saobraćaj
konekcije koje naš kompjuter uspostavlja - FORWARD – prosleđivani saobraćaj (koristi se kod rutera i više mreznih kartica)
prosleđivanje konekcije na neki drugi protokol, ovo vam neće trebati u kućnim uslovima
Posmatrajte ovo kao tri tabele u koje unosite pravila koje će kompjuter prgledati prilikom interakcije sa mrežom.
Kada se definišu atributi protokola, na kraju se zadaje pravilo koje će se odnositi na isti. Ta pravila se nazivaju policy i mogu imati tri statusa.
- ACCEPT – prihvatanje
- DROP – odbijanje
- REJECT – odbijanje uz obaveštenje pošiljaoca paketa
Komande:
iptables -L – lista sva pravila chain-ovea
iptables -A – dodaje pravilo na kraj liste
iptables -I – dodaje pravilo na početak liste
Kompjuter pravila čita od gore prema dole, ovo je jako važno jer ako zabranite NPR: konekcije sa lokalnom mrežom, a potom dozvolite konekciju samo jedno IP adresi, onda to pravilo neće biti uvaženo. Treba prvo da dozvolite konekciju samo toj IP adresi a potom zabranite sve ostale.
Ovo pravilo je dato kao primer, postoje različiti lakši načini da postignete iste rezultate.
Definisanje default-nog policy-a (politike):
iptables -P [ime chaina] {ACCEPT / DROP}
-P opcija označava izmenu policy-a za određeni chain.
Možete izabrati ACCEPT ili DROP. ACCEPT je postavljen po default-u i prihvata sve konekcije tako da ćete u pravila upisivati zabrane, dok DROP odbija sve, a u pravilima dozvoljavate konekcije.
Dodavanje pravila u chain
iptables -A INPUT -s 192.168.0.5 -j DROP
-s source IP adresa na koju se pravilo odnosi
-j zadaje DROP, REJECT ili ACCEP pravilo
Ova komanda dodaje pravilo u INPUT chan, koje će zabraniti sve konekcije koje DOLAZE sa 192.168.0.5 IP adrese, na kraju se zadaje pravilo DROP koje označava zabranu.
Drugi primer:
iptables -A INPUT -s 192.168.0.5 -p tcp –destination_port 25 -j DROP
-p definiše protokol, u ovom slučaju TCP
Ova komanda zabranjuje konekciju sa IP adresom 192.168.0.5 na protokol tcp sa porta 25
postoji više opcija kod zadavanja atributa a ovo su neki od njih:
-i – interfejs npr eth0, odnosno ime mrežne kartice na koju se pravilo odnosi
-o – output interface (izlazni interfejs) mrežna kartica sa koje konekcija odlazi
-d – destinacija (IP adresade)
Primer:
iptabels -I INPUT -i eth0 -p tcp -s 0/0 -d 192.168.0.5 –dport 21 -j DROP
ulazni saobraćaj kroz eth0 karticu koji dolazi sa tcp protokola sa bilo koje IP adrese a upućeni su ka 192.168.0.5 na portu 21 će se odbiti.
Brisanje pravila:
iptables -D – briše pravilo
Nakon opcije D potrebno je definisati koje pravilo želite obrisati.
iptables -D INPUT 3 – briše pravilo u chainu INPUT koje je u trećem redu
Evo još par gotovih rešenja kao primeri da lakše shvatite prinicp:
Dozvola SSH konekcije samo internoj mreži:
iptables -I INPUT -i eth0 -p tcp -s 192.168.0.0/24 -d [server ip] -dport 22 -j ACCEPT
dodaje na vrh liste u chain-u INPUT pravilo koje će prihvatiti konekcije sa eth0 mrežne kartice preko tcp protokola sa interne mreže preko porta 22 koji predstavlja SSH.
Dozvola http konekcije:
iptables -A INPUT -p tcp -s 0/0 -d 192.168.0.5 –dport 80 -j ACCEPT
Dodaje chain-u INPUT pravilo da konekcija koja dolazi sa tcp protokola sa bilo koje IP adrese upućene ka 192.168.0.5 IP adresi na portu 80 bude dozvoljena.
dport i sport:
U primerima nisam nvodio jer je to malo detaljnije podešavanje, međutim moguće je da naletite nanjih. Razlika između njihe je:
dport = destination port > port na kojem se pojavila konekcija
sport = source port > port sa koga je poslata konekcija
Ako vam trebaju detaljnija podešavanja možete ih lako naći na internetu, pošto je iptables jedan od popularnijih firewall-ova. Obratite pažnju na to dali se radi o dozvoli ili zabrani jer komandu morate prilagoditi vašim prethodnim podešavanjaima.
Ako smatrate da sam izostavio neko bitno pravilo, pišite u komentar 🙂