ot Plamen Popow(28-01-2000)

reiting (1)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Tozi suwet e dobawen sus suglasieto na awtora mu Plamen Popow
Originalniata statiq se namira na adres http://www.qsl.net/lz1plp/



Tuk mozhete da vidite dokumenta v chist tekst.

IPCHAINS-HOWTO_BG 1.01

    Tuk po printsip triabva da ima zabelezhki za litsenza i za tova, che avtora ne nosi nikakva otgovornost, no az shte propusna tova poradi nenuzhnost - na koito mu triabva tova, mozhe spokoino da go prochete v originalniia IPCHAINS-HOWTO. Tozi dokument predstavliava pochiti pulen prevod na originalniia.

    Kakvo e tova ipchains.

    Linux ipchains tova e zamiana na ipfwadm (koito beshe portnat ot BSD). Za rabota s nego na vas vi triabva iadro po-goliamo ot 2.1.102.

    Zashto da se preminava kum ipchains?

    V starite versii na Linux fairwall ne raboteshe s fragmenti na paketite, imashe 32x bitovi broiachi ( na Intel-protsesori), ne davashe da se ukazvat tipovete na protokolite, razlichni ot TCP, UDP i ICMP, ne davashe da se praviat golemi izmeneniia avtomaticheski, niamashe inversni pravila i beshe mnogo tezhuk za upravlenie.

    Malko informatsiia.

    TSeliia trafik v mrezhata se prashta vuv vid na paketi. V nachaloto na vseki paket ima informatsiia za tova ot kude idva, tip na paketa i drugi podobni detaili. Nachaloto na paketa se naricha zaglavie (header), ostanalata chast na paketa obiknovenno se naricha tialo (body).
    Niakoi protokoli kato TCP, koito se izpolzvat za web, mail i drugi, izpolzvat poniatieto "suedinenie" - predi kakuvto i da e paket s danni da bude praten na poluchatelia, minavat niakoi nastroivashti paketi (sus spetsialni zaglaviia) sus suobshteniia ot tipa na "az iskam da napravia suedinenie", "dobre", "blagodaria pravia go". I samo sled tova shte trugnat normalnite paketi s informatsiia.
    Filtur na paketi - tova e chast ot programnoto osiguriavane, koiato gleda zaglaviiata na paketite i ili go puska po-natatuk ili zabraniava negovoto po-natatushno dvizhenie. Ima izvestno razlichie mezhdu poniatiiata "zabrana" (deny) i "otkaz" (reject). "Zabrana" - tova e kogato paket ot izprashtacha se othvurlia ot sistemata taka, che izprashtacha misli, che paketa ne e pristignal do poluchatelia, a "Otkaz" - tova e kogato izprashtacha se izvestiava za tova, che negoviia paket e bil otkazan ot poluchatelia.

    Zashto voobshte ni e nuzhen filtur na paketite?

    Upravlenie.
    Kogato vashiia Linux e vklyuchen kum razlichni mrezhi (i kum internet v tova chislo), vie triabva da imate vuzmozhnost da upravliavate, s koito i da e potok ot danni, minavashti prez vashata sistema. Naprimer, vie triabva da budete sigurni, che koito i da e paket ot vutreshnata mrezha, koito mozhe da sudurzha vazhna informatsiia niama da otide v prostorite na internet.

    Bezopasnost.
    Kogato Linux stoi edin na edin s haosa na internet i v dobavka sluzhi za most kum internet za mashinite ot vutreshnata mrezha, vie triabva da budete sigurni koi i kude hodi prez mosta. Naprimer vie iskate da se razhodite v internet, no ne iskate vashata mashina da bude survur (a vie sigurni li ste, che vsichkite vi potrebiteli imat paroli i izlishnite servizi sa zatvoreni ?). S nalichieto na firewall tezi problemi se reshavat burzo i lesno.

    Hitrost ;-)
    Po niakoga niakoia nepravilno nastroena mashina v lokalnata mrezha ili potrebitel, koito poradi neznanie ili poradi zul umisul zapochnat da prashtat vuv vunshnata mrezha razlichni paketi (zapochvaiki ot nyukove i zavurshvaiki s paketi ot troiantsi). Ta taka filtura na paketite, shte vi pozvoli da izbegnete takiva sluchai i shte vi uvedomi, kakvo se e sluchilo avtomaticheski i niama da vi kara da sidite i da kontrolirate trafika ruchno.

    Kak da se instalira filtur na paketi?
    Na vas vi e nuzhno iadro, koeto e kompilirano zaedno s filtur na paketi. Poglednete za faila /proc/net/ip_fwchains - ako go vizhdate to togava vsichko e nared. Ako ne go vizhdate, to togava na vas vi e nuzhno da vzemete iadro 2.1.102 ili po-goliamo. Ako vasheto iadro e ot seriiata 2.0, to togava vi e neobhodim spetsialen patch. Prekonfiguriraite si iadroto taka, che v nego da sa vklyucheni optsiite IP firewalling. V /usr/src/linux/.config za iadrata 2.1 i 2.2 e neobhodimo da budat vklyucheni slednite optsii:
    CONFIG_FIREWALL=y
    CONFIG_IP_FIREWALL=y
