Vodnik za začetnike za iptables, požarni zid Linux
Iptables je izjemno prilagodljiv požarni zid, ki je zgrajen za operacijske sisteme Linux. Ali ste novice Linux geek ali sistemski skrbnik, tam je verjetno nekako, da iptables lahko zelo koristno za vas. Preberite o tem, kako vam predstavljamo, kako konfigurirati najbolj vsestranski požarni zid Linuxa.
Foto: ezioman.
O iptables
iptables je orodje za požarni zid ukazne vrstice, ki uporablja verige politik za dovoljevanje ali blokiranje prometa. Ko se povezava poskuša vzpostaviti v sistemu, iptables išče pravilo na svojem seznamu, s katerim se ujema z njim. Če je ne najde, uporabi privzeto dejanje.
iptables skoraj vedno pride vnaprej nameščen na vsaki distribuciji Linuxa. Če ga želite posodobiti / namestiti, samo poiščite paket iptables:
sudo apt-get install iptables
Obstajajo GUI alternative iptables kot Firestarter, vendar iptables ni res tako težko, ko imate nekaj ukazov navzdol. Želite biti zelo previdni pri konfiguriranju pravil iptables, še posebej, če ste SSH-jev v strežnik, ker vas lahko en napačen ukaz trajno zaklene, dokler se ne ročno popravi na fizičnem računalniku..
Vrste verig
iptables uporablja tri različne verige: input, forward in output.
Vhod - Ta veriga se uporablja za nadzor obnašanja za dohodne povezave. Na primer, če uporabnik poskuša SSH v vaš PC / strežnik, bo iptables poskušal ujemati IP naslov in vrata s pravilom v vhodni verigi.
Naprej - Ta veriga se uporablja za dohodne povezave, ki se dejansko ne izvajajo lokalno. Pomislite na usmerjevalnik - podatki se vedno pošiljajo nanjo, le redko pa so namenjeni samo usmerjevalniku; podatki so samo posredovani svojemu cilju. Če ne uporabljate neke vrste usmerjanja, NAT-a ali kaj drugega v sistemu, ki zahteva posredovanje, te verige ne boste uporabili niti.
Obstaja en zanesljiv način preverjanja, ali vaš sistem uporablja / potrebuje verigo naprej.
iptables -L -v
Zgornji posnetek zaslona je strežnik, ki deluje nekaj tednov in nima omejitev za dohodne ali odhodne povezave. Kot lahko vidite, je vhodna veriga obdelala 11 GB paketov, izhodna veriga pa je obdelala 17 GB. Prednapetostna veriga pa ni potrebna za obdelavo posameznega paketa. To je zato, ker strežnik ne izvaja nobene vrste posredovanja ali se uporablja kot prehodna naprava.
Izhod - Ta veriga se uporablja za odhodne povezave. Na primer, če poskusite ping howtogeek.com, iptables bo preveril svojo izhodno verigo, da bi videl, kakšna so pravila glede pinga in howtogeek.com, preden se je odločil, da dovoli ali zavrne poskus povezave..
Opozorilo
Čeprav se zdi, da je pinganje zunanjega gostitelja nekaj, kar bi moralo samo prečkati izhodno verigo, ne pozabite, da bo za vrnitev podatkov uporabljena tudi vhodna veriga. Ko uporabljate iptables za zaklepanje vašega sistema, ne pozabite, da bo veliko protokolov zahtevalo dvosmerno komunikacijo, zato je treba vhodne in izhodne verige pravilno konfigurirati. SSH je skupni protokol, ki ga ljudje pozabijo dovoliti na obeh verigah.
Privzeto vedenje verige pravilnikov
Preden se lotite in konfigurirate določena pravila, se boste odločili, kaj naj bo privzeto obnašanje treh verig. Z drugimi besedami, kaj želite storiti iptables, če se povezava ne ujema z obstoječimi pravili?
Če želite videti, kaj so vaše verige pravilnikov trenutno konfigurirane z neusklajenim prometom, zaženite iptables -L
ukaz.
Kot lahko vidite, smo uporabili tudi ukaz grep, da smo dobili čistejši izhod. V tem screenshotu so naše verige trenutno prisiljene sprejeti promet.
Večkrat, kot ne, boste želeli, da bo sistem privzeto sprejel povezave. Če ste prej spremenili pravila verige pravilnikov, bi morala biti ta nastavitev že konfigurirana. Kakorkoli, tukaj je ukaz za sprejem privzetih povezav:
iptables --policy INPUT ACCEPT
iptables --politi OUTPUT ACCEPT
iptables --politika NAPREJ PRIHODI
Če privzeto izberete pravilo sprejema, lahko z iptables zavrnete določene naslove IP ali številke vrat, medtem ko še vedno sprejemate vse druge povezave. Do teh ukazov bomo prišli čez minuto.
Če želite zavrniti vse povezave in ročno določiti tiste, ki jih želite dovoliti za povezavo, morate spremeniti privzeto politiko vaših verig, da jo spustite. To bi bilo verjetno koristno samo za strežnike, ki vsebujejo občutljive informacije in imajo samo enake naslove IP, ki se povezujejo z njimi.
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP
Odzivi, povezani s povezavo
S konfiguriranjem privzetih verižnih pravil lahko začnete dodajati pravila v iptables, tako da ve, kaj storiti, ko naleti na povezavo z določenega naslova IP ali vrat. V tem priročniku bomo pregledali tri najbolj osnovne in najpogosteje uporabljene »odgovore«.
Sprejmi - Dovoli povezavo.
Spusti - Spusti povezavo, delaj, kot se nikoli ni zgodilo. To je najbolje, če ne želite, da bi vir uresničil vaš sistem.
Zavrni - Ne dovoli povezave, vendar vrni napako. To je najbolje, če ne želite, da se določen vir poveže z vašim sistemom, vendar želite, da vedo, da jih je blokiral požarni zid.
Najboljši način, da prikažete razliko med temi tremi pravili, je, da pokažete, kako izgleda, ko računalnik poskuša pingati stroj z Linuxom, konfiguriran za iptables za vsako od teh nastavitev..
Omogočanje povezave:
Izklop povezave:
Zavrnitev povezave:
Dovoljenje ali Blokiranje določenih povezav
S konfiguriranimi vejami pravil lahko konfigurirate iptables tako, da dovoljuje ali blokira določene naslove, obsege naslovov in vrata. V teh primerih bomo nastavili povezave na DROP
, vendar jih lahko spremenite ACCEPT
ali ZAVRNITE
, odvisno od vaših potreb in kako ste konfigurirali svoje verige pravilnikov.
Opomba: V teh primerih bomo uporabili iptables -A
pravila za obstoječo verigo. iptables se zažene na vrhu seznama in gre skozi vsako pravilo, dokler ne najde tistega, ki ga ujema. Če morate vstaviti pravilo nad drugo, ga lahko uporabite iptables -I [veriga] [številka]
, da določite številko, ki naj bo na seznamu.
Povezave z enega naslova IP
Ta primer prikazuje, kako blokirati vse povezave z naslova IP 10.10.10.10.
iptables -A INPUT -s 10.10.10.10 -j DROP
Povezave iz niza naslovov IP
Ta primer prikazuje, kako blokirati vse naslove IP v območju omrežja 10.10.10.0/24. Za določitev obsega naslovov IP lahko uporabite mrežno masko ali standardno poševnico.
iptables -A INPUT -s 10.10.10.0/24 -j DROP
ali
iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
Povezave z določenimi vrati
Ta primer prikazuje blokiranje SSH povezav od 10.10.10.10.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
»Ssh« lahko zamenjate s katerimkoli protokolom ali številko vrat. The -p tcp
del kode pove iptables, kakšno vrsto povezave uporablja protokol. Če ste blokirali protokol, ki uporablja UDP namesto TCP, potem -p udp
namesto tega bi bilo potrebno.
Ta primer prikazuje, kako blokirati SSH povezave iz katerega koli IP naslova.
iptables -A INPUT -p tcp --dport ssh -j DROP
Stanja povezave
Kot smo že omenili, bo veliko protokolov zahtevalo dvosmerno komunikacijo. Če želite na primer dovoliti SSH povezave z vašim sistemom, bodo vhodne in izhodne verige potrebovali pravilo, ki jim bo dodano. Kaj pa, če želite, da je v vaš sistem dovoljen samo SSH? Ne bo dodal pravila v izhodno verigo, prav tako bo omogočal odhodne SSH poskuse?
To je, če pridejo stanja povezav, ki vam omogočajo, da boste morali omogočiti dvosmerno komunikacijo, vendar dovoliti vzpostavitev enosmernih povezav. Oglejte si ta primer, kjer so dovoljene SSH povezave od 10.10.10.10, vendar SSH povezave do 10.10.10.10 niso. Vendar pa je sistemu dovoljeno, da pošlje nazaj podatke preko SSH, dokler je seja že vzpostavljena, kar omogoča komunikacijo SSH med tema dvema gostiteljoma..
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m stanje - stanje NOVO, USTANOVLJENO -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m stanje - stanje ESTABLISHED -j ACCEPT
Shranjevanje sprememb
Spremembe, ki jih naredite v pravilih za iptables, bodo naslednjič, ko se storitev iptables ponovno zažene, razveljaviti, razen če izvedete ukaz za shranjevanje sprememb. Ta ukaz se lahko razlikuje glede na vašo distribucijo:
Ubuntu:
sudo / sbin / iptables-save
Red Hat / CentOS:
/ sbin / storitev iptables shranite
Or
/etc/init.d/iptables shranite
Drugi ukazi
Navedite trenutno konfigurirana pravila iptables:
iptables -L
Dodajanje -v
vam bo dala informacije o paketih in bajtih ter dodali -n
bo vse naštelo številčno. Z drugimi besedami - imena gostiteljev, protokoli in omrežja so navedeni kot številke.
Za brisanje vseh trenutno konfiguriranih pravil lahko izdate ukaz flush.
iptables -F