Jinsi iptables inavyofanya kazi. Chini ni amri na vigezo vya matumizi ya iptables. Huduma za wavuti na faili

Kila kompyuta iliyounganishwa kwenye mtandao iko katika hatari inayoweza kutokea. Kuna vitisho vingi kwenye mtandao, kuanzia programu ambazo zitajaribu kupenya mfumo kwa njia yoyote, hadi kwa wadukuzi ambao wanataka kupata ufikiaji wa kompyuta wanayohitaji. Na programu iliyowekwa kwenye kompyuta yako inaweza kuwa na udhaifu usiojulikana na usio sahihi, ambayo inaweza kuwa shimo la usalama.

Ikiwa hii haifai sana kwa kompyuta za nyumbani, kwa kuwa zimeunganishwa kwenye mtandao kwa njia ya routers na NAT, ambazo huwaficha kutoka kwenye mtandao wa nje, basi kwa seva hii ni muhimu zaidi kuliko hapo awali. Katika chumba cha upasuaji Mfumo wa Linux Firewall iptables inayoweza kunyumbulika sana na ya kuaminika imejengwa ndani ya kernel.

Ni kwa msaada wa mpango huu kwamba mfumo unalindwa kutokana na kuingilia nje, uelekezaji wa bandari, na vitendo vingine vingi na trafiki. Lakini upande wake ni kwamba ni vigumu kidogo kuanzisha. Makala hii itaangalia kuanzisha iptables kwa dummies. Natumaini kwamba baada ya hili utaweza kutumia kwa ujasiri uwezo wa msingi wa iptables.

Mfumo mdogo wa iptables na Netfilter umejengwa kwenye kinu cha Linux kwa muda mrefu. Vifurushi vyote vya mtandao vinavyopitia kompyuta, vinatumwa na kompyuta, au vinapangwa kwa kompyuta, vinatumiwa na kernel kupitia chujio cha iptables. Huko, vifurushi hivi vinaweza kuchunguzwa na kisha kwa kila hundi, ikiwa imepitishwa, hatua iliyoelezwa ndani yake inafanywa. Kwa mfano, pakiti hupitishwa kwenye kernel kwa kutuma programu lengo, au kutupwa.

Aina za vifurushi

Pakiti zote zimegawanywa katika aina tatu: zinazoingia, zinazotoka na zinazopita. Zinazoingia ni zile zilizotumwa kwa kompyuta hii, zinazotoka ni zile zinazotumwa kutoka kwa kompyuta hii hadi mtandao. Na pakiti zinazopita ni pakiti ambazo zinahitaji kutumwa zaidi, kwa mfano ikiwa kompyuta yako inafanya kazi kama kipanga njia.

Ipasavyo, katika kichungi cha iptables, pakiti zote zimegawanywa katika minyororo mitatu inayofanana:

  • Ingizo- huchakata pakiti zinazoingia na viunganisho. Kwa mfano, ikiwa mtumiaji yeyote wa nje atajaribu kuunganisha kwenye kompyuta yako kupitia ssh au tovuti yoyote itakutumia maudhui yake kwa ombi la kivinjari. Pakiti hizi zote zitaishia kwenye mnyororo huu;
  • mbele- mlolongo huu hutumiwa kwa viunganisho vya kupitisha. Hii ni pamoja na pakiti ambazo hutumwa kwa kompyuta yako, lakini hazikusudiwa, zinatumwa tu kwenye mtandao hadi kulengwa kwao. Kama nilivyosema tayari, hii inazingatiwa kwenye ruta au, kwa mfano, ikiwa kompyuta yako inasambaza wifi;
  • pato- Mlolongo huu hutumiwa kwa pakiti zinazotoka na viunganisho. Hii inajumuisha pakiti ambazo ziliundwa ulipojaribu kubandika tovuti au unapozindua kivinjari chako na kujaribu kufungua tovuti yoyote.

Lakini ikiwa unafikiri kwamba unaweza tu kufunga mnyororo wa Kuingiza kabisa ili kuongeza usalama, basi umekosea sana. Wakati mtandao unafanya kazi, minyororo ya pembejeo na pato hutumiwa. Kwa mfano, unajaribu kupiga ping, data inatumwa kupitia pato, lakini jibu linakuja kupitia pembejeo. Jambo hilo hilo hufanyika wakati wa kuvinjari tovuti na vitendo vingine. Lakini mnyororo wa mbele unaweza usitumike kabisa ikiwa kompyuta yako si kipanga njia. Kwa hivyo kusanidi iptables lazima kufanywe kwa uangalifu sana.

Sheria na vitendo

Kabla ya kuendelea na kuunda orodha ya sheria za iptables, unahitaji kuzingatia jinsi wanavyofanya kazi na ni nini. Kwa kila aina ya pakiti, unaweza kuweka seti ya sheria ambazo zitaangaliwa kwa zamu kwa kufuata pakiti, na ikiwa pakiti inafanana, basi hatua iliyotajwa katika sheria itatumika kwake. Sheria huunda mnyororo, kwa hivyo pembejeo, pato na mbele huitwa minyororo, minyororo ya sheria. Kunaweza kuwa na vitendo kadhaa:

  • KUBALI- kuruhusu pakiti kupita zaidi pamoja na mlolongo wa sheria;
  • DONDOSHA- kufuta mfuko;
  • KATAA- kukataa mfuko, ujumbe utatumwa kwa mtumaji kwamba mfuko ulikataliwa;
  • LOG- fanya rekodi kuhusu kifurushi kwenye faili ya logi;
  • FOLENI- tuma kifurushi kwa programu ya mtumiaji.

Sheria zinaweza kuangalia mechi yoyote, kwa mfano, na ip, na mpokeaji au mtumaji mlango, vichwa vya pakiti, na mengi zaidi. Ikiwa pakiti hailingani na sheria yoyote, basi hatua ya kawaida hutumiwa kwa hiyo, kwa kawaida KUBALI.

Tunapogundua sheria, tunaweza kurudi kwenye minyororo. Mbali na zile zilizoorodheshwa hapo juu, kuna minyororo miwili ya ziada ya sheria:

  • prerouting- pakiti huingia kwenye mlolongo huu kabla ya kusindika na iptables, mfumo bado haujui wapi itatumwa, kwa pembejeo, pato au mbele;
  • kuahirisha- pakiti zote zinazopita ambazo tayari zimepitisha mlolongo wa mbele nenda hapa.

Lakini si hayo tu. Pia tuna meza za iptables, ambazo tunataka pia kushughulika nazo.

meza za ipatables

Juu ya minyororo ya sheria katika iptables kuna kiwango kingine cha uondoaji, na hizi ni meza. Kuna meza kadhaa kwenye mfumo na zote zina seti ya kawaida pembejeo ya minyororo, mbele na pato. Majedwali yameundwa kutekeleza vitendo mbalimbali kwenye vifurushi, kama vile kurekebisha au kuchuja. Sasa hii sio muhimu sana kwako na itakuwa ya kutosha kujua kwamba uchujaji wa pakiti ya iptables unafanywa kwenye jedwali la chujio. Lakini tutawaangalia wote:

  • mbichi- iliyoundwa kufanya kazi na vifurushi ghafi kabla ya kusindika;
  • manyoya- lengo la marekebisho ya vifurushi;
  • nat- hutoa utendaji wa nat ikiwa unataka kutumia kompyuta yako kama kipanga njia;
  • chujio- meza kuu ya pakiti za kuchuja, zinazotumiwa na default.

Karibu kila kitu na nadharia, sasa hebu tuangalie matumizi mstari wa amri iptables, ambayo hutumiwa kusimamia mfumo wa iptables.

Huduma ya Iptables

Mfumo mdogo wa iptables na netfilter umejengwa ndani ya kernel, lakini seti ya huduma za kudhibiti haya yote hailetwi na mfumo kila wakati. Ili kufunga matumizi kwenye Ubuntu, chapa:

sudo apt kufunga iptables

Na kwa usambazaji wa msingi wa Fedora, kusanikisha iptables hufanywa tofauti kidogo:

sudo yum kusakinisha iptables

Mara tu usakinishaji wa iptables ukamilika, unaweza kuendelea na usanidi, lakini hebu kwanza tuangalie syntax ya matumizi. Kawaida amri ina kitu kama hiki fomu ya jumla:

-t mlolongo wa vitendo wa meza Chaguzi za ziada

Sasa hebu tuangalie vigezo vya iptables, meza inabainisha meza ya kufanya kazi nayo, parameter hii inaweza kuachwa, hatua ni hatua inayohitajika, kwa mfano, kuunda au kufuta sheria, na vigezo vya ziada vinaelezea hatua na sheria ya kutekelezwa.

Inabakia kuzingatia vitendo kuu ambavyo iptables hukuruhusu kufanya:

  • -A- ongeza sheria kwenye mnyororo;
  • -NA- angalia sheria zote;
  • -D- kufuta sheria;
  • -I- ingiza sheria na nambari inayotaka;
  • -L- onyesha sheria zote katika mlolongo wa sasa;
  • -S- onyesha sheria zote;
  • -F- futa sheria zote;
  • -N- kuunda mnyororo;
  • -X- kufuta mnyororo;
  • -P- weka kitendo chaguo-msingi.

Chaguzi za ziada kwa sheria:

  • -p- taja itifaki, moja ya tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
    mh;
  • -s- taja anwani ya IP ya kifaa kutuma pakiti;
  • -d- onyesha anwani ya IP ya mpokeaji;
  • -i- interface ya mtandao wa pembejeo;
  • -o- interface ya mtandao inayotoka;
  • -j- chagua kitendo ikiwa sheria inalingana.

Sasa unaweza kuendelea na kuangalia mifano ya jinsi iptables imeundwa.

Mifano ya usanidi wa Iptables

Tutaangalia mifano michache ya msingi ili uweze kuimarisha yale uliyosoma hapo juu.

Orodha ya sheria

Kwanza, hebu tuangalie jinsi ya kuona sheria za iptables, chaguo la -L linatosha kwa hili:

Unaweza pia kutaja mnyororo unaotaka ili kuonyesha sheria kwa ajili yake tu:

iptables -L INPUT

Kusafisha sheria

Huwezi tu kuzima iptables kwa kusimamisha huduma ya kusasisha sheria ya iptables kupitia systemd au hata kwa kuondoa seti ya huduma za usanidi. Mfumo mdogo hufanya kazi katika kiwango cha kernel na haitegemei kile ambacho umesakinisha hapo. Kwa hiyo, ikiwa utafanya kitu kibaya, utahitaji kufuta sheria. Ili kufanya hivyo, endesha:

Au tu kwa mlolongo maalum:

sudo iptables -F Ingizo

Acha nikukumbushe kwamba vitendo hivi vyote vinafanywa kwa meza ya chaguo-msingi - kichungi.

Sheria Chaguomsingi

Kama nilivyosema tayari, ikiwa hakuna sheria inayolingana na pakiti, basi hatua chaguo-msingi inatumika kwake. Inaweza kubainishwa kwa kutumia -p chaguo:

sudo iptables -p INPUT KUBALI
$ sudo iptables -p OUTPUT KUBALI
$ sudo iptables -p DONDOSHA MBELE

Katika mfano huu, tunaruhusu minyororo ya INPUT na OUTPUT, lakini zima FORWARD.

Kuzuia pakiti

Ili kuzuia pakiti, tunaweza kutumia kitendo cha DROP; tunaweza kuchuja pakiti ambazo zinahitaji kuzuiwa na vigezo vingi, kwa mfano, itifaki, anwani ya IP, mask ya neti, mlango na mengi zaidi.

Hivi ndivyo amri itakavyoonekana, ambayo hukuruhusu kuongeza sheria ya iptables kuzuia pakiti zote zinazoingia kutoka 10.10.10.10:

iptables za sudo -A INPUT -s 10.10.10.10 -j DROP

Na sasa pakiti zinazotoka kwa anwani sawa:

Uzuiaji wa anuwai ya IP unafanywa kwa njia sawa. Ili kufanya hivyo, unahitaji kutumia mask ya mtandao 10.10.10.0/24. Hizi zitakuwa anwani zote kuanzia 10.10.10.0 hadi 10.10.10.255:

sudo iptables -A INPUT -s 10.10.10.0/24 -j DROP

Au toleo lililopanuliwa la mask:

sudo iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Unaweza pia kuzuia miunganisho yote ya ssh inayoingia:

sudo iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Kama unaweza kuona, kuongeza sheria ya iptables ni rahisi sana.

Kufuta sheria

Kufuta sheria za iptables hufanyika kwa njia sawa na kuunda mpya, tu badala ya chaguo A unahitaji kutumia chaguo D. Kwanza, angalia orodha ya sheria:

Kwa mfano, hivi ndivyo unavyoweza kufuta sheria ya iptables ambayo iliundwa pili:

iptables za sudo -A OUTPUT -s 10.10.10.10 -j DROP

Unaweza pia kufuta iptables kabisa kwa kuendesha amri na -F chaguo:

Kuna suluhisho kadhaa za kusanidi firewall kwenye Linux, lakini nyingi ni sehemu za mbele za kusanidi iptables, na zingine hazijafanikiwa kabisa. Kimsingi, ni vizuri kuwa na uwezo wa haraka kuanzisha firewall, lakini mara tu kupata hang ya iptables, utakuwa na uwezo wa kufanya hivyo kwa kasi na zaidi finely. iptables za kurekebisha vizuri kwa kawaida hazipatikani kwa sehemu za mbele.

Tuanze. Wacha tuanze na rahisi, na kisha tutachanganya usanidi. Hapa kwenye tovuti tayari kuna makala kuhusu sheria za iptables za autoloading, kwa hiyo hatutazingatia sheria za upakiaji sasa, lakini tutazingatia sheria wenyewe. Firewall daima imeundwa chini ya akaunti ya mizizi.

Matukio ya muunganisho wa mtandao

Kabla ya kuanzisha firewall, lazima uwe na ufahamu sahihi wa nini miunganisho ya mtandao na jinsi zinapaswa kuwekwa wakati wa uendeshaji wa mfumo ili huduma zote ziweze kufanya kazi kwa kawaida. sahihi zaidi picha yetu ya kazi huduma za mtandao, zikifanya kazi kwenye seva zetu na kwenye seva zingine, ndivyo mfumo unavyoweza kusanidiwa vizuri zaidi. Kwa hiyo, ni vyema kuelezea daima kwanza matukio ya jinsi kila kitu kinapaswa kufanya kazi, na kisha tu kuanza kuanzisha firewall. Hati inaweza kuandikwa kwa njia yoyote mhariri wa maandishi. Kwanza, tunaelezea huduma zote za nje ambazo seva inafanya kazi, na kisha huduma zote zinazoendesha kwenye seva. Kwa nini hii ni muhimu? Ili kuwakilisha kwa usahihi mchakato wa kazi yenyewe, bila kuingia kwenye sehemu ya kiufundi. Baada ya kuandika hati sahihi zaidi, unaweza kuanza kusanidi firewall. Maelezo ya maandishi yanapaswa kuonekana kama hii:

1) Watumiaji wote wanaweza kutazama tovuti. Kwa chaguo-msingi, tovuti iko katika Kirusi.
2) Ikiwa watumiaji walitoka kwa anwani<список-адресов-или-маска-подсети>, basi wanapaswa kuonyeshwa tovuti katika Kiukreni. Katika mfano wetu, hii itakuwa, kwa mfano, duka la mtandaoni na jina moja la kikoa, lililoonyeshwa kwa Kirusi au Kiukreni, na kuwa na seti yake ya kuuza kwa Urusi na Ukraine. Tutakuwa na tovuti mbili tu, moja kwa Kirusi, ya pili katika Kiukreni, na anwani ambayo mteja alikuja itaamua tovuti ambayo ataenda. Mfano unachukuliwa kutoka kwa kichwa changu; kwa mazoezi, kwa kweli, maswala kama haya yanatatuliwa tofauti. Pia huwezi kuruhusu tovuti kutazamwa kutoka Anwani za Kichina kwa sababu ya barua taka za mara kwa mara katika maoni katika Kichina.
3) Barua zinapaswa kupatikana kutoka kwa ofisi; haipaswi kufikiwa kutoka sehemu zingine.
4) Ni lazima iweze kuunganishwa na VPN kutoka nje
5) Tunaweza tu kutumia seva chache za DNS ambazo tunaamini. Seva zingine zote za DNS zinapaswa kukosa kupatikana
6) …..

Nakadhalika. Nadhani hiyo inatosha mfano rahisi. Jambo ni kuamua picha ya mwingiliano wa mtandao kwa usahihi iwezekanavyo. Hati yoyote ina lengo moja pekee - kurasimisha mwingiliano na watumiaji na huduma kabla ya kuunda maelezo ya muunganisho, ikijumuisha mlango, itifaki, anwani ya chanzo, anwani lengwa kwa kila muunganisho.

Kuweka iptables: Usanidi rahisi zaidi

Ikiwa tunazungumzia kuhusu seva za kupambana, mipangilio ya firewall kwenye seva mbili inaweza kutofautiana sana, kulingana na kazi ambazo seva hizi hufanya. Kwa hiyo, nitajaribu kuelezea kanuni za jumla ambazo zinaweza kutumika wakati wa kuanzisha firewall kwa seva yoyote. Huu ni msingi tu wa ubinafsishaji zaidi.

Kwanza kabisa, unahitaji kufuta sheria zilizopakiwa:

Iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD

INPUT, OUTPUT, FORWARD - hizi ni minyororo mitatu kuu ambayo pakiti zitatiririka, zinazoingia, zinazotoka na kupita kutoka kiolesura hadi kiolesura.

Baada ya hayo, unahitaji kuweka sera chaguo-msingi. Kuna mbili tu kati yao - KUBALI na DROP, ukubali pakiti au la. Kwa seva ya uzalishaji, unapaswa kuchagua daima DROP, na kisha ufungue kila kitu ambacho ni muhimu na hakuna zaidi.

Ili kuweka sera kama hizo, lazima kwanza uruhusu miunganisho kupitia SSH; tutachukulia kuwa hatukubadilisha mlango wa kawaida (ambao kwa kawaida unapaswa kufanywa kwenye seva za uzalishaji mara baada ya kusakinisha seva ya SSH).

Iptables -t chujio -A INPUT -p tcp -m tcp --dport 22 -j KUBALI

Na baada ya hapo unaweza kuanza kubadilisha sera chaguo-msingi:

Iptables -P INPUT DROP iptables -P OUTPUT KUBALI iptables -P FORWARD DROP

Kwa msururu wa OUTPUT, kwa sasa unaweza kuacha sera chaguo-msingi ya KUKUBALI, ambayo inaruhusu miunganisho inayotoka; unaweza kuibadilisha baada ya kusanidi msururu wa INPUT, tunapokataza miunganisho inayoingia. Kwenye seva nyingi inatosha kusanidi mnyororo wa INPUT kwa usahihi, lakini pia tutaangalia usanidi wa OUTPUT baadaye kwa usanidi ngumu zaidi.

Hivyo. KATIKA wakati huu Tuna lango la seva ya SSH pekee lililofunguliwa kwa miunganisho inayoingia; miunganisho haitapitia kwenye milango mingine yote. Sasa unahitaji kuongeza mapokezi ya miunganisho kwenye bandari za huduma zingine, ikiwa zinaendesha kwenye seva yako.

Iptables -t chujio -A INPUT -p tcp -m tcp --dport 25 -j KUBALI

DNS (kawaida kuruhusu UDP inatosha, lakini pia unaweza kuongeza TCP):

Iptables -t chujio -A INPUT -p udp -m udp --dport 53 -j KUBALI

Iptables -t chujio -A INPUT -p tcp -m tcp --dport 80 -j KUBALI

Iptables -t chujio -A INPUT -p tcp -m tcp --dport 110 -j KUBALI

Iptables -t chujio -A INPUT -p tcp -m tcp --dport 443 -j KUBALI

Lakini si hayo tu. Bandari zimefunguliwa, huduma zinapatikana kutoka nje, lakini barua haifanyi kazi na majina ya kikoa hayajatatuliwa. Ukweli ni kwamba wakati wa kuuliza seva za DNS, ombi hutumwa kutoka kwa bandari ya bure ya kiholela kutoka kwa zisizo na upendeleo, kama vile unganisho kwa seva nyingine ya barua. Na huduma hizi hutuma majibu kwenye bandari sawa. Na bandari hii, kama unavyoelewa, imefungwa kwa ajili yetu. Tunaweza kufungua mlango huu, lakini hatujui ni mlango gani muunganisho unaotoka utatoka. Kwa hivyo, tunaweza kufanya jambo rahisi iwezekanavyo - ruhusu miunganisho kutoka kwa bandari maalum kwenye kompyuta ya mbali:

Iptables -t chujio -A INPUT -p tcp -m tcp --sport 25 -j KUBALI

Iptables -t chujio -A INPUT -p udp -m udp --sport 53 -j KUBALI

Sheria hizi mbili huruhusu miunganisho inayoingia kutoka kwa bandari 25/tcp na 53/udp, kwa hivyo pakiti zilizo na itifaki inayofaa zinapowasili kutoka kwa bandari hizi, zitakubaliwa. Ikiwa unapanga kusasisha mfumo, programu, au kusakinisha vifurushi muhimu kwa uendeshaji, basi itabidi kuruhusu miunganisho kutoka kwa bandari 80 ya mashine za mbali.

Sasa hii ndiyo zaidi usanidi rahisi Tuna iptables tayari.

Baada ya kuingiza sheria kwenye meza, unahitaji kuzihifadhi. Kwa kufanya hivyo, unaweza kutumia, kwa mfano, script.

Kushughulikia chanzo cha uunganisho

Endelea. Tunahitaji muunganisho kwenye bandari fulani si kwa mtandao mzima, lakini kwa mashine fulani, na anwani fulani za IP. Kwa hivyo, tunaweza kugumu sheria kidogo kwa kuongeza anwani ya chanzo cha pakiti kwao.

Iptables -t chujio -A INPUT -s 123.123.123.123 -p tcp -m tcp --dport 22 -j KUBALI

Sheria hii inakuwezesha kupokea pakiti kwenye bandari 22 kupitia TCP tu kutoka kwa chanzo na anwani 123.123.123.123, hii inaonyeshwa na parameter "-s" (chanzo, chanzo). Kwa njia hii, unaweza kuweka kikomo miunganisho kwa seva kupitia SSH kwa anwani moja maalum ya IP, au kwa subnet maalum ikiwa utabainisha mask ya subnet ambayo miunganisho inaruhusiwa badala ya anwani maalum ya IP.

Ikiwa kila wakati unatumia lango la barua ambalo seva yako hutuma barua, basi unaweza, kwa mfano, kupunguza miunganisho kutoka kwa bandari 25/tcp kwa kubainisha lango hili kama chanzo.

Sheria za kiolesura maalum cha mtandao au anwani ya IP