Taka sushto triabva da si svalite ipchains, koiato shte upravliava filtura na paketi v iadroto. Vsichki posledni distributivi na Linux, koito sa osnovani na iadrata 2.1 i 2.2 imat ipchains.

    Kak paketite minavat prez filtrite.
    Qdroto startira s tri spisuka na pravila, tezi pravila se narichat pravila na fairwall ili prosto verigi (chains). Tezi tri verigi se narichat input (vhodna), output (izhodna) i forward (preprashtane). Kogato paketa idva (da kazhem ot mrezhovata karta), iadroto izpolzva vhodnata veriga za da opredeli dali mozhe paketa da se predvizhi po-natatuk. Ako paketa mine tazi proverka to toi produlzhava svoeto dvizhenie (tova sushto taka se naricha routing). Ako paketa e prednaznachen za druga mashina to iadroto preglezhda verigata preprashtane (forward). I na kraia predi paketa da izlezne, iadroto gleda izhodnata veriga.
    Veriga - tova e spisuk ot pravila. Vsiako pravilo izglezhda taka "ako zaglavieto na paketa sudurzha tova i tova, to pravi s paketa tova". Ako praviloto ne suotvetstva na zaglavieto na paketa, iadroto gleda na sledvashtoto pravilo vuv verigata. I na karaia, ako paketa e minal tsialata veriga ot pravila i nito edno pravilo ne e suotvetstvalo, iadroto gleda na pravilata ot verigata. V zashtitenite sistemi paketa obiknovenno se otkazva ili zabraniava.

    Posledovatelno opisanie na vseki stadii.
    Proverka na kontrolnata suma (Checksum) - iadroto proveriava paketa za tsialost i korektnost na zaglaviiata. Ako paketa ne otgovaria na tezi usloviia toi se otkazva.
    Naznachenie (Sanity) - iadroto proveriava za kogo e prednaznachen paket, zashto i kude. Mnogo ot paketite se otsiavat imenno na tozi stadii, no prioriteta na "vhodena" (input) veriga e po-gore.

    Vhodna veriga (input) - tova e purvata veriga, s pomoshta na koiato filtura otseiva paketite. Ako reshenieto na tazi veriga ne e "otkaz" (REJECT) ili "zabrana" (DENY), to togava paketa produlzhava svoeto dvizhenie.
    Demaskarad (Demasquaerade) - ako paketa - tova e otgovor na predishen maskaraden paket, toi se demaskiradira i vednaga se puska na vhodnata veriga. Ako vie ne izpolzvate maskarading, vie mozhete misleno da iztriete tova miasto ot risunkata.
    Routing (routing) - poleto "poluchatel" na paketa se analizira chastta na koda, koiato e otvetstvena za tova kude shte otide po-natatuk - za lokalna obrabotka ili shte bude prepraten kum druga mashina (vizhte verigata "preprashtane" (forward)).
    Lokalna obrabotka (local) - zadacha, pusnata na lokalnata mashina mozhe da poluchi paketa samo sled kato toi mine routinga i mozhe da prashta paketi v otgovor (koito, shte minat prez izhodnata veriga i sled tova prez vhodnata veriga na interfeisa "lo", ako paketa e prednaznachen za protses na tazi mashina ili shte izlezne prez izhodnata veriga).
    Ako paketa ne e suzdaden ot zadacha na lokalnata mashina, to se proveriava verigata "preprashtane" (forward), inache paketa otiva napravo na "izhodnata" (output) veriga.
    Verigata "preprashtane" (forward) - tazi vruzka minavat vsichki paketi, koito sa prednaznacheni za tranzitno preminavane prez sistemata.
    "Izhodna" (output) veriga - prez tazi veriga minavat vsichki paketi, koito se izprashtat ot tazi mashina.

    Izpolzvane na ipchains.

    Purvo proverete kakva versiia na ipchains imate na mashinata si.
