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 ]