Seva inaweza kuwa na violesura kadhaa vya mtandao. Kawaida kuna angalau mbili kati yao - kiolesura cha nje cha mtandao na kinachojulikana kiolesura cha loopback 127.0.0.1, ambacho hakiwezi kufikiwa kutoka nje isipokuwa kama kuna uelekezaji upya wa pakiti. Unaweza pia kuwa na angalau anwani moja ya IP iliyoshirikiwa na lakabu ya kiolesura cha mtandao, au kiolesura kingine halisi cha mtandao. Na kwa kila anwani ya IP au kiolesura cha mtandao huduma fulani zinaweza kufanya kazi. Kwa mfano, moja ina seva ya wavuti ya Apache, na nyingine ina seva ya huduma ya jina la kikoa bind9. Na unaporuhusu miunganisho kwenye bandari maalum bila kutaja kiolesura hicho cha mtandao, unafungua ufikiaji wa bandari hiyo kwenye miingiliano yote. Kwa hiyo, kuna njia mbili za kupunguza upeo wa ruhusa.

Njia ya kwanza ni kutaja anwani ya IP ambayo ufikiaji utaruhusiwa.

Iptables -t chujio -A INPUT -d 234.234.234.234 -p tcp -m tcp --dport 22 -j KUBALI

Mfano huu unaonyesha jinsi anwani lengwa inaweza kutumika katika sheria ya iptables. Unaweza pia kutumia anwani ya chanzo:

Iptables -t chujio -A INPUT -s 123.123.123.123 -d 234.234.234.234 -p tcp -m tcp --dport 22 -j KUBALI

KATIKA mfano huu Tayari tunaweka kikomo cha ufikiaji wa anwani mbili, ambayo hukuruhusu kufikia seva kwa 234.234.234.234 kupitia SSH kutoka kwa anwani 123.123.123.123; hutaweza kufikia kutoka kwa anwani zingine.

Njia ya pili ni kutaja jina la interface ya mtandao. Njia hii pia inatumika wakati anwani ya nje inaweza kubadilika. Ikiwa anwani kwenye kiolesura cha mtandao itabadilika, kwa chaguo la awali utapoteza ufikiaji wa seva. Jina la kiolesura limebainishwa kama ifuatavyo:

Iptables -t chujio -A INPUT -i eth0 -s 123.123.123.123 -p tcp -m tcp --dport 22 -j KUBALI

Chaguo hili huruhusu ufikiaji wa SSH kwenye kiolesura cha mtandao eth0; ufikiaji wa SSH hautapatikana kwenye violesura vingine vya mtandao.

Kila tulichoangalia ni mwanzo tu, sehemu inayofuata itaendelea...

Iptables kimsingi inawajibika kwa uchujaji wa pakiti. Kusanidi Iptables kwa mikono ni sawa si kazi rahisi. Usitarajie kubaini hili "haraka." Kwa bahati nzuri, kuna zana nyingi ambazo zinaweza kukusaidia ikiwa bado haujafikiria iptables, lakini unahitaji haraka kuimarisha mfumo: fwbuilder, firestarter, guarddog, arno firewall - kimsingi hii ni GUI kwa iptables. Hakuna jibu wazi ambalo ni bora zaidi. Chaguo ni lako. Hata hivyo, makala ya leo imejitolea hasa kwa iptables na imegawanywa katika sehemu mbili: nadharia na mazoezi. Wale wasio na subira wanaweza kumaliza mara moja sehemu ya vitendo, ingawa njia hii haifai.

Makini! Vitendo vyote vilivyo na iptables vinafanywa kwa niaba ya mtumiaji aliyebahatika!

Nadharia

iptables za umbizo la iptables [-t table] [amri] [kitendo] Mfano: iptables -t filter -A INPUT KUBALI

Vitendo

  • KUBALI - Kubali kifurushi
  • DROP - Dondosha pakiti
  • DNAT - Badilisha Anwani Lengwa
  • SNAT - Badilisha anwani ya IP inayotoka kwenye kichwa cha pakiti
  • LOG - Kuingia kwa pakiti na matukio
  • MARK - Weka alama kwenye kifurushi
  • MASQUERADE - Badilisha anwani ya IP inayotoka kwenye kichwa cha pakiti (tofauti na SNAT - kufanya kazi na IPs zinazobadilika)
  • FOLENI - Weka foleni kwa pakiti ili kuchakatwa
  • REDIRECT - Elekeza upya pakiti/mtiririko kwenye mlango mwingine
  • KATAA - Dondosha pakiti + arifa mfumo wa mbali Kuhusu. kwamba kifurushi chake kilikataliwa
  • RUDISHA - Acha pakiti kusonga kando ya mnyororo wa sasa na uirudishe kwa mnyororo wa kupiga simu

Timu

  • -A - Ongeza sheria kwenye mnyororo
  • -D - Ondoa sheria kutoka kwa mnyororo
  • -R - Badilisha sheria moja na nyingine
  • -I - Weka sheria mpya
  • -L - Orodhesha sheria zilizopo
  • -F - Weka upya sheria
  • -Z - Weka upya vihesabio katika mlolongo fulani
  • -N - Unda msururu mpya kwa jina ulilopewa
  • -X - Futa mnyororo
  • -P - Weka sera chaguo-msingi kwa msururu uliochaguliwa
  • -E - Badilisha jina la mnyororo wa mtumiaji

Vigezo (jumla)

  • -p - Bainisha aina ya itifaki
  • -s - anwani ya IP ya chanzo cha pakiti
  • -d - Anwani ya IP ya mpokeaji wa pakiti
  • -j - Bainisha kitendo cha sheria
  • -i - Kiolesura ambacho pakiti ilipokelewa
  • -o - Bainisha jina la kiolesura cha pato
  • -f - Kueneza sheria kwa vipande vyote vya pakiti

Vigezo vya TCP:

  • -tcp-bendera - Bainisha kinyago na bendera

Vigezo vya UDP:

  • -michezo - Bandari ambayo pakiti ilitumwa
  • -dport - Bandari ambayo pakiti inashughulikiwa

Maelezo zaidi katika man iptables

Fanya mazoezi

Tazama usanidi wa sasa

$ sudo iptables -L INPUT Chain (sera KUBALI) lengwa la kuchagua mnyororo wa chanzo lengwa Mnyororo FORWARD (sera KUBALI) lengwa chaguo la chanzo lengwa la Chain OUTPUT (sera KUBALI) lengwa la chaguo la chanzo lengwa

Ukiona kitu kama hiki, inamaanisha kuwa ngome yako bado haijasanidiwa na inaruhusu kila kitu. Wacha turekebishe hali hiyo.

Kuweka Sera Chaguomsingi

  • iptables -P INPUT DROP - kuzuia pakiti zinazoingia
  • iptables -P OUTPUT KUBALI - ruhusu pakiti zinazotoka
  • iptables -P FORWARD DROP - usindikaji wa pakiti ambazo zimefikia seva kutoka kwa mashine nyingine na zinasubiri kusambaza zaidi. Katika mfano imefungwa. Katika kesi hii, italazimika kuongeza sheria kwa mashine zinazoaminika.

Kwa kuwa pakiti zinazoingia za INPUT zimezuiwa, tutaandika sheria ifuatayo:

$ sudo iptables -A INPUT -m jimbo --jimbo INAYOHUSIANA, IMEANZISHWA -j KUBALI

Hii itaruhusu kukubali pakiti kutoka kwa muunganisho ulioanzishwa hapo awali na kukubali pakiti mpya zinazozalishwa na muunganisho huu.

Au kuonyesha aina ya itifaki:

$ sudo iptables -A INPUT -p TCP -m hali --hali IMEANZISHWA,INAYOHUSIANA -j KUBALI $ sudo iptables -A INPUT -p UDP -m state --state IMEANZISHWA,INAHUSIANA -j KUBALI

Sasa kiolesura cha ndani:

$ sudo iptables -A INPUT -i lo -j KUBALI

  • MPYA - data inayoanzisha muunganisho mpya.
  • IMEANZISHWA - pakiti inayotoka kwa muunganisho ambao tayari umeanzishwa.
  • INAYOHUSIANA - pakiti mpya ya data, lakini inayotokana na muunganisho wa zamani ulioanzishwa
  • BATILI - kwa hivyo ni wazi

$ sudo iptables-save > /etc/iptables.up.rules

Wezesha sheria hizi:

$sudo iptables-rejesha< /etc/iptables.up.rules

Na tazama tofauti:

$sudo iptables -L

Zindua iptables wakati wa kuanzisha mfumo:

Katika saraka ya /etc/init.d, unda faili inayoitwa iptables

$ sudo touch /etc/init.d/iptables

Tunaandika yafuatayo ndani yake:

#!/bin/sh /sbin/iptables-restore< /etc/iptables.up.rules

Kufanya faili ya iptables kutekelezwa:

$ sudo chmod +x /etc/init.d/iptables

Iongeze kwa autorun

$ sudo update-rc.d -n iptables chaguo-msingi

Zindua iptables wakati umeunganishwa kwenye mtandao:

$ sudo echo "#! /sbin/iptables-restore" > /etc/network/if-up.d/iptables.up.rules $ sudo iptables-save >> /etc/network/if-up.d/iptables. up.rules $ sudo chmod +x /etc/network/if-up.d/iptables.up.rules

Kumbuka: wakati wowote unaweza kuangalia ikiwa sheria zako zimepakiwa kwa kuingiza tu iptables-save kama mzizi

Kwa archlinux, kuokoa sheria za iptables hufanywa kwa amri:

$ sudo rc.d hifadhi iptables

Hati ndogo ya awali (sheria, iptables faq) ya eneo-kazi au seva rahisi. KATIKA kwa kesi hii mifano ya kufanya kazi na bandari za programu fulani inayoendesha kwenye kompyuta yako. Tahadhari za usalama lazima zizingatiwe kwenye kompyuta yoyote. Hadithi kwamba Linux ni salama zaidi sio kweli; yote inategemea ugumu wa mikono ya msimamizi. Pia kuna mifumo ya Windows iliyolindwa vizuri, pamoja na mifumo ya Linux ambayo ni wazi kwa karibu kila mtu. Kwa hivyo, bado inafaa kufikiria kidogo juu ya ulinzi wa mtandao wa kompyuta yako. Chini ni sheria za iptables ambazo zinaweza kuwa muhimu mwanzoni.

Nilibadilisha haswa $IPT na /sbin/iptables, ikiwa mtu anahitaji sheria moja tu, ili asibadilishe chochote, waliinakili tu na kuitekeleza. Kwa kawaida, kuna sheria chache hapa bado, hakuna VPN tofauti, nk, ikiwa unataka, ziongeze.

Mistari hii inaweza kunakiliwa kabisa kwenye hati na kutekelezwa kwa urahisi. Kwa kesi za kawaida, hii inatosha. Ikiwa programu yoyote haiwezi kufikia mtandao, kumbukumbu imeongezwa maalum. Fungua tu mkia -f /var/log/syslog (au yako, ikiwa ni tofauti na Ubuntu) na uangalie! Ikiwa una maswali, yaongeze kwenye mjadala, na tutayatatua pamoja.

PS Mbali na sheria hizi, fikiria juu ya kile unapaswa kuchukua kutoka kwa kifungu cha Uboreshaji wa TCP.

Jinsi ya kufuta sheria katika Iptables

Imetumwa na Alexey Ubozhenko

Mara kadhaa nimekutana na ukweli kwamba hata watu wenye akili kwa ujumla hufanya makosa yasiyosameheka kabisa. Kwa mfano, wanafungua bandari ambayo hifadhidata inaendesha mtandao mzima.

Blogu kuhusu usimamizi wa mfumo. Makala kuhusu Linux, Windows, mifumo ya hifadhi ya NetApp na uboreshaji.

Mara nyingi hii hutokea kwa Kompyuta za DevOps ambao wamekuwa wakiandika msimbo maisha yao yote, na sasa majukumu yao pia yanajumuisha kuanzisha seva. Kuna mafunzo mazuri mtandaoni kuanzisha msingi firewall katika Linux na *nix zingine, lakini mara nyingi hizi ni laha kwenye skrini nyingi. Kwa hivyo, natumai somo hili fupi zaidi litakuwa muhimu kwa mtu.