# ipchains --version
ipchains 1.3.5, 26-June-1998

    Tozi dokument se otnasia imenno za tazi versiia na programata.

    ipchains ima man-dokumentatsiia, no ako vi e neohoimo da razberete poveche za putishtata na priminavane na paketite, vie mozhete da proverite rukovodstvoto za programirane na interfeisi (man 4 ipfw) ili fail net/ipv4/ipfw.c v sorsovete na iadroto, te sa dostatuchno kompetentni po tozi vupros ;-).

    Ima niakolko razlichni neshta, koito mogat da e praviat s verigite. Purvo - tova e operirane s tseli verigi. Qdroto startira s tri vgradeni verigi - "vhodna", "izhodna", preprashtane" (input, output, forward) - tiah vie ne mozhete da mahnete. Po dolu e pokazano kakvo mozhe da se pravi.

    Suzdavane na nova veriga (-N)
    Mahane na prazna veriga (-X)
    Smiana na pravilata za vgradeni verigi (-P)
    Spisuk na vsichki pravila na verigata (-L)
    Izchistvane na verigata ot pravila (-F)
    Iztrivane na broiachite na paketi i baiti vuv vsichki pravila na verigite (-Z)

    Ima niakolko nachina za manipulirane na pravilata vutre v verigata.

    Dobaviane na novo pravilo kum verigata (-A)
    Da se vmukne novo pravilo na ukazana pozitsiia vuv verigata (-I)
    Da se zameni pravilo v ukazana pozitsiia vuv verigata (-R)
    Da se mahne pravilo ot ukazana pozitsiia (-D)
    Da se mahne purvoto pravilo, koeto srabotva vuv verigata (-D)

    Ima oshte niakolko operatsii za maskarading.

    Da se pokazhat tekushtite suedineniia chrez maskarading (-M -L)
    Da se ustanoviat taim-auti za maskaradinga (-M -S)

    V kraia ima komandi, koito vi pozvoliavat da proverite, kakvo se e sluchilo s daden paket, ako toi trugne prez ukazanata veriga.

    Operatsii s edno pravilo.

    Tova sa osnovni operatsii v ipchains - manipulatsiia s pravilata. Obiknovenno, vie mozhete da izprobvate komandite dobavi (-A) i iztrii (-D) pravilo. Analogichno i s komandite vmukni (-I) i zameni (-R) - sintaksisa im e prakticheski ednakuv.
    Vsiako pravilo ustanoviava spisuk s usloviia, koito paketa triabva da ima i kakvo da se pravi s nego ako usloviiata suvpadat. Za primer daite da zabranim vsichki ICMP paketi, koito idvat ot adresa 127.0.0.1. V nashiia sluchai protokola triabva da bude ICMP i adres na iztochnika 127.0.0.1 - za takiva usloviia "zabrani".
    Adres 127.0.0.1 - tova e interfeis-tapa, koito go ima dazhe, ako vie niamate realni merezhovi suedineniia. Vie mozhete da izpolzvate programata ping za generirane na tezi paketi (tia prosto prashta paketi ot tipa na ICMP 8 (echo request), na koeto obiknovenno vsichki dobronamereni sistemi obiknovenno otgovariat s paketi ot tipa ICMP 0 (echo reply)). Tova shte ni triabva na nas za testvane.

# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms
# ipchains -A input -s 127.0.0.1 -p icmp -j DENY
# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
#

    Vie vizhdate, che purviia ping mina uspeshno (optsiiata "-c 1 kazva na ping-a, chetriabva da prati samo edin paket).

    Sled tova nie dobavihme (-A) vuv "vhodnata" veriga pravilo, koeto ukazva na tova, che paketite 127.0.0.1 (-s 127.0.0.1) s protokol ICMP (-p ICMP) triabva da se zabraniavat (-j DENY).

    Sled tova nie proverihme nasheto pravilo, izpolzvaiki vtoriia ping. Toi malko pochaka predi da se predade, ochakvaiki paket s otgovor, koito nikoga niama da doide.

    Ne mozhem da mahnem praviloto po dva nachina. Tui kato znaem che imame samo edno pravilo, nie mozhem da izpolzvame premahvane na pravilo po nomer, eto taka:

#ipchains -D input 1

    Tova maha pravilo nomer 1 ot izhodnata veriga.
    Vtoriia nachin - tova e ogledalno izobrazhenie na komandata "dobavi", no sus zamiana na -A s -D. Tozi nachin e polezen kogato vie imate pulna s pravila veriga i ne iskate da smiatate koe po nomer e tova pravilo. V tozi sluchai mozhete da napravite slednoto:

#ipchains -D input -s 127.0.0.1 -p icmp -j DENY

    Sintaksisa sled komandata (-D) triabva da suvpada sus sintaksisa na komandata -A (ili -I i -R), s koiato i beshe zadadeno tova pravilo. Ako ima niakolko ednakvi pravila v razlichni verigi samo purvoto pravilo shte bude mahnato.

    Spetsifikatsiia za filtrite.

    Nie shte izpolzvame -p za posochim na protokola i -s za posochim na adresa na iztochnika, no ima i drugi optsii, koito sochat drugi optsii na paketite. Te shte budat opisani po-dolu.

    Posochvane na ip-adresite na iztochnitsite i poluchatelite.

    ip-adresite na iztochnitsite (-s) i na poluchatelite (-d) mogat da se posochat po 4-ri nachina. Obiknovenno tiah gi opisvat s pulnite imena, naprimer "localhost" ili "linux.org". Vtoriia nachin - posochvane na pulniia ip-adres, naprimer 127.0.0.1. Tretiia i chetvurti nachini davat vuzmozhnost da se posochvat grupi ot ip adresi, naprimer "62.76.19.0/24" ili "62.76.19.0/255.255.255.0". I dvata varianta sochat kum adrsite ot 62.76.19.0 vklyuchitelno do 62.76.19.255. TSifrite sled "/" sochat kakva chast ot ip adresa shte bude znachima. Po podrazbirane se priema "/32" ili "/255.255.255.255" (vlizat vsichki ip adresi). Za posochvane, na koito i da e ip adres e vuzmozhno izolzvaneto na "/0", naprimer

#ipchains -A input -s 0/0 -j DENY

Tova shte predizvika sushtiia efekt, kakto i bez izpolzvaneto na -s voobshte.
 

    Posochvane na inversiia.

    Mnogo flagove, vklyuchvaiki -s i -d mogat da imat treti argument vuv vida na "!", za izchislenie na adresite, koito NE popadat v posochvaneto. Naprimer pod "-s ! localhost" popadat vsichki paketi, koito idvat ot localhost.

    Posochvane na protokola.

    Protokola mozhe da bude posochen s pomoshtana falaga -p. Protokola mozhe da bude nomer (ako vie ne znaete znacheniiata na nomerata za protokola ip) ili edno ot slednite znacheniia: TCP, UDP ili ICMP. Registura niama znacheniia, tcp e sushtoto kato TCP. Protokolite sushto taka mogat da budat invertirani s pomoshta na "!", naprimer "-s ! TCP" ukazva na tezi protokoli, koito ne sa TCP.

    Posochvane na TCP i UDP portove.

    Kogato sa posocheni protokolite TCP ili UDP e vuzmozhen i treti argument, koito sochi kum TCP&UDP portove ili tiahen diapazon (vklyuchvaiki krainite portove). Diapazona se posochva s pomoshta na simvola ":", naprimer "6000:6010" sochi kum 11 porta, ot 6000 do 6010 vklyuchitelno. Ako dolnata granitsa ne e posochena to tia se priema za 0. Ako gornata granitsa ne e posochena, tia se priema ravna na 65535. Naprimer za posochvane na TCP suedineniia idvashti ot portove po-niski ot 1024, sintaksisa shte bude sledniia "-p TCP -s 0.0.0.0/0 :1024". Taka sushto portovete mogat da budat posocheni po ime, naprimer www (za prevod na chislenoto znachenie poglednete faila /etc/services).

    Nomerata na portovete sushto taka mogat da budat invertirani s pomoshta na "!". Naprimer, za posochvaneto, na koito i da e TCP paket osven WWW paketite e nuzhno da se posochi
"p TCP -d 0.0.0.0/0 ! www"
Vazhno e da se razbere, che
"p TCP -d ! 192.168.1.1 www"
MNOGO SILNO SE RAZLICHAVA ot
"-p TCP -d 192.168.1.1 ! www"
    Purvoto pravilo posochva kum, koito i da e TCP paketi na WWW port, nia koiato i da e mashina, no ne i na 192.168.1.1. Vtoroto pravilo posochva kum, koeto i da e TCP suedinenie na 192.168.1.1, na koito i da e port s izklyuchenie na WWW.
Obediniavaiki tezi pravila, shte poluchim
    -p TCP -d ! 192.168.1.1 ! www
to est, na koiato i da e mashina osven 192.168.1.1, na koito i da e port osven WWW.

[ chast 2 ]


<< IPCHAINS-HOWTO BG 1.01 (chast 2) | Izpolzvane na TTF v Linux >>