Iptables: Difference between revisions
Line 122: | Line 122: | ||
'''-i''' (in-interface) Liides, mille kaudu pakett saabus | '''-i''' (in-interface) Liides, mille kaudu pakett saabus | ||
'''-o''' (out-interface) Liides, mille kaudu pakett on määratud välja minema | '''-o''' (out-interface) Liides, mille kaudu pakett on määratud välja minema | ||
'''-j''' (jump) Määrab ära ahela või reegli millele antud kohast edasi "hüpatakse". Samuti on võimalik määrata ühte fikseeritud väärtustest, mis otsustab paketi saatuse koheselt. Parameetriga -j on võimalik esile kutsuda ka filtreerimise lisamooduleid väga täpsete võrdlustasemete loomiseks. Kui reegel, millele hüpati ei sobi paketiga antakse kontroll tagasi sellesse ahelasse, kust reegel välja kutsuti. | '''-j''' (jump) <p>Määrab ära ahela või reegli millele antud kohast edasi "hüpatakse". Samuti on võimalik määrata ühte fikseeritud väärtustest, mis otsustab paketi saatuse koheselt. Parameetriga -j on võimalik esile kutsuda ka filtreerimise lisamooduleid väga täpsete võrdlustasemete loomiseks. Kui reegel, millele hüpati ei sobi paketiga antakse kontroll tagasi sellesse ahelasse, kust reegel välja kutsuti.</p> | ||
'''-g''' (goto) Erineb-j</code> parameetrist selle poolest, et pärast kutsumist jätkab reeglite läbimist selles ahelas mis välja kutsuti. | '''-g''' (goto) Erineb-j</code> parameetrist selle poolest, et pärast kutsumist jätkab reeglite läbimist selles ahelas mis välja kutsuti. | ||
Revision as of 08:46, 19 December 2011
Koostanud: Mikk Käosaar A41, Detsember 2011
Sissejuhatus
Käesolev artikli eesmärgiks on tutvustada tulemüüri rakendust iptables, selle ülesehitust ning peamisi toimimise mehhanisme. Lisaks on välja toodud olulisemad aspektid rakenduse kasutamise eesmärkidest, paigaldamisest, konfigureerimisest ja haldamisest. Artikkel on mõeldud abimaterjalina ja tutvustusena linuxi alaste baasteadmistega kasutajatele.
Eeldused
Artikli koostamisel on näidete testimiseks kasutatud Ubuntu Serverit: Release 11.04, Kernel Linux 2.6.38-12-generic. Näited eeldavad standardset linuxi installatsiooni. Modifitseeritud süsteemidest ja teistest linuxi distributsioonidest tulenevad erisused tuleb lahendada juhendi kasutajal iseseisvalt. Näited võivad kuid ei pruugi toimida linuxi kernelitel alates versioonist 2.4, mis toetavad Netfilter'i mooduleid, ning distributsioonidega mis toetavad rakendust iptables. Käskude sisestamisel on vajalikud juurkasutaja (root) õigused. Juhendi kasutaja peab omama vajalike eelteadmisi ethernet võrkudest ning baasteadmisi linuxi käsurea kasutamisest.
Mis on Iptables?
Iptables on linuxi tarkvararakendus, mis võimaldab kasutajatel ja süsteemiadministraatoritel seadistada ning hallata tulemüüri mingis konkreetses linuxi süsteemis. Iptables'i peamiseks eesmärgiks on tagada andmeside ning arvutisüsteemide turvalisus erinevatel linuxi kernelit kasutavatel seadmetel. Iptables'i peamised kasutusalad on võrguliikluse filtreerimine vastavalt kasutaja või süsteemiadministraatori poolt määratud reeglitele ning tihti Network Address Translation (NAT) teostamine. Iptables võimaldab kasutajatel luua tabeleid mis sissaldavad n.ö kontrollahelaid ehk reeglite jadasid mille alusel reguleeritakse võrgupakettide liikumist võrguliidestel ja pakettide üldist ligipääsu süsteemile. Erinevate protokollide jaoks on kasutusel erinevad kerneli moodulid ning Iptables versioonid. Käesolev juhend keskendub programmile Iptables mis keskendub põhiliselt IPv4 protokollile. Iptables kasutab oma töös kerneli moodulit nimega ip_tables. Lisaks eelnimetatule olemas moodulid ka IPv6 ja ARP protkollidele ning ethernet raamidele. Üldjoontes on Iptables'i näol tegemist pigem konfiguratsiooni tööriistaga või kerneli tulemüürimooduli Netfilter'i kasutajaliidesega, kui eraldiseisva tulemüürirakendusega.
Iptables algus
Iptables'i arendus sai alguse paralleelselt Netfilter raamistikuga 1998 aastal. Kasutajateni jõudisis Iptables'i esimene versioon koos linuxi kerneli versiooniga 2.4 aastal 2001. Iptablesi eelkäijateks loetakse rakendusi ipchains ja ipfwadm, millest viimane põhineb omakorda BSD ipfw rakendusel. Vaatamata kestvale arendusprotsessile, pole aja jooksul toimunud suuremaid versiooni muudatusi ning artikli kirjutamise hetkeks on viimane ametlikult väljastatud versioon 1.4.12.1. Aastal 2009 alustati tööd ka Iptables'i järglaseks tituleeritud "nftables" projektiga. Sellest pidi kujunema asendustööriist Iptablesile ning oli mõeldud ühendama praegu eraldiseisvaid protokollide haldusvahendeid. Käesoleval hetkel on antud projektist väljastatud vaid alfaversioon ning aktiivne arendusprotsess on peatunud.
Ülesehitus ja tööpõhimõte
Märkus: Selguse huvides on järgnevat käsitletud ühe linux-süsteemi piires.
Netfilter
Nagu enamik võrguliikluse filtreerimisega seotud rakendusi, põhineb Iptablesi töö andmeside pakettide analüüsil. Iga süsteemi läbiv pakett viiakse läbi kontrollahela(te), mille alusel määratakse paketi edasine saatus vaadeldavas süsteemis. Iptables'i funktsionaalsus põhineb linuxi kernelis paikneval Netfilter'i raamistikul, mis võimaldab võrguliikluse jälgimist ja manipuleerimist. Seetõttu on oluline lisaks Iptablesile tutvustada pisut ka Netfilter'i tööpõhimõtteid.
Netfilter jaotab oma funktsionaalsuse mitmesse ossa. Kasutajataseme programmid, nagu Iptables, saavutavad oma vajaliku funktsionaalsuse pöördudes Netfilter'i erinevate moodulite (osade) poole. Iga moodul tagab erineva funktsionaalsuse ning on teiste moodulite suhtes kindlalt järjestatud, s.t iga mooduli poole pöördumine toimub kindlas järjekorras. Netfilteri mooduleid võib käsitleda ka kui tabeleid mis koosnevad reeglite jadadest. Nagu eelpool mainitud nimetatakse selliseid reeglite jadasid ka ahelateks. Seega iga tabel (moodul) võib koosneda paljudest käskudest mis moodustavad ahela. Selliste ahelate ülesanneteks ongi harilikult võrguliikluse filtreerimine ning pakettide haldamine, seal hulgas ka näiteks NAT'i võimaldamine.
Ahelaid liigitatakse ning nimetatakse üldjuhul filtreeritavate pakettide päritolu järgi. Näiteks välisvõrgust saabuv pakett satuks "INPUT" ahelasse ning välisvõrku suunatud pakett peab läbima "OUTPUT" ahela. Üheks olulisemaks uuenduseks võrreldes oma eelkäijatega ipcahins ja ipfwadm on Netfilter'il võimekus jälgida ja hallata ühenduste olekut (connection tracking). See võimaldab Netfilteril jaotada pakette erinevate, ühenduse, olekute alusel. Viimase abil omakorda on aga võimalik iga pakett suunata koheselt õigesse filtreerimis või NAT ahelasse. Erinevad olekud võivad olla järgnevad
- NEW: tehakse algust uue ühenduse loomisega
- ESTABLISHED: analüüsitav pakett kuulub mõne juba eksisteeriva ühenduse juurde
- RELATED: viitab oodatud, ennustatud käitumisele - näiteks analüüsitav pakett on osa uue ühenduse alustamisest ja seetõttu selle saabumine "ette aimatav". Teine võimalus on näiteks juba olemas oleva ühendusega seotud ühenduse loomine. Teisit öeldes - mingi, juba ühendust omav programm algatab paralleelselt eksisteeriva ühendusega uue ühenduse, mis on seostatud vanaga. Näiteks FTP parooli sisestamisel algatatakse FTP kliendi poolt mitu erinevat ühendust, mis on omavahel seotud, kuna kuuluvad kõik samale FTP rakendusele.
- INVALID: viitab paketile, mille päritolu ei suudeta tuvastada ehk mis ei kuulu ühegi olemasoleva ühendusse alla ega alusta uut ühendust.
- UNTRACKED: eriolek, administraatorile kes soovib mingi paketi ignoreermist ühenduse kontrollimisel
Iptables
Tulenevalt Netfilteri ülesehitusest põhineb ka Iptablesi töö erinevate käsuahelate ja tabelite haldamisel. Iptablesi puhul koosnevad tabelid reeglitest ning otsustest. Iga tabel kirjeldab milliseid tunnuseid pakettides otsida ning kui võrre on tuvastatud, siis millist tegevust antud paketi puhul rakendada. Paketi võrdlemise käigus käiakse tabel ja selles sisalduv ahel läbi käskhaaval. Oluline on teada, et käske läbitakse järjekorras seni kuni leitakse esimene vaste. See tähendab, et pärast esmase vaste leidmist ahelat enam edasi ei uurita. Seega kui ahelas on mitu sarnase võrdlustunnusega kuid erineva otsusega reeglit, sooritatakse filtreerimine vastavalt selle reegli alusel, mis oli ahelas eespool. Näiteks kujutame ette olukorda kui süsteemiadministraator soovib lubada kõiki TCP pakette mis saabuvad INPUT ahelasse pordilt 80 ning samas ahelas keelata pordile 80 saabuvad TCP paketid, mis on suunatud porti 8000. Antud juhul lubatakse siiski kõigi TCP pakettide liiklus kuna üldisem reegel, mis kattus paketi andmetega, eelnes spetsiifilisemale reeglile. Sellisest käitumisest pääsemiseks peab asetama üldisemad reeglid ahela lõpu poole ning rohkem täpsemad reeglid asetama ahela algusesse. Sel viisil uuritakse täpsemalt kirjeldatud reegleid varem ning alles siis, kui ükski varasematest reeglitest pole vajaliku vastet paketile toonud, rakendatakse üldisemalt piiritletud reegleid. Alati on võimalik, et ükski ahela reeglitest ei taga täieliku või sobivat vastet paketile. Sel puhul on võimalik määrata ka ahela üldotsus, mida rakendatakse alles tingimusel kui ükski reegel terves ahelas pole võrreldava tunnusega vastet taganud.
Lisaks harilikele otsustele on võimalik kasutada ka ahela suunamist ehk "goto" funktsiooni. Viimase abil on võimalik teatava üldisema mustri avastamisel suunata pakett ühest ahelast teise, et uues ahelas kontrolli jätkata. Sellist hierarhiat võib luua täpselt nii sügavaks kui peaks vajalikuks osutuma. Kui pakett jõuab suunatud ahela lõppu, kuid pole selles ühtegi vastet tuvastanud suunatakse see automaatselt tagasi n.ö "vanem-ahelasse" ehk sinna kust konkreetne ahel välja kutsuti. Vanemahelasse saab tagasi pöörduda ka kasutades käsku "RETURN" märkides selle mõne sobiva reegli otsuseks. Sarnane ülesehitus kehtib ka NATi kasutamise puhul. Üldjuhul koosneb Iptables vähemalt ühest tabelist nimega "Filter", mis sisaldab endas algseades kolme põhilist filtreerimise ahelat: INPUT, OUTPUT ja FORWARD. Igaühel neist ahelatest on eelnevalt määratud ka vaikimisi otsus juhuks kui antud ahelas peaksid kasutaja poolt defineeritud reeglid puuduma. Vaikimisi on Iptables'is defineeritud 5 alljärgnevat ahelatüüpi
- PREROUTING: Paketid läbivad selle ahela enne filtreerimistabelite poole pöördumist. Antud ahelat on võimalik kasutatada näiteks NATi rakendamiseks enne filtreerimist või teiste oluliste muudatuse tegemiseks enne paketi suunamist läbi filtreerimisahelasse.
- INPUT: Paketid selles ahelas on saabunud välisvõrgust ning ahela läbimisel saavad kas ligipääsu kaitstavale (tulemüüritavale) süsteemile või visatakse minema.
- FORWARD: Ükski pakett selles ahelas pole mõeldud kaitstavasse süsteemi. Kõik paketid FORWARD ahelas kuuluvad edastamisele vastavalt ahelates defineeritud reeglitele.
- OUTPUT: Ahelat läbivad paketid mis pärinevad kaitstavast süsteemist ja on suunatud välisvõrku.
- POSTROUTING: Sarnane PREROUTING ahelale. Kasutatakse erinevateks NAT toiminguteks ning pakettide töötlemiseks enne riistvarale üle andmist.
Lisaks neile kirjeldatud ahelatele võib süsteemi administraator luua just nii palju ahelaid kui parasjagu tarvis. Iga Iptablesi tabel võib koosneda ühest või mitmest ahelast ning iga ahel võib asuda omaette tabelis. Iptables võimaldab kasutada nelja Netfilter'i poolt eeldefineeritud tabelit
- FILTER: Sisaldab peamisi pakettide filtreerimise reegleid ning ahelaid. Võib olla rohkem kui üks.
- NAT: Sisaldab PRE- ja POSTROUTING ning OUTPUT ahelaid. Kasutatakse NATi realiseerimiseks.
- MANGLE: Kasutatakse spetsiifiliste (vahel ajutiste) reeglite kogumiseks. Kutsutakse välja enne või pärast filtreerimistoiminguid.
- RAW: Kui vastav moodul on Netfilter'is lubatud siis kutsutakse see välja enne kõiki teisi tabeleid. Sisaldab PREROUTING ja OUTPUT ahelaid. Võimaldab filtreerida pakette enne kui need edasi mälunõudlikemasse osadesse suunatakse. (Tõenäoline kasutusjuht võiks olla süsteemi välise ründe korral, kus esineb vajadus kiirelt suur hulk pakette kõrvale visata enne kui need pääsevad süsteemi mälu koormama)
Sarnaselt ahelatele võib administraator luua ka enda defineeritud tabeleid. Iptables filtreerimise mehhanism on üles ehitatud selliselt, et iga pakett peaks läbima ainult 1he talle kehtiva filtreerimisahela. Samas, iga pakett peab läbima vähemalt ühe ahela. Konkreetne ahel määratakse peamiselt eelpool mainitud paketi päritolu alusel. Samuti on tänu Netfilterile võimalik pakette filtreerida ka ühenduse olekute alusel ning töödelda neid enne konkreetsemasse ahelasse suunamist. Need omadused vähendavad märgatavalt reeglite läbitöötamiseks vajaliku aega ja protsessori töö mahtu.
Iptables paigaldamine
Iptables on leitav enamike levinud distributsioonide pakivaramutest ning Netfilter'i koduleheküljelt. Nagu alguses viidatud siis kõik käsud tuleb läbi viia root õigustes.
Enne kui installeerimise juurde asuda on soovituslik kontrollida, kas ja milline Iptables versioon on hetkel paigaldatud. Seejärel tuleb see vajadusel kas uuendada või installeerida. Antud tegevusi saab läbi viia käskudega:
-Kontrollimiseks
apt-cache policy iptables
-Uuendamiseks
apt-get update && apt-get upgrade
-Paigaldamiseks
apt-get install iptables
Viimane käsk paigaldab Iptablesi vaikimisi kataloogi, milleks on /usr/sbin/iptables
või mõningates süsteemides ka /sbin/iptables
.
Selleks, et näha esialgset vaikimisi konfiguratsiooni tuleb kasutada käsku
iptables -L
Teine võimalus konfiguratsiooni nägemiseks on koheselt salvestada ka konfiguratsioonifail. Vaikimisi paigladamisel konfiguratsiooni faili ei tekitata, vaid kasutatakse Netfilter'i kerneli mooduli "filter" tabelit 3 tühja ahelaga. Konfiguratsiooni faili salvesatamiseks tuleb kasutada käsku iptables-save
ning väljastada tulemus oma vabalt valitud faili. Üldise selguse mõttes on soovitatav kasutada /etc/ kataloogi. Näites on loodud ja kasutatud kataloogi /etc/iptables
ning faili nimeks määratud iptables.conf
iptables-save > /etc/iptables/iptables.conf
Loodud faili võib uurida ning muuta vabalt valitud tekstiredaktoriga.
Iptables seadistgamine
Parameetrid
Uurides eelmises punktis loodud konfiguratsioonifaili on näha, et vaikimisi on kõik ühendused lubatud. Sellisel kujul pole Iptables'ist otsest kasu. Selleks, et luua tabelisse esimesed pakette filtreerivad reeglid tuleb eelnevalt tunda mõningaid olulisemaid iptables'i parameetreid ja konfigureerimise käsu ülesehitust. Iptables’i reeglite määramiseks kasutatakse käsku iptables. Järgnevalt on toodud näide esimese reegli lisamisest loodud konfiguratsioonifaili. iptables -I INPUT -i eth0 -j ACCEPT -v Antud käsk lisab input ahelasse kirje mis lubab kõik ühendused liidesel eth0. Siit on näha aga peamised iptables konfiguratsioonilause elemendid: tegevus tabeliga, ahela nimetus(milles reegel asub), reegli elemendid, otsus ning lisaparameetrid.
- Tabeliga tegevused – parameetrid, mis määravad millist tegevust tuleb minigi konkreetse käsu puhul sooritada. Järgnevalt on toodud välja põhilised tegevused.
-A (append) Lisa uus reegel määratud ahela lõppu. -D (delete) Kustuta määratud reegel. Reegli saab määrata nii rea numbriga antud ahelas või reegli kuju (reeglis määratud parameetrite) järgi. Samuti on võimalik kasutada mõlemat määramisviisi korraga. -N (new) Loo uus ahel -I (insert) Lisa uus reegel määratud ahela algusesse või konkreetsele reale, andes ette vastava rea numbri. -R (replace) Muuda olemasolevat reeglit, määrates ära muudetava reegli reanumbri. -L (list) Näitab olemasolevate reeglite nimekirja määratud tabelis või ahelas -S (list) Näitab olemasolevaid reegleid määratud tabelis, ahelas või kõigis tabeleis, ahelais. (Sarnane -L parameetrile, veidi lakoonilisem, näitab ainult reegleid) -F (flush) Kustuta reeglid määratud ahelas või kõigis ahelais -X (delete-chain) Kustuta loodud ahelaid -P (policy) Määrab ära kogu ahela üldise otsuse, mis täidetakse, kui ükski reegel ahelas ei ole paketile vastet toonud
- Ahela nimetus
Võib olla milline tahes kasutaja enda loodud ahelatest, tabelitest või üks 4st süsteemsest tabelist (filter, nat, mangle, raw)
- Reegli elemendid ja otsus
Koosneb filtreerimise või suunamise otsusest ning erinevatest reegli parameetritest. Reegli põhilisemad parameetrid on: -p (protocol) Määrab, millise protokolli alusel pakette filtreeritakse -s (source) Määrab paketi päritolu aadressi -d (destination) Määrab paketi sihtpunkti aadressi. -i (in-interface) Liides, mille kaudu pakett saabus -o (out-interface) Liides, mille kaudu pakett on määratud välja minema
-j (jump)
Määrab ära ahela või reegli millele antud kohast edasi "hüpatakse". Samuti on võimalik määrata ühte fikseeritud väärtustest, mis otsustab paketi saatuse koheselt. Parameetriga -j on võimalik esile kutsuda ka filtreerimise lisamooduleid väga täpsete võrdlustasemete loomiseks. Kui reegel, millele hüpati ei sobi paketiga antakse kontroll tagasi sellesse ahelasse, kust reegel välja kutsuti.
-g (goto) Erineb-j parameetrist selle poolest, et pärast kutsumist jätkab reeglite läbimist selles ahelas mis välja kutsuti.
Otususteks võib olla ükskõik milline etteantud väärtustest
ACCEPT - Lubab paketi läbi DROP - Ei luba paketti, "viskab" selle minema QUEUE - Suunab paketti "töötluse järjekorda" teistele rakendustele edastamiseks. Uus ahel - Reegli otsuseks võib olla uude ahelasse suunamine, mis muutab vastava ahela vanem-ahelaks suunatavale ahelale. RETURN - Lõpetab ahela (milles vastav reegel asub) läbi vaatamise ning jätkab kontrolli vanem-ahelas (selles kust käesolev ahel välja kutsuti). Kui vanem-ahel puudub, siis otsustab paketi saatuse ahela "policy".
- Lisaparameetrid
Kasutatakse käsu iptables täiendava funktsionaalsuse esile kutsumiseks. -v (verbose) - väljastab detailset infot töödeldava reegli kohta. Kui -v parameeter on lisatud reegli loomise, muutmise, asendamise või kustutamise käsule, väljastatakse ekraanile kogu käsust tulenev info. -numeric - Iptables proovib vaikimisi lahendada kõik aadressid nimedeks. -numeric näitab aadresse numbrilisel kujul, ega ürita neid siduda hostname'idega. --line-numbers - näitab reeglite reanumbreid, näiteks kasutades käsku iptables -L --line-numbers
Konfigureerimine
Nüüd olles tutvunud käsu iptables ülesehituse ning olulisemate parameetritega, saame luua esimesed põhilisemad filtreerimise reeglid. Nagu eelnevalt märgitud, siis vaikimisi ei rakenda iptables pakettide liikumisele olulisi piiranguid. Ükski ahel ei sisalda reegleid ning kõigi ahelate policy on vaikimisi seatud läbi laskma kogu liiklust ehk otsusega ACCEPT. Järgnevalt viime ahelatesse sisse mõned muudatused mis muudavad tulemüüri käitumise rohkem kontrollitumaks. Allolevate näidete ulatuses muudame kõigi kolme olemasoleva ahela vaikimisi otuse (policy) vastupudiseks ehk asendisse DROP ning lisame INPUT ja OUTPUT ahelatesse mõned reeglid veebiliikluse ning pingimise (ICMP protokolli) lubamiseks. Antud ahelatesse on hea praktika lisada reegleid paari kaupa - s.t reegeli peaks looma nii sisse tulevate kui väljaminevate pakettide jaoks. See ei ole kindlasti kohustuslik praktika ning sõltub täiesti soovitavast tulemusest, kuid aitab täpsemalt hallat või jälgida (näiteks logida) pakettide liikumist. Selleks, et muuta tulemüür effektiivseks ja turvaliseks tuleb see seadistada küllalt detailselt. Nii on iga reegli lisamisel oluline jägida, et pakettidele seatakse täpselt sellised piirangud mis tagavad süsteemi toimimise, kuid ei võimalda liigset ligipääsu. Enne kui hakata midagi aga muutma on hea mõte salvestada konfiguratsioonifail. See märkus ei kehti neile kes seda varasema sammu juures juba tegid. Kasulik on salvestada fail(i) iga kord kui on sisse viidud kontrollitud ning töötav muudatus. Nii saab hõlpsasti töötava oleku taastada, kui selleks peaks vajadus tekkima. Seega:
iptables-save > /etc/iptables/iptables.conf
Taastada konfiguratsioonist saab käsuga
iptables-restore < /etc/iptables/iptables.conf
Esimese sammuna on küllalt mõistlik lubada liiklus loopback liidesel (üldjuhul lo), kuna see on vajalik mitmete rakenduste tööks. Moodustame vajaliku käsu ning lubame loopback'i liikluse:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Esimene käskudest lubab kõikide pakettide liikluse sissepoole liidsel lo. Teine lubab sama väljapoole. Tulenevalt lo iseärasustest, siis reaalselt ükski pakett veel süsteemist ei lahku.
Pingimine võimaldab kontrollida seadme ühenduvust välisvõrguga. Selleks on vajalik ICMP protokolli liiklus, mille avame käskudega:
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
Antud käsud annavad võimaluse välja saata ICMP protokolli OUTPUT ahelas ning saada vastuse INPUT ahelas. Seega võimaldavad need käsud nüüdsest pingida teisi võrgus asuvaid seadmeid. Oluline on siikohal märkida, et pingida saab hetkel ainult ip aadresside alusel, kuna hetkel pole lubatud veel nimelahenduse jaoks vajalik UDP protokoll.
Kuna ka välismaailm tahab seadme olemasolust tõenäoliselt aimu saada on tihti vajalik ka vastupidise pingimise lubamine, ehk väljastpoolt saabuvate päringute lubamine:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
Nende käskude täitmisel on võimalik ka konfigureeritavat seadet väljaspoolt pingida. Sarnaselt eelpool mainitule, saab ka siin pingida vaid ip aadressi. Eelnenud käskudes olid mõningad parameetrid, millest antud artiklis lähemalt juttu ei tule. Nende kohta saab täpsemalt lugeda lõpus välja toodud viidete alt.
Olles esmaste muudatustega ühele poole saanud, tuleb iptables nüüd seadistada lubama http veebiliiklust. Selleks on vajalik lubada TCP protokolli liiklus pordil 80.
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
Muutes pordi numbrit on võimalik sama kiiresti lubada ka turvaline https ühendus
iptables -A INPUT -p tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
Siiski ei tööta turvaline ühendus enne, kui on lubatud DNS. Seega viimase sammuna oleks äärmiselt asjakohane lisada õigused ka UDP protokolli jaoks, mis võimaldab puuduoleva DNS nimelahenduse.
iptables -A INPUT -p udp -j ACCEPT
iptables -A OUTPUT -p udp -j ACCEPT
Viimaste käskudega on iptablesis olemas esmased põhilised reeglid (filtrid), mis võimaldavad võrgupakettide liikluse olulist piiramist, kuid ka sobivate pakettide lubamist. Juhul kui mingil hetkel peaks tekkima vajadus mõnda olemas olevat reeglit muuta või täiendada saab seda teha kasutades iptables parameetrid -R
iptables -R INPUT 4 -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
Antud käsk muudab INPUT ahelas real 4 asuvad reeglit ning täiendab seda lisades paketi lubamise vajalikuks vasteks ühenduse oleku tunnused NEW ja ESTABLISHED.
Sarnaselt reegli muutmisele võib vajalikuks osutuda ka reegli kustutamine. Lihtsaim viis selle saavutamiseks on kasutades rea numbrit.
iptables -D INPUT 5
Käsu täitmisel kustutatakse INPUT ahelast real 5 asetsev UDP protokolli lubav käsk. Selle käsu testimisel peab vatava reegli taastama iseseisvalt.
Pikemate ahelate puhul saab rea numbri teada käsuga:
iptables -L --line-numbers
Nüüd oleks paras hetk läbi viia ka uus iptables-save korraldus, salvestamaks tehtud muudatused konfiguratsiooni faili. Tuleb mainida, et antud muudatused kehtivad kuni järgmise alglaadimiseni, mille korral tuleb need taastada iptables-restore käsuga eelnevalt loodud konfiguratsiooni failist. Selleks, et fail laetaks mällu iga kord automaatselt tuleb lisada kirje /etc/network/interfaces faili. Kasutades suvalist tekstiredaktorit, tuleb faili lõppu lisada rida:
pre-up iptables-restore < /etc/iptables/iptables.conf
Sisse kantud rida rakendatakse enne kui ükski liides aktiivseks tehakse, mistõttu hakkavad ka filtreerimise reeglid kehtima enne kui paketid liidestel liikumist alustavad. Nii on tagatud kaitse võimalike rünnakute eest, kus muul juhul võidaks filtrite puudumist ära kasutada.
Iptables'i konfiguratsiooni tühistamiseks tuleb kõigi ahelate policy'd seada ACCEPT olekusse ning kasutada kolme järgnevat, eelnevalt loetletud, parameetrit
iptables -F
Tühjendab kõik või määratud ahela(d) olemasolevatest reeglitest.
iptables -Z
Nullib ära kõigi või määratud ahela(te) paketi loendurid.
iptables -X
Võimaldab kustutada kasutaja loodud ahelaid, kuid ainult juhul kui need ei sisalda reegleid. Nime määramata jätmisel üritab kustutada kõiki kasutaja loodud ahelaid.
Siinkohal on esmane konfigureerimine lõppenud. Välja toodud käsud on kindlasti vaid sissejuhatus täpsemasse ning eesmärgipärasesse reeglite loomesse. Toodud käske saab kindlasti täiendada ning lisada erinevaid parameetreid pakettide täpsemaks analüüsiks, nagu näidatud ka reegli muutmise puhul. Konkreetsemaid näiteid ning parameetrite kirjeldused on jällegi leitavad kasutades alltoodud viiteid.
Kokkuvõte Iptables on linuxi tulemüürirakendus, mis võimaldab konfigreerida linuxi kerneli moodulit nimega Netfilter. Tulemüüri konfigureerimine käib tabelite abil, mis koondavad endasse pakettide filtreerimiseks ning suunamiseks vajalikud reeglid. Reeglid on jaotatud ahelatesse. Iga pakett läbib oma teekonnal süsteemi või sellest välja vähemalt ühe ahela. Iptablesi konfigureerimine toimub käsurea abil.
Dokumentatsioon
Iptables on küllalt hästi dokumenteeritud oma manuaalis, mis on leitav nii käsurealt man iptables, kui ka mitmel pool internetis. Lisaks manuaalile tuleb installatsiooniga kaasa ka html kujul kasutusjuhis mis on leitav kataloogis /usr/share/doc/iptables/html
ning veebis aadressil http://netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html#toc7
Kasutatud materjalid
http://en.wikipedia.org/wiki/Iptables - Küllalt detailne ülevaade iptablsesi toimimise mehhanismidest.
http://en.wikipedia.org/wiki/Netfilter - Kaasosa Iptables wiki artiklile. Tutvustab lähemalt Netfilteri ajalugu ja tööpõhimõtteid.
http://linux.die.net/man/8/iptables - Iptables'i manuaal veebis. Sama sisu mis man iptables.
http://www.thegeekstuff.com/2011/06/iptables-rules-examples/ - Olulisemad konfiguratsiooni näited ja parameetrid. Antud artikli näited põhinevad sellel allikal.
http://ubuntuforums.org/showthread.php?t=159661 - Ubuntu foorumid. Ülevaade iptables parameetritest koos näidisreeglitega. Olemas juhised skriptide loomiskes.
http://wiki.itcollege.ee/index.php/Tulem%C3%BC%C3%BCri_labor - EIK IT Infrastruktuuri teenused aine raames vajaliku konfiguratsiooni teostamise juhend.
http://www.thegeekstuff.com/2011/01/iptables-fundamentals/ - Lühitutvustus iptables'ist ja ülesehitusest.
http://office_sep_344747_sep_themes.freecode.com/projects/iptables/releases?page=1 - Iptablesi versioonide ajalugu.