Muhimu! Ni rahisi sana kufirewall mashine kimakosa kiasi kwamba huwezi tena kuipata. Hii ni kweli hasa kwa upangishaji wa wingu. Kwa mfano, ikiwa katika AWS unafunga bandari zote kutoka 1024 hadi 65536, kwa sababu fulani mashine inageuka kuwa imefungwa baada ya kuwasha upya. kila kitu kwa ujumla bandari. Ikiwa umepangishwa katika mawingu, sanidi firewall bora kupitia kiolesura cha wavuti kilichotolewa na mwenyeji.

Ujumbe mdogo juu ya istilahi. Ngome iliyojengwa ndani ya kernel ya Linux inaitwa Netfilter, na iptables ni matumizi ya kudhibiti ngome hii. Watu wengi wanaamini kimakosa kwamba firewall inaitwa iptables. Hii si sahihi. Kusema kitu kama "Ninachuja pakiti na kutumia iptables", unaonyesha wengine kutojua kusoma na kuandika.

Kwa ujumla, ni aina gani ya shida zinaweza kutatuliwa kwa kutumia Netfilter:

  • Ruhusu/kataa trafiki inayoingia kwa bandari maalum kwa kutumia itifaki maalum (IPv4/IPv6, TCP/UDP) kutoka kwa anwani maalum (IP, MAC) au subnets;
  • Kila kitu ni sawa kwa trafiki inayotoka;
  • Unaweza, kwa mfano, kupuuza kabisa pakiti zote za ICMP;
  • Kuanzisha NAT, angalia chapisho kuhusu kusakinisha na kusanidi OpenVPN;
  • Nilisikia kwamba gurus halisi wanajua jinsi ya kuweka ulinzi dhidi ya DDoS na nguvu ya kikatili, na kupunguza ufikiaji wa mtandao. maombi maalum, watumiaji au vikundi, na kufanya mambo mengine ya kichaa;

Ningependa kutambua kuwa mwanzoni mimi binafsi nilipata matumizi ya iptables kuwa ngumu sana ikilinganishwa na ipfw katika FreeBSD. Kwa bahati nzuri, baada ya kufanya kazi nayo kwa muda, bendera hizi nyingi kama -A, -D, -j na zingine zinafahamika, kwa hivyo kuwa na subira. Hebu tuangalie amri za msingi.

Onyesha sheria zote:

Unaweza kugundua kuwa Netfilter ina "minyororo" - angalau INPUT, OUTPUT na FORWARD.

Binafsi pia nina mnyororo wa DOCKER kwenye mashine yangu. Kwa mara ya kwanza, unaweza kufikiria mbili za kwanza kama trafiki zote zinazoingia na zinazotoka, mtawalia, na kusahau kwa muda kuhusu zingine. Nafasi ni nzuri kwamba hutawahi kuzihitaji hata kidogo.

Ondoa sheria zote:

Badilisha sera (tabia chaguomsingi) ya mnyororo:

iptables -P INPUT DROP
iptables -P INPUT KUBALI

Kataa ufikiaji kutoka kwa mwenyeji/subnet:

iptables -A INPUT -s 123.45.67.89 -j DROP
iptables -A INPUT -s 123.45.0.0/16-j DROP

Unaweza pia kutumia majina ya vikoa:

iptables -A INPUT -s example.ru -j DROP

Marufuku ya miunganisho inayotoka:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

Unaweza kutumia kukanusha katika sheria:

iptables -A PEMBEJEO !-s 123.45.67.89 -j DROP

Kufuta sheria kwa nambari yake kwenye mnyororo:

iptables -D PEMBEJEO 1

Kuondoa sheria kulingana na kile hufanya:

iptables -D INPUT -s 123.45.67.89 -j DROP

Chaguo la -p linabainisha itifaki. Unaweza kutumia zote, icmp, tcp, udp, au nambari ya itifaki kutoka /etc/protocols. Alama ya --sport inabainisha mlango ambapo pakiti ilitumwa, na --dport bendera inabainisha lango lengwa:

iptables -A INPUT -p tcp --sport80-j KUBALI
iptables -A INPUT -p tcp --dport80-j KUBALI

Kuingiza sheria mwanzoni mwa mnyororo:

iptables -I pembejeo ...

Au unaweza kutaja nafasi maalum:

iptables-save >/etc/iptables.rules

Rejesha sheria:

iptables-rejesha

Sasa acheni tuangalie mifano fulani ya vitendo. Kwa mfano, hivi ndivyo uigaji wa netsplit unavyoonekana katika jaribio ambalo hukagua tabia ya programu inayotumia Akka Cluster:

run(node1, s"iptables -A INPUT -s $node2 -j DROP")
run(node1, s"iptables -A INPUT -s $node3 -j DROP")
run(node1, s"iptables -A OUTPUT -d $node2 -j DROP")
run(node1, s"iptables -A OUTPUT -d $node3 -j DROP")

Urejeshaji hutokea kwa njia sawa kabisa, bendera -A pekee ndiyo inabadilishwa na -D bendera.

Mfano mwingine. Unahitaji kujua ni bandari gani zinazosikiza kwenye mashine na funga zile zisizo za lazima. Tunaingia kwenye gari na kusema:

Pato la mfano:

Miunganisho inayotumika ya Mtandao (seva pekee)
Proto Recv-Q Send-Q Anwani ya Ndani ya Anwani ya Kigeni Jimbo la PID/Prog
tcp 0 0 0.0.0.0:80 0.0.0.0:* SIKILIZA 3210/nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* SIKILIZA 1789/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* SIKILIZA 797/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* SIKILIZA 990/postgres

Nginx na SSHd hutazama Mtandao, hii ni kawaida. PostgreSQL inasikiza tu kiolesura cha ndani, kwa hivyo hakuna shida na hiyo pia. Lakini epmd hutoka nje (unaweza kuiangalia na telnet kutoka kwa mashine nyingine), na hii sio nzuri. Unaweza tu kufunga bandari 4369. Jinsi ya kufanya hivyo ilionyeshwa hapo juu. Au unaweza kwenda mbali zaidi na kukataa miunganisho yote kutoka nje hadi bandari ya 81 na zaidi:

iptables -A INPUT -m multiport \
-p tcp --dports81:65535!-s 127.0.0.0/8-j DROP

Hii hutumia kiendelezi cha bandari nyingi, ambacho hukuruhusu kutaja safu za bandari.

Wacha tuangalie ikiwa kila kitu kinafanya kazi. Ikiwa ni sawa, hifadhi sheria:

iptables-save >/etc/iptables.rules

Ili kuhakikisha kuwa sheria zinachukuliwa mfumo unapoanza, tunaunda faili mpya /etc/network/if-pre-up.d/iptables:

iptables-rejeshatoka0

... na tunasema:

chmod +x /etc/network/if-pre-up.d/iptables

Njia hii imejaribiwa kufanya kazi kwenye Ubuntu 14.04 LTS.

Inapaswa kufanya kazi kwenye Debian pia. Utapata maelezo ya njia mbadala ya kurejesha sheria za ngome wakati wa kuanzisha mfumo kwenye kidokezo kilichotajwa tayari kuhusu OpenVPN.

Nyenzo za ziada kwa wale wanaotaka kujua zaidi kuhusu Netfilter:

Je, unaweka vipi ngome kwenye seva zako?

Tags: Linux, Usalama, Mitandao.

Huduma ya mstari wa amri ya iptables hutumiwa kusanidi firewall ya netfilter iliyojengwa katika mfumo wa msingi wa Linux kernel.

Maagizo haya yanafaa kwa dummies ambao wanataka kuelewa mambo ya usalama wa mtandao, na kwa wataalamu wenye uzoefu kama karatasi ya kudanganya.

Kanuni ya kuweka

Syntax ya jumla ya kutumia iptables ni:

iptables -t<таблица> <команда> <цепочка>[nambari]<условие> <действие>

<таблица>

sheria za netfilter zinasambazwa katika majedwali 4, ambayo kila moja ina madhumuni yake (maelezo zaidi hapa chini). Imeelezwa na -t kubadili, lakini ikiwa parameter hii haijainishwa, hatua itafanyika kwa meza ya default - chujio.

<команда>

Amri zinaonyesha ni aina gani ya hatua tunayofanya kwenye netfilter, kwa mfano, kuunda au kufuta sheria.

<цепочка>

Kila meza ina minyororo, kwa kila ambayo sheria wenyewe huundwa. Kwa mfano, kwa jedwali la kichungi hapo juu kuna minyororo mitatu iliyoainishwa - INPUT (pakiti zinazoingia), OUTPUT (pakiti zinazotoka) na FORWARD (pakiti za usafirishaji).

[nambari]

Amri zingine zinahitaji kubainisha nambari ya sheria, kwa mfano, kufuta au kuhariri.

<условие>

Hali inaelezea vigezo vya kutekeleza sheria fulani.

<действие>

Kweli, kwa kweli, tunafanya nini na kifurushi ikiwa kinakidhi vigezo vya hali hiyo?

* kwa haki, inafaa kuzingatia kwamba ufunguo wa hatua sio lazima ufike mwisho. Ni kwamba muundo huu mara nyingi hupatikana katika maagizo na hufanya sheria iwe rahisi kusoma.

funguo za iptables na mifano ya matumizi yao

Kufanya kazi na meza (iptables -t)

Acha nikukumbushe kwamba sheria zote kwenye netfilter zinasambazwa kwenye jedwali. Kufanya kazi na meza maalum, lazima utumie -t kubadili.

Timu

Vifunguo vifuatavyo huamua vitendo ambavyo shirika la iptables hufanya.

Ufunguo Maelezo na mifano
-A Kuongeza sheria hadi mwisho wa orodha:
iptables -A INPUT -s 192.168.0.15 -j DROP
kukataa ujumbe unaoingia kutoka 192.168.0.15.
-D Kufuta sheria:
iptables -D INPUT 10
futa sheria kwenye mnyororo wa INPUT na nambari 10.
-I Kuingiza sheria katika sehemu maalum ya orodha:
iptables -INPUT 5 -s 192.168.0.15 -j DROP
ingiza kanuni ya 5 kwenye orodha.
-R Kubadilisha kanuni.
iptables -R OUTPUT 5 -s 192.168.0.15 -j KUBALI
badilisha sheria yetu ya 5 kutoka kwa kukataza hadi kuruhusiwa.
-F Kuweka upya sheria katika mlolongo.
iptables -F INPUT
-Z Inaweka upya takwimu.
iptables -Z INPUT
-N Kuunda mnyororo.
iptables -N CHAINNEW
-X Kufuta mnyororo.
iptables -X CHAINNEW
-P Bainisha kanuni ya msingi.
iptables -P INPUT DROP
-E Badilisha jina la mnyororo.
iptables -E CHAINNEW CHAINOLD

Masharti

Funguo hizi hufafanua masharti ya utawala.

Ufunguo Maelezo na mifano
-p Itifaki ya mtandao. Chaguo halali ni TCP, UDP, ICMP, au ZOTE.
iptables -A INPUT -p tcp -j KUBALI
ruhusu miunganisho yote ya tcp inayoingia.
-s Anwani ya chanzo - jina la mpangishaji, anwani ya IP, au subnet katika nukuu ya CIDR.
iptables -A INPUT -s 192.168.0.50 -j DROP
kukataa ujumbe unaoingia kutoka nodi 192.168.0.50
-d Anwani lengwa. Kanuni ya matumizi ni sawa na ufunguo uliopita -s.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
kukataa zinazotoka kwa nodi 192.168.0.50
-i Adapta ya mtandao ambayo pakiti hufika (INPUT).
iptables -A INPUT -i eth2 -j DROP
zima trafiki inayoingia ya kiolesura cha Ethernet eth2.
-o Adapta ya mtandao ambayo pakiti hutumwa (OUTPUT).
iptables -A OUTPUT -o eth3 -j KUBALI
Ruhusu ujumbe unaotoka kutoka kwa kiolesura cha Ethaneti cha eth3.
--dport Bandari ya marudio.
iptables -A INPUT -p tcp --dport 80 -j KUBALI
Ruhusu simu zinazoingia kwenye port 80.
--michezo Chanzo bandari.
iptables -A INPUT -p tcp --sport 1023 -j DROP
kataza ujumbe unaoingia kutoka bandari 1023.

Vifunguo vilivyoorodheshwa pia vinasaidia ujenzi kwa kutumia ishara ! .

Kuweka kichungi cha net kwa kutumia iptables

Inabadilisha hali, kwa mfano,
iptables -A INPUT -s ! 192.168.0.50 -j DROP
itakataa muunganisho kwa wapangishi wote isipokuwa 192.168.0.50.

Vitendo

Vitendo ambavyo vitafanywa kwenye kifurushi kinacholingana na vigezo vya hali hiyo. Kila jedwali lina seti yake ya vitendo vinavyoruhusiwa. Imebainishwa kwa kutumia ufunguo -j.

Jedwali Kitendo Maelezo
chujio KUBALI Inaruhusu kifurushi.
DONDOSHA Inakataa kifurushi.
KATAA Inakataza kutuma ujumbe kwa chanzo.
nat MASQUERADE Kwa pakiti zinazotoka, hubadilisha anwani ya IP ya chanzo na anwani ya kiolesura ambacho pakiti inatoka.
SNAT Sawa na MASQUERADE, lakini ikionyesha kiolesura mahususi cha mtandao ambacho anwani yake itatumika kwa ulaghai.
DNAT Ubadilishaji wa anwani kwa vifurushi vinavyoingia.
RUDISHA Huelekeza ombi kwenye mlango mwingine kwenye mfumo huo huo.
manyoya T.O.S. Marekebisho ya uga wa TOS (vipaumbele vya trafiki).
DSCP Kubadilisha DSCP (pia vipaumbele vya trafiki).
TTL Badilisha TTL (maisha ya pakiti).
H.L. Sawa na TTL, lakini kwa IPv6.
MARK Kuashiria kifurushi. Inatumika kwa uchujaji au uundaji unaofuata.
CONNMARK Kuashiria muunganisho.
TCPMSS Kubadilisha thamani ya MTU

Mifano ya amri za iptables zinazotumiwa sana

Amri za jumla

Angalia sheria na nambari zao:

iptables -L --line-nambari

Kwa kila meza unahitaji kuangalia sheria tofauti:

nambari za iptables -t nat -L --line-nambari

Ondoa sheria zote:

Weka sheria chaguo-msingi:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* katika mifano hii, kwa chaguo-msingi, sheria ya kukataa (DROP) itafanya kazi kwa pakiti zote zinazoingia (INPUT) na zinazotoka (OUTPUT).

Ruhusu yote

Njia ya 1: Kwa kuongeza sheria:

iptables -NA PEMBEJEO 1 -j KUBALI

iptables -I OUTPUT 1 -j KUBALI

iptables -NILIPELEKA 1 -j NAKUBALI

* amri hizi tatu zitaunda sheria zinazoruhusu pakiti zote zinazoingia, zinazotoka na za usafiri.

Njia ya 2. Kusafisha sheria:

* hapa kwanza tunaondoa sheria zote (-F), kisha kuweka sera chaguo-msingi ili kuruhusu zinazoingia, zinazotoka na za usafiri (-S).

Njia ya 3. Kuzima huduma (ni rahisi kuzima ngome kwa muda ili kutambua matatizo):

Kufanya kazi na sheria

Ongeza sheria hadi mwisho wa orodha:

iptables -A INPUT -p tcp --dport 25 -j KUBALI

iptables -A INPUT -p tcp -s ! 192.168.0.25 —dport 993 -i eth0 -j KUBALI

Ongeza safu ya mlango:

iptables -A INPUT -p tcp --dport 3000:4000 -j KUBALI

* katika kesi hii, kutoka 3000 hadi 4000.

Weka kanuni:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 --dport 53 -i eth1 -j KUBALI

Usambazaji wa bandari

Kuna njia mbili za kuanzisha.

1. UTANGULIZI + sheria za UTANGULIZI:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 -dport 22 -j DNAT -kwenda-lengwa 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 —sport 2222 -j SNAT —to-source 19.8.232.80:22

* Wapi 19.8.232.80 - anwani ambayo tunasikiliza maombi ya uunganisho; 22 - bandari kwa usambazaji; 192.168.1.15 2222 - bandari ya ndani.

2. KUTAWALA + kanuni za KUPELEKA:

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 22 -j DNAT --kwenda-lengwa 192.168.1.15:2222

iptables -A MBELE -p tcp -d 192.168.1.15 -dport 22 -m hali -hali MPYA, IMEANZISHWA,INAYOHUSIANA -j KUBALI

* Wapi eth1- interface ya mtandao ambayo tunasikiliza maombi; 22 - bandari kwa usambazaji; 192.168.1.15 - anwani ya IP ya ndani ambayo tunahamisha maombi yote; 2222 - bandari ya ndani.

Inaanza kuweka

Ruhusu SSH:

iptables -A INPUT -p tcp --dport 22 -j KUBALI

Tunaweka sera ya kuzuia ujumbe unaoingia na kuruhusu ujumbe wote unaotoka:

iptables -P OUTPUT KUBALI

Tunaunda sheria kwa operesheni ya kawaida ya apt-get:

iptables -A INPUT -p tcp --sport 80 -m hali --state ESTABLISHED -j KUBALI

Ruhusu ICMP (kutekeleza amri ya ping):

iptables -A INPUT -p icmp -j KUBALI

Sheria za kuhifadhi (kudumu)

Kwa msingi, sheria zote huacha kufanya kazi baada ya mtandao au kompyuta kuanza tena. Kuna mbinu kadhaa za usanidi ili kuhifadhi sheria baada ya kuwasha upya.

Njia ya 1. iptables-save

Hifadhi sheria kwenye faili:

iptables-save > /etc/iptables.rules

Fungua mipangilio ya mtandao:

vi /etc/network/interfaces

na ongeza mstari:

kabla ya up iptables-rejesha< /etc/iptables.rules

Njia ya 2: iptables-inaendelea

Sakinisha kifurushi kinachoendelea cha iptables:

apt install iptables-persistent

Ili kuhifadhi sheria, ingiza amri:

service iptables-persistent save

Njia ya 3. iptables za huduma

Inafanya kazi kwenye matoleo ya zamani ya Linux:

Njia ya 4: iptables.init

Hufanya kazi CentOS:

/usr/libexec/iptables/iptables.init hifadhi

Ubuntu na CentOS

Katika vyumba vya kisasa vya upasuaji Mifumo ya Ubuntu na CentOS haina iptables kwa chaguo-msingi.

Unahitaji kusakinisha au kutumia huduma mpya zaidi.

Kwenye CentOS

Firewall-cmd inatumika kama programu ya kawaida ya usimamizi wa ngome. Kwa maelezo zaidi, soma maagizo ya Jinsi ya kusanidi firewall kwenye CentOS.

Ikiwa unahitaji kutumia iptables, sasisha kifurushi na matumizi:

yum kusakinisha iptables-huduma

Zima firewall:

systemctl stop firewalld

systemctl zima firewalld

Ruhusu na uzindue iptables:

systemctl kuwezesha iptables

Katika Ubuntu

ufw sasa inatumika kudhibiti ngome.

Ili kufanya kazi na iptables, sasisha kifurushi kifuatacho:

apt-get install iptables-persistent

Zima ufw:

# Mitandao# Usalama# UNIX# Ubuntu# Linux

Je, maagizo haya yalikuwa ya manufaa kwako?

NYUMA YA "UKUTA WA MOTO":
FIREWALL (FIREWALL) NA LANGO LA MTANDAO
KATIKA DEBIAN GNU/LINUX 4.0 ETCH

Mwongozo wa vitendo wa kupanga ufikiaji salama wa Mtandao
kutoka kwa kompyuta tofauti na kutoka mtandao wa ndani katika Debian GNU/Linux 4.0 Etch
Nadharia kidogo

Kila ufikiaji wa Mtandao sio tu hufanya iwezekane kuunganishwa seva mbalimbali na tovuti, lakini pia huunda hatari inayoweza kutokea ya kupenya kwenye kompyuta yetu kutoka nje. Hatari hii haipaswi kupuuzwa, kwani kwa sasa majaribio mengi ya ufikiaji usioidhinishwa wa kompyuta za watumiaji kutoka kwa Mtandao ni sehemu ya biashara ya uhalifu iliyopangwa vizuri. Baada ya kudukua mfumo wako kwa mafanikio, watajaribu kutumia kompyuta yako kutuma barua taka, au kupanga mashambulizi ya DoS kwenye kompyuta nyingine, au kwa madhumuni mengine maovu. Kupuuza hatari hii, bora zaidi, kutaongeza gharama zako za trafiki na kupunguza kasi ya kompyuta yako; mbaya zaidi, inaweza kukuhusisha bila kujua katika shughuli za uhalifu za vikundi vya mtandao.

Hali hiyo inazidishwa na ukweli kwamba katika baadhi ya mifumo ya uendeshaji (bado) iliyoenea, bandari nyingi zimeachwa wazi kwa default, ambayo inaruhusu mshambuliaji kutoka kwenye mtandao kuunganisha kwa mtumiaji bila ya mwisho kutambua.

Ili kuzuia miunganisho isiyoidhinishwa kutoka nje na kuchuja trafiki inayoingia/kutoka, mfumo wa uendeshaji lazima utumie programu maalumfirewall(Kiingereza firewall), pia inajulikana kama firewall Na firewall . Ifuatayo inaelezea usanidi rahisi wa firewall katika mfumo wa uendeshaji wa bure Debian GNU/Linux 4.0.

Matumizi ya firewall inakuwa muhimu hasa ikiwa una kompyuta zaidi ya moja, lakini nyumbani au mtandao wa ofisi , ambao kompyuta zao hufikia mtandao.

Hata mtandao mdogo wa ndani lazima uandaliwe vizuri. Hebu sema una kituo cha kufikia mtandao wa kasi ya juu (kwa mfano, modem ya ADSL) yenye interface ya Ethernet (yaani, mtandao).

Kuna kishawishi (kilichochochewa na mapendekezo ya watu wasiojua kusoma na kuandika, kama vile maagizo ya modemu yangu ya ADSL) kuunganisha modemu moja kwa moja kwenye swichi, na kisha kuunganisha kwenye swichi. Wote kompyuta za mtandao wa ndani. Katika kesi hii, modem hutoa kwa nguvu kupitia swichi anwani za IP za ndani, lakini zinageuka kuwa kila kompyuta imesalia peke yake na mtandao! Wala modemu au swichi inaweza kuwa kikwazo kwa mtu asiye na busara. Mshambulizi anaweza kuchanganua Wote kompyuta za mtandao wa ndani zilizopangwa kwa njia hii.

Suluhisho la mantiki na salama ni kuunda kizuizi kati ya modem na mtandao wa ndani - katika mfumo wa kompyuta tofauti na "ukuta wa moto" (firewall) iliyosanidiwa juu yake. Kompyuta hii ina miingiliano miwili - na moja "inaonekana" kwenye Mtandao (yaani, imeunganishwa kimwili na modem), na nyingine inakabiliwa na mtandao wa ndani (na imeunganishwa kimwili na swichi, ambayo kompyuta zingine pia zimeunganishwa. kushikamana). Kwa kuwa kompyuta yetu yenye firewall sasa ni kitovu cha kompyuta nyingine kufikia mtandao, inaitwa pia lango(lango la Kiingereza).

Pamoja na shirika kama hilo la mtandao wa ndani, uwezekano wa utapeli umepunguzwa sana - mshambuliaji "huona" lango tu kutoka kwa Mtandao, na firewall imewekwa kwenye lango, na sio rahisi kuibadilisha.

Kuweka iptables kwenye Linux kwa dummies

Kompyuta za mtandao wa ndani zinaweza kuvinjari Mtandao na kubaki salama kiasi.

Kuweka ngome kwa kutumia arno-iptables-firewall configurator

Kupanga firewall ndani GNU/Linux programu inatumika iptables, ambayo, kama sheria, imewekwa mara moja wakati wa kusanikisha usambazaji mwingi. KATIKA Debian GNU/Linux Unaweza kuangalia hii kwa kuiendesha na haki za msimamizi uwezo. Ikiwa ni lazima, tunaweka iptables.

Walakini, usanidi wa mwongozo iptables ni kazi isiyo ya kawaida na inaweza tu kufanywa na wataalamu katika uwanja huo utawala wa mfumo. Kwa hiyo, kusanidi sheria ambazo firewall itafanya kazi, ni bora kutumia configurator maalum. KATIKA Debian GNU/Linux Mpango huu arno-iptables-firewall. Mara baada ya kuzinduliwa, inauliza mfululizo wa maswali, kwa misingi ambayo hutoa sheria za utendakazi wa firewall. iptables.

Andika kwenye koni na haki za mtumiaji mkuu:

#aptitude install arno-iptables-firewall

Mwanzoni mwa usakinishaji, programu itauliza ikiwa tunataka kusanidi firewall nayo. iptables:

Kwanza unahitaji kuonyesha mwisho wa mbele— "kuangalia" kwenye mtandao, i.e. imeunganishwa kwenye modem. Mipangilio ya kiolesura imefafanuliwa katika faili ya usanidi /etc/network/interfaces. Inaweza kuonekana kama hii, kwa mfano:

# Hii ndio kiolesura cha tazama - inaelekeza kwa mashine yetu yenyewe. auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0 # Huu ndio interface ya eth0, ambayo imeunganishwa kwenye mtandao (modemu ya ADSL) # Upekee wake ni kwamba anwani ya IP imepewa kwa nguvu na mtoa huduma, # kwa hiyo. chaguo la dhcp auto eth0 limewekwa iface eth0 inet dhcp # Hiki ndicho kiolesura kinachokabili mtandao wa ndani # Anwani ya mtandao wa ndani itakuwa 192.168.2.0/24 # Kwa madhumuni ya usalama katika mtandao wa ndani, lango lina anwani ya IP tuli - 192.168.2.1.

Kwa hiyo, kuangalia mipangilio /etc/network/interfaces, tunaonyesha kwa kisanidi ngome kuwa kiolesura chetu ni cha nje eth0:

Kwa swali kama tumepewa anwani ya IP kutoka kwa mtoa huduma kwa nguvu(kwa kutumia itifaki ya DHCP), tunajibu kwa uthibitisho:

Swali linalofuata ni ni huduma gani zitatolewa kutoka kwa kompyuta yetu hadi kwa watumiaji wa mtandao wa nje. Hatuna! Hatujishughulishi na upangishaji wa kitaalamu wa wavuti na hatuna nia ya kusambaza habari kwa nje. Tunaacha mstari tupu.

Halafu kuna swali la ikiwa tutatoa huduma zozote Itifaki ya UDP. Pia hapana - na pia tunaacha mstari tupu!

Je! tunahitaji kuwa pinged kutoka kwa ulimwengu wa nje (yaani, kuangalia ikiwa kuna uhusiano na kompyuta ambayo firewall imewekwa)? Kwa upande wetu, hii inakubalika kabisa:

Hii inakamilisha usanidi wa kompyuta tofauti ambayo si lango la mtandao wa ndani. Ikiwa tunapanga kutumia kompyuta kama lango, tunahitaji kujibu maswali machache zaidi. Tunaonyesha interface ambayo lango linakabiliwa na mtandao wa ndani - kwa upande wetu ni eth1, kama ilivyo wazi kutoka /etc/network/interfaces(vinginevyo, kwa kompyuta "mpweke", acha sehemu hii wazi):

Alipoulizwa ikiwa itaruhusu tafsiri ya NAT, i.e. kuelekeza trafiki kutoka kwa Mtandao kupitia lango la mtandao wa ndani na nyuma, tunajibu "ndio" - hii ni moja ya kazi zetu kuu katika kesi hii:

Kisha swali linatokea: ni sehemu gani ya mtandao wa ndani inaweza kupatikana kwa njia ya kuelekeza kwenye mitandao ya nje? Kompyuta zote kwenye mtandao wetu wa ndani zina haki ya kufikia mtandao; onyesha thamani tena 192.168.2.0/24

Hatimaye, tunathibitisha hamu yetu ya kuzindua iptables bila uthibitisho wa ziada kwa upande wetu wa sheria za firewall zinazozalishwa kiotomatiki na kisanidi:

Baada ya hayo, ikiwa kila kitu kilikwenda vizuri, ujumbe unaofanana na ulio chini unaonyeshwa. Sasa itaonekana kila wakati buti za kompyuta za lango na kukujulisha kuwa ngome imezinduliwa kwa ufanisi:

Hati ya Firewall ya Arno's Iptables v1.8.8c ———————————————————————————— Ukaguzi wa usafi umepitishwa…Sawa Imegundua moduli ya IPTABLES…

Inapakia moduli za ziada za IPTABLES: Moduli zote za IPTABLES zimepakiwa! Inasanidi /proc/…. mipangilio: Kuwasha kinga dhidi ya upotovu kwa rp_filter Inawezesha ulinzi wa mafuriko ya SYN kupitia vidakuzi vya SYN Inalemaza uwekaji kumbukumbu wa wapiganaji Inalemaza ukubali wa jumbe za kuelekeza kwingine za ICMP Kuweka upeo wa juu. kiasi cha miunganisho ya wakati mmoja kwa 16384 Inawasha ulinzi dhidi ya pakiti zinazoelekezwa kwa chanzo Kuweka muda wa kuisha kwa upatanisho chaguo-msingi Inawezesha kupunguza uwezo wa DoS'ing Kuweka Chaguo-Msingi TTL=64 Kuzima ECN (Arifa ya Dhahiri ya Msongamano) Inawasha usaidizi kwa jedwali la njia ya Kufuta ya IP /proc/usanidi umekamilika... Sheria za kusafisha kwenye jedwali la kichujio Kuweka sera chaguomsingi (salama) Kwa kutumia “maelezo” ya ngazi ya logi kwa syslogd Kuweka sheria za ngome: ————————————————————————— Kukubali pakiti kutoka kwa kifaa cha karibu cha nyuma Kuwezesha kuweka ukubwa wa juu zaidi wa pakiti kupitia MSS Kuwezesha mangling TOS Uwekaji kumbukumbu za scans siri (uchunguzi wa nmap n.k.) kumewezeshwa Uwekaji kumbukumbu wa pakiti zenye bendera mbaya za TCP umewashwa Uwekaji kumbukumbu wa pakiti BATILI umezimwa Uwekaji kumbukumbu wa pakiti zilizogawanyika umewezeshwa Uwekaji kumbukumbu. ufikiaji kutoka kwa anwani zilizohifadhiwa umewezeshwa Kuweka sheria za kupinga upotovu Kusoma sheria maalum za IPTABLES kutoka /etc/arno-iptables-firewall/custom-rules Inapakia programu-jalizi (mtumiaji) Kuweka sera ya INPUT kwa wavu wa nje (INET): Kuwezesha usaidizi kwa DHCP IP iliyopewa kwenye kiolesura cha nje: eth0 Uwekaji kumbukumbu wa wapangishi waliozuiliwa waziwazi umewezeshwa Uwekaji kumbukumbu wa miunganisho ya ndani iliyokataliwa ya pato Vifurushi HATATAANGALIWA kwa anwani za chanzo za kibinafsi Kuruhusu ulimwengu mzima kutuma maombi ya ICMP(ping) Kuweka kumbukumbu kwa ombi la ICMP lililodondoshwa. (ping) pakiti zimewezeshwa Kuweka kumbukumbu za pakiti nyingine za ICMP zilizodondoshwa kumewezeshwa Kuweka kumbukumbu za uchunguzi wa siri unaowezekana kumewezeshwa Kuweka kumbukumbu kwa majaribio (nyingine) ya kuunganisha kwenye bandari za TCP PRIVILEGED kumewezeshwa Kuweka kumbukumbu kwa majaribio (nyingine) ya muunganisho kwenye bandari za UDP PRIVILEGED kuwezesha Kuingia kwa majaribio (nyingine) ya kuunganisha Bandari za TCP ZISIZO NA UHAKIKI zimewezesha Kuingia kwa majaribio (nyingine) ya kuunganisha kwenye bandari za UDP ZISIZO NA UBAGUZI kumewezeshwa Uwekaji kumbukumbu wa itifaki nyingine za IP (zisizo TCP/UDP/ICMP) majaribio ya muunganisho yamewezeshwa Kuweka kumbukumbu kwa mafuriko ya ICMP kumewezeshwa Kutumia sera ya INET kwenye kiolesura cha nje (INET): eth0 ( bila subnet ya nje imebainishwa) Kuweka sera ya INPUT ya kiolesura cha ndani (LAN): eth1 Kuruhusu maombi ya ICMP(ping) Kuruhusu itifaki zote (nyingine) Kuweka sera ya FORWARD ya kiolesura cha ndani (LAN): eth1 Kuweka kumbukumbu kwa imekataliwa LAN->Miunganisho ya INET FORWARD imewezeshwa Kuweka LAN->sera ya INET: Kuruhusu ICMP-requests(ping) Kuruhusu itifaki zote (nyingine) Kuwezesha kujifanya (NAT) kupitia kiolesura cha nje: eth0 Kuongeza (za ndani) seva pangishi : 192. 168.2.0/24 Usalama UNATEKELEZWA kwa kiolesura cha nje katika msururu wa FORWARD Jan 16 23:53:12 Sheria zote za ngome zinatumika.

Kumbuka 1. Katika hali nyingi, uzinduzi wa firewall uliofanikiwa hutokea baada ya mawasiliano ya kwanza na kisanidi. Ikiwa kitu haifanyi kazi, inashauriwa sana kurudia usanidi kwa kuendesha kisanidi tena na haki za mtumiaji mkuu:

# dpkg-configure arno-iptables-firewall

Hii itaondoa hitilafu za nasibu ambazo zinaweza kutokea wakati wa kujibu maswali kutoka kwa kisanidi wakati wa matumizi yako ya kwanza ya kuwasiliana nayo. Ikiwa hii haisaidii, unaweza kujaribu kusahihisha kwa mikono faili ya usanidi programu arno-iptables-firewall, yaani: /etc/arno-iptables-firewall/firewall.conf. Inaweza kusaidia kutembelea tovuti ya nyumbani ya mtayarishi wa programu hii kwa: http://rocky.eld.leidenuniv.nl/. Ina mwongozo wa habari sana wa kufanya kazi na programu, Maswali Yanayoulizwa Mara kwa Mara na, kwa kuongeza, kuna habari kuhusu matoleo mapya ya programu.

Kumbuka 2. Hatupaswi kusahau hilo hakuna mtu Firewall haiwezi kutoa dhamana ya 100% ya usalama wa uendeshaji wa kompyuta yako kwenye mtandao. Hata hivyo, ulinzi wa firewall hauwezi kupuuzwa. Tunapaswa kufanya kila kitu katika uwezo wetu ili basi kutumaini rehema ya Mungu. "BWANA asipoulinda mji, mlinzi akikesha bure."( Zab. 127:1 ).

Chanzo cha makala

Niliandika chapisho la blogi kuhusu misingi Sheria za Iptables kwa mtumiaji wa uzalishaji ni muda mrefu uliopita, na pengine unapaswa kuisoma na makala kuhusiana na Stateful Firewall.

Lakini pre kernel 2.6.39 (ambayo inajumuisha na unaweza kuitumia kuorodhesha IP ikiwa una zaidi ya 10 kwenye orodha iliyoidhinishwa (ambapo 10 ni ya kiholela)).

Kuweka iptables kwa dummies

Hali ya mpini wa kwanza tunajua tunataka kukubali au kufuta, na violesura.

Ikiwa unataka tu kuruhusu IP pekee, hakuna jimbo

kuna uwezekano mkubwa utakumbana na matatizo yanayohusiana na hili na ninapendekeza utumie hali hiyo ili kurahisisha maisha yako. Kwa mfano, sio kusuluhisha na hakika itasababisha shida kwa programu fulani.

Utangulizi na historia

Kichujio cha mtandao- ngome (yajulikanayo kama firewall, aka firewall, aka firewall...) imejengwa kwenye kinu cha Linux tangu toleo la 2.4. Netfilter inadhibitiwa na shirika iptables(Kwa IPv6 - ip6tables). Kabla netfilter/iptables ilikuwa Ipchains, ambayo ilijumuishwa kwenye kokwa za Linux 2.2. Kabla ya ipchains katika Linux kulikuwa na kinachojulikana ipfw (IPV4 firewall), iliyosafirishwa kutoka BSD. Huduma ya usimamizi - ipfwadm. Mradi wa netfilter/iptables ulianzishwa mwaka wa 1998. Mwandishi ni Rusty Russell (pia aliongoza maendeleo ya zamani). Mnamo 1999, Timu ya Netfilter Core (iliyofupishwa kama coreteam) iliundwa. Firewall iliyotengenezwa ilipewa jina rasmi la netfilter. Mnamo Agosti 2003, Harald Welte alikua mkuu wa coreteam.

Miradi ipchains Na ipfwadm ilibadilisha utendakazi wa safu ya itifaki ya kernel ya Linux, tangu kabla ya ujio wa kichujio cha mtandao Hakukuwa na utoaji katika usanifu wa kernel wa kuongeza moduli za usimamizi wa kifurushi. iptables alishika wazo kuu ipfwadm- orodha ya sheria inayojumuisha vigezo na hatua ambayo inafanywa ikiwa pakiti inakidhi vigezo. KATIKA ipchains dhana mpya ilianzishwa - uwezo wa kuunda minyororo mpya ya sheria na pakiti za uhamisho kati ya minyororo, na katika iptables dhana hiyo ilipanuliwa hadi meza nne (katika netfilter ya kisasa - zaidi ya nne), kuweka mipaka ya minyororo ya sheria kwa kazi: kuchuja, NAT, na urekebishaji wa pakiti. Pia iptables kupanuliwa Vipengele vya Linux katika eneo la ugunduzi wa serikali, kuruhusu uundaji wa ngome zinazofanya kazi katika kiwango cha kikao.

Usanifu wa Netfilter/iptables

Mahitaji ()

Kama ilivyoelezwa hapo juu, ili Netfilter ifanye kazi, unahitaji toleo la kernel 2.6 (au angalau 2.3.15). Kwa kuongeza, ikiwa ni lazima, mipangilio CONFIG_NETFILTER, CONFIG_IP_NF_IPTABLES, CONFIG_IP_NF_FILTER ( jedwali la kichujio), CONFIG_IP_NF_NAT (jedwali la nat), CONFIG_BRIDGE_NETFILTER, pamoja na moduli nyingi za ziada: CONFIG_IP_NF_CONNTRACK (ufuatiliaji wa muunganisho), CONFIG_IP_NF_FTP (moduli ya usaidizi wa ufuatiliaji wa muunganisho wa FTP), CONFIG_IP_NF_CONNTRACK (ufuatiliaji wa muunganisho), CONFIG_IP_NFdiKPORT_MATCH TOS , TCPMSS, STATE, NAJISI, MMILIKI), CONFIG_IP_NF_TARGET_* (vitendo vya ziada katika sheria: REJECT, MASQUERADE, REDIRECT, LOG, TCPMSS), CONFIG_IP_NF_COMPAT_IPCHAINS kwa uoanifu na ipGGEBRID_CONFINCEBRID_CONFIGLES, CONFIG_NF_COMPAT_IPCHAINS kwa kufanya kazi katika hali ya daraja, CONFIG_IP_NF_* nyingine na CONFIG_IP6_NF_ *. Pia ni muhimu kubainisha CONFIG_PACKET.

Kama inavyoonekana, nat meza Na manyoya inaweza kurekebisha mpokeaji au mtumaji wa pakiti ya mtandao. Hii ndiyo sababu pakiti ya mtandao inaangaliwa mara kadhaa dhidi ya jedwali la uelekezaji.

Utaratibu wa kutambua hali (udhibiti)

Hapo juu katika maandishi, wazo la "ufafanuzi wa majimbo" lilitajwa mara kadhaa; inastahili mada tofauti ya majadiliano, lakini hata hivyo, nitagusa kwa ufupi suala hili katika chapisho la sasa. Kwa ujumla, utaratibu wa kuamua majimbo (aka mashine ya serikali, aka conn kipengele wimbo hii, aka contrack) ni sehemu ya kichujio cha pakiti na hukuruhusu kubainisha ni muunganisho/kao ​​gani pakiti ni ya. Contrack huchanganua hali ya vifurushi vyote isipokuwa vile vilivyowekwa alama kama NOTRACK katika meza mbichi . Kulingana na hali hii, kifurushi ni cha imedhamiriwa mpya uhusiano (jimbo MPYA), tayari imara uhusiano (jimbo IMEANZISHWA), ziada kwa ile iliyopo tayari ( INAYOHUSIANA), au kwa" kwa mwingine" (isiyoonekana) muunganisho (jimbo BATILI) Hali ya pakiti imedhamiriwa kwa kuchambua vichwa vya pakiti iliyopitishwa ya TCP. moduli ya kuingiliana hukuruhusu kutekeleza firewall ya kiwango cha kikao (cha tano). Ili kudhibiti utaratibu huu, tumia matumizi contrack, pamoja na parameta ya matumizi ya iptables: -m kinyume au -m jimbo(ya kizamani). contrack huhifadhi majimbo ya miunganisho ya sasa kwenye kernel. Zinaweza kutazamwa kwenye faili /proc/net/nf_contrack (au /proc/net/ip_conntrack) .

Ili mawazo yangu yasigeuke kuwa mush, nadhani hii habari fupi nyenzo zaidi itakuwa ya kutosha kuelewa.

Kusimamia sheria za uchujaji wa mtandao wa Netfilter (kwa kutumia amri ya iptables)

matumizi ya iptables ni kiolesura cha kudhibiti firewall kichujio cha mtandao. Amri hii hukuruhusu kuhariri sheria za jedwali, meza na minyororo. Kama nilivyosema tayari - kila kanuni ni rekodi/kamba iliyo na uteuzi wa pakiti za mtandao na pakiti zinazolingana na sheria fulani. amri ya iptables Inahitaji haki za mizizi kufanya kazi.

Kwa ujumla, muundo wa amri ni kama ifuatavyo:

Iptables [-t ]

Vigezo vyote katika mabano ya mraba - hiari. Chaguo-msingi ni jedwali la kichujio, ikiwa unahitaji kutaja meza nyingine, basi unapaswa kutumia ufunguo -t ikionyesha jina. Baada ya jina la jedwali kuonyeshwa ambalo linafafanua kitendo ( Kwa mfano: ingiza sheria, au ongeza sheria hadi mwisho wa mlolongo, au futa sheria). huweka vigezo vya uteuzi. inaonyesha ni hatua gani inapaswa kufanywa ikiwa vigezo vya uteuzi katika kanuni zinalingana ( Kwa mfano: kupitisha pakiti kwenye mlolongo mwingine wa sheria, "dondosha" pakiti, toa ujumbe wa kosa kwa chanzo ...).

Chini ni amri na vigezo vya matumizi ya iptables:

Kigezo Maelezo Mfano
Timu
--ongeza (-A) Ongeza sheria iliyoainishwa kwenye MWISHO wa orodha kwenye mlolongo ulioainishwa na jedwali maalum. iptables -A kigezo cha MBELE -j kitendo
--futa (-D) Huondoa sheria iliyobainishwa na nambari au sheria. Mfano wa kwanza unafuta sheria zote na nambari 10,12 katika minyororo yote, katika meza za chujio, mfano wa pili unafuta sheria maalum kutoka kwa meza ya mangle katika mlolongo wa PREROUTING. iptables -D 10.12
iptables -t mangle -D PREROUTING vigezo -j kitendo
--badilisha jina-mnyororo (-E) Badilisha jina la mnyororo. iptables -E OLD_CHAIN ​​​​NEW_CHAIN
--futa (-F) Hufuta sheria zote za jedwali la sasa. Kwa pakiti zote zinazohusiana na viunganisho vilivyoanzishwa tayari, tumia kitendo cha mwisho KUBALI - ruka iptables -F
--ingiza (-I) Huweka kanuni iliyobainishwa katika eneo lililobainishwa na nambari. iptables -NIMEPELEKA 5 vigezo -j kitendo
--orodha (kifupi -L) Tazama sheria zilizopo (bila kutaja wazi meza - meza ya chujio ya minyororo yote inaonyeshwa). iptables -L
--sera (-P) Huweka sera chaguo-msingi kwa msururu uliotolewa. iptables -t mangle -P PREROUTING DROP
--badilisha (-R) Hubadilisha kanuni iliyobainishwa na nambari na ile iliyoainishwa katika vigezo. iptables -R POSROUTING 7 | vigezo -j kitendo
--futa-mnyororo (-X) Ondoa minyororo ZOTE zilizoundwa kwa mikono (weka tu INPUT, OUTPUT, FORWARD, PREROUTING na POSTROUTING ya kawaida pekee). iptables -X
--sifuri (-Z) Huweka upya vihesabio vya data inayotumwa kwenye mnyororo. iptables -Z INPUT
Chaguo
--nambari (-n) Haisuluhishi anwani na itifaki wakati wa kutoa.
--line-nambari Bainisha nambari za sheria katika pato (inaweza kutumika kwa kushirikiana na -L). iptables -L --line-nambari
--msaada (-h) tungekuwa wapi bila yeye?
-t meza Hubainisha jina la jedwali ambalo kitendo kinahitaji kutekelezwa. Mfano huweka upya jedwali la nat katika minyororo yote. iptables -t nat -F
--kitenzi (-v) Hitimisho la kina. iptables -L -v

Vigezo (vigezo) vya kuchagua pakiti za mtandao za amri ya iptables

Vigezo vya kuchagua pakiti za mtandao zimegawanywa kwa siri katika vikundi kadhaa: Vigezo vya jumla, vigezo vilivyo wazi, vigezo wazi. inaweza kutumika katika sheria yoyote, hazitegemei aina ya itifaki na hazihitaji kupakia moduli za ugani. (Ningeiita yasiyo ya jumla), vigezo hivyo ambavyo vimepakiwa kwa njia isiyo wazi na kupatikana, kwa mfano, wakati wa kubainisha kigezo cha jumla. --protocol tcp|udp|icmp. Kabla ya matumizi, unahitaji kuunganisha upanuzi wa ziada(hizi ni za kipekee programu-jalizi kwa kichujio cha mtandao). Viendelezi vya ziada kubeba kwa kutumia parameter -m au --mechi. Kwa hivyo kwa mfano, ikiwa tutatumia vigezo jimbo, basi lazima tueleze wazi hii katika mstari wa sheria: -m jimbo upande wa kushoto wa kigezo kilichotumiwa. Tofauti kati ya dhahiri Na isiyo ya jumla Vigezo ni kwamba zile zilizo wazi zinahitaji kupakiwa kwa uwazi, na zile zisizo wazi hupakiwa kiotomatiki.

Inaweza kutumika katika vigezo vyote ishara! kabla ya thamani ya kigezo. Hii itamaanisha kuwa sheria hii inashughulikia pakiti zote ambazo hailingani na parameter hii. Kwa mfano: kigezo --itifaki! tcp itamaanisha kwamba pakiti zote hizo Sivyo itifaki za TCP ziko chini ya sheria. Hata hivyo matoleo ya hivi karibuni iptables (haswa 1.4.3.2 na zaidi) haziauni tena sintaksia hii na zinahitaji matumizi ya --itifaki! tcp, A ! --itifaki tcp, kutoa makosa yafuatayo:

Kutumia ukanushaji uliowekwa ndani (`--chaguo ! this`) umeacha kutumika kwa ajili ya kuongezwa nafasi (`! --chaguo hili`).

Chini hutolewa kwa fomu ya meza Vigezo vya kawaida vya uteuzi wa pakiti:

Kigezo Maelezo Mfano
Vigezo vya kawaida
--itifaki
(kifupi -p)
Inafafanua itifaki. Chaguzi tcp, udp, icmp, itifaki yote au nyingine yoyote iliyofafanuliwa katika /etc/protocols iptables -A INPUT -p tcp
--chanzo
(-s, --src)
Anwani ya IP ya chanzo cha pakiti. Inaweza kufafanuliwa kwa njia kadhaa:
  • Mpangishi mmoja: host.domain.tld, au anwani ya IP: 10.10.10.3
  • Bwawa la anwani (subnet): 10.10.10.3/24 au 10.10.10.3/255.255.255.0

Inapendekezwa sana kutotumia majina ya vikoa ambayo yanahitaji hoja za DNS kwa utatuzi, kwa kuwa netfilter DNS inaweza isifanye kazi ipasavyo wakati wa hatua ya usanidi. Pia, kumbuka kuwa majina yanatatuliwa mara moja tu - wakati wa kuongeza sheria kwenye mnyororo. Baadaye, anwani ya IP inayolingana na jina hili inaweza kubadilika, lakini hii haitaathiri sheria zilizorekodiwa kwa njia yoyote (zitabaki. anwani ya zamani) Ukibainisha Jina la kikoa, ambayo hutatua kwa anwani kadhaa za IP, sheria tofauti itaongezwa kwa kila anwani.

iptables -A PEMBEJEO -s 10.10.10.3
--marudio
(-d)
Anwani ya IP ya marudio ya pakiti. Inaweza kufafanuliwa kwa njia kadhaa (tazama --source). iptables -A INPUT --lengwa 192.168.1.0/24
--katika-kiolesura
(-i)
Inabainisha kiolesura ambacho pakiti ilifika. Inafaa kwa NAT na mashine zilizo na miingiliano mingi ya mtandao. Inatumika katika minyororo ya INPUT, FORWARD na PREROUTING. Inawezekana kutumia ishara "+", basi inamaanisha matumizi ya miingiliano yote kuanzia na jina + (kwa mfano, eth+ - miingiliano yote ya eth). iptables -t nat -A PREROUTING --in-interface eth0
--nje-interface
(-o)
Inafafanua kiolesura ambacho pakiti itaondoka. Inafaa kwa NAT na mashine zilizo na miingiliano mingi ya mtandao. Inatumika katika minyororo ya OUTPUT, FORWARD na POSTROUTING. Inawezekana kutumia ishara "+". iptables -t nat -A POSTROUTING --in-interface eth1
Vigezo dhahiri (visivyoshirikiwa).
-p proto -h kuonyesha usaidizi kwenye vigezo dhabiti vya itifaki ya proto. iptables -p icmp -h
--chanzo-bandari
(--michezo)
Lango chanzo, inawezekana tu kwa --protocol tcp, au --protocol udp itifaki iptables -A INPUT --protocol tcp --source-port 25
--bandari-mwisho
(--dport)
Mlango wa kulengwa, inawezekana tu kwa --protocol tcp, au --protemocol udp itifaki iptables -A INPUT --protocol udp --lengo-bandari 67
Vigezo vya Wazi
-m jimbo --state (iliyoacha kutumika)
aka
-m contrack --ctstate

Hali ya muunganisho. Chaguzi zinazopatikana:

  • MPYA(Vifurushi vyote vinaanzisha muunganisho mpya)
  • IMEANZISHWA(Pakiti zote za muunganisho ulioanzishwa)
  • INAYOHUSIANA(Vifurushi ambavyo si vya muunganisho ulioanzishwa, lakini vinahusishwa nayo. Kwa mfano - FTP katika hali amilifu hutumia miunganisho tofauti kwa uhamisho wa data. Viunganisho hivi vinahusiana.)
  • BATILI(Pakiti ambazo haziwezi kutambuliwa kwa sababu moja au nyingine. Kwa mfano, hitilafu za ICMP ambazo si za miunganisho iliyopo)
  • n.k. (maelezo zaidi katika hati)
iptables -A INPUT -m state --state NEW,ESTABLISHEDiptables -A INPUT -m conntrack --ctstate MPYA,IMEStawishwa
-m mac --mac-source Seti Anwani ya MAC nodi ya mtandao ambayo ilituma pakiti. Anwani ya MAC lazima ibainishwe katika fomu XX:XX:XX:XX:XX:XX. -m mac --mac-source 00:00:00:00:00:0

Vitendo kwenye vifurushi

Kichwa hiki kingefafanuliwa kwa usahihi zaidi kama " Vitendo kwenye vifurushi vinavyolingana na vigezo vya uteuzi". Kwa hivyo, kukamilisha yoyote vitendo kwenye vifurushi, unahitaji kutaja ufunguo -j (--ruka) na kuonyesha ni hatua gani mahususi za kuchukua.

Vitendo kwenye vifurushi vinaweza kuchukua maadili yafuatayo:

  • KUBALI- pakiti huacha mlolongo huu na kuhamishiwa kwa ijayo (literally - KUBALI).
  • DONDOSHA- Tupa pakiti ambayo inakidhi hali hiyo, wakati pakiti haijapitishwa kwa meza / minyororo mingine.
  • KATAA- Tupa pakiti kwa kutuma ujumbe wa ICMP kwa mtumaji, wakati pakiti haijasambazwa kwa jedwali/minyororo mingine.
  • RUDISHA- rudisha pakiti kwenye mlolongo uliopita na uendelee kifungu chake kuanzia sheria inayofuata.
  • SNAT chanzo katika kifurushi. Inaweza kutumika tu katika minyororo POSTROUTING na OUTPUT katika meza za nat.
  • DNAT- tumia tafsiri ya anwani miadi katika kifurushi. Inaweza kutumika katika mnyororo PREROUTING kwenye meza ya nat. (katika hali za kipekee - kwenye mnyororo wa OUTPUT)
  • LOG- ingia pakiti (iliyotumwa kwa daemon) na uifanye na sheria zingine.
  • MASQUERADE- kutumika badala yake SNAT ikiwa kuna uhusiano na IP yenye nguvu (inaruhusiwa kuonyesha tu kwenye mlolongo KUWAHISHA nat meza).
  • MARK- kutumika kuweka lebo kwenye pakiti na kupitishwa kwa sheria zaidi za usindikaji.
  • na nk.

Mbali na vitendo hivi, kuna vingine vinavyoweza kupatikana katika nyaraka (labda hivi karibuni nitaongeza makala ninapoendeleza mada). Vitendo vingine vina vigezo vya ziada.

Jedwali hapa chini linatoa mifano na maelezo ya vigezo vya ziada:

Kigezo Maelezo Mfano
DNAT (Tafsiri ya Anwani Lengwa ya Mtandao)
--kwenye-lengwa inabainisha ni anwani ipi ya IP inapaswa kubadilishwa kuwa anwani lengwa. Katika mfano, katika pakiti zote za itifaki za tcp zinazofika kwa anwani 1.2.3.4, anwani iliyopewa itabadilishwa na 4.3.2.1. iptables -t nat -A PREROUTING -p tcp -d 1.2.3.4 -j DNAT --kwenda-lengwa 4.3.2.1
LOG
--kiwango-logi Inatumika kuweka kiwango cha ukataji miti (). Katika mfano imewekwa kiwango cha juu kuweka kumbukumbu kwa pakiti zote za tcp kwenye jedwali la kichujio la mnyororo wa FORWARD. iptables -A FORWARD -p tcp -j LOG --log-level utatuzi
--logi-kiambishi awali Hubainisha maandishi (kiambishi awali) ambayo yatatangulia ujumbe wote iptables. (inafaa sana baadaye) kiambishi awali kinaweza kuwa na hadi herufi 29, ikijumuisha nafasi. Katika mfano, pakiti zote za tcp kwenye jedwali la kichujio cha mnyororo wa INPUT na kiambishi awali cha kichujio cha INRUT hutumwa kwa syslog. iptables -A INPUT -p tcp -j LOG --log-kiambishi awali "INRUT-filter"
--logi-ip-chaguo Inakuruhusu kuingia habari mbalimbali kutoka kwa kichwa cha pakiti ya IP. iptables -A FORWARD -p tcp -j LOG --log-ip-chaguzi
na nk...

Hii inahitimisha nadharia kuhusu kichujio cha mtandao cha netfilter/iptables. Katika makala inayofuata nitatoa mifano ya vitendo kuelewa nadharia hii.

Muhtasari

Katika makala hii tulichunguza kwa ufupi sana dhana za kimsingi mlinzi wa kuongezeka katika Linux. Kwa hivyo, mfumo mdogo wa netfilter/iptables ni sehemu ya kernel ya Linux na hutumika kupanga mipango mbalimbali ya kuchuja na kuendesha pakiti za mtandao. Katika kesi hii, kila pakiti hupita kutoka kwa interface ya mtandao ambayo ilifika na zaidi kwa njia fulani ya mlolongo, kulingana na ikiwa imekusudiwa kwa mfumo wa ndani au "isiyo ya ndani" moja. Kila mlolongo una seti ya meza zilizo na seti ya sheria zinazofuatana. Kila sheria ina kigezo/vigezo fulani vya kuchagua pakiti ya mtandao na kitendo fulani na kifurushi kinachotimiza vigezo hivi. Kwa mujibu wa sheria zilizotolewa, hatua yoyote inaweza kufanywa kwenye pakiti (Kwa mfano, uhamisho kwenye mlolongo unaofuata / mwingine, upya wa pakiti, urekebishaji wa yaliyomo au vichwa, nk). Kila mlolongo na kila meza ina madhumuni yake mwenyewe, utendaji na mahali katika njia ya mfuko. Kwa mfano, kuchuja pakiti, meza ya chujio hutumiwa, ambayo iko katika minyororo mitatu ya kawaida na inaweza kuwa katika minyororo, imefafanuliwa na mtumiaji. Njia ya pakiti huishia kwenye kiolesura cha mtandao unaotoka au kwa kuwasilisha kwa mchakato/programu ya ndani.

Fasihi

Habari nyingi za kupendeza kwa Kirusi zimo hapa:

  • http://www.opennet.ru/docs/RUS/iptables/
  • http://ru.wikibooks.org/wiki/Iptables

Nyenzo za kina zaidi zinapatikana katika lugha ya ubepari hapa:

  • http://www.frozentux.net/documents/ipsysctl-tutorial/
  • http://www.netfilter.org/documentation/index.html

Hongera sana, McSim!