ot Plamen Popow(28-01-2000)

reiting (3)   [ 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/


[ Produlzhenie na chast 2]

    Posochvane na tipovete i kodovete na ICMP.

    ICPM sushto taka dopuska i izpolzvaneto na dopulnitelni argumenti, no ICMP niama portove (ICMP izpolzva tip i kod za predavane na danni).
    Vie mozhete da posochite imenata na ICMP paketite (ipchains -h ICMP za spisuk na imenata) sled klyucha -s ili chislenoto znachenie na tipa i koda na ICMP, kudeto tipa sledva sled klyucha -s, a koda sled klyucha -d.
    ICMP imenata ne sa tolkova dulgi, dostatuchno e da se ukazhat niakolko simvola, po koito mogat ednoznachno da se razlichat ot drugi.
    Po-dolu e pokazana malka tablitsa na ICMP tipovete.
  Nomer Ime  Nuzhen e za 0 echo-reply  ping 3 destination-unreachable za koito i da e TCP/UDP trafik 5 redirect  za routing, ako ne e pusnat demon na routinga 8 echo-request  ping 11 time-exceeded traceroute

Zapomnete, che ICMP tipovete ne mogat da budat izpolzvani zaedno s "!" NE BLOKIRAITE 3 tip na ICMP paketite !!!!!!!

    Posochvane na interfeisa.
    Klyucha -i sochi kum imeta na interfeisa za obrabotka. Interfeis tova e fizichesko ustroistvo, prez koeto "hodiat" paketite. Za izdavane na spisuk na rabotishtite interfeisi ima komanda ifconfig, koiato shte vi pokazhe spisuk na "vdignatite" interfeisi.
    Interfeis za vhodnite paketi (t.e. za tezi, koito minavat "vhodnata" veriga) - tova e edno i sushto kato izhodniia interfeis.
    Razreshava se da se posochvat imenata na tezi interfeisi, koito v dadeniia moment ne sushtestvuvat. Pravilata niama da se izpulniavat do togava dokato tezi interfeisi ne se poiaviat. Tova mozhe da bude polezno za vremenni suedineniia s modem (ppp0) i za drugi podobni sluchai.
    Sushto taka se razreshava da se posochva sled imeto na interfeisa znak "+". Tova posochva kum obrabotka na vsichkite interfeiisi zapochvashti s tezi bukvi. Naprimer za obrabotka na vsichki PPP suedineniia, mozhe da se posochi -i ppp+.
    Razreshava se zaedno s imeto na interfeisa da se posochva znak "!" za otritsanie (t.e. da se obrabotvat vsichki interfeisi osven posocheniia).

    Posochvane samo na TCP SYN paketi.

    Tazi optsiia e polezna za razreshavane na TCP suedineniia samo v edna posoka. Za primer, vie iskate da se razhozhdate po chuzhd survur, no da zabranite na chuzhdiia survur da ustanoviava suedinenie s vas. Obiknovennoto reshenie e da se zabrani priemaneto na TCP paketi, idvashti ot survura ne vurvi, tui kato na survura mu e nuzhno po niakakuv nachin da vi predava infrmatsiia.

    Reshenieto se sustoi v tova, che da se zabraniavat samo tezi paketi, koito iskat da napraviat suedinenie. Tezi paketi se narichat SYN-paketi (chestno kazano tova sa obiknovenni paketi samo, che s vdignat SYN flag).
    Klyucha -y se izpolzva tochno za tova. Za primer, ako e neobhodimo da se razreshat suedineniia s 192.169.1.1 e neobhodimo da se napishe slednoto: -p TCP -s 192.168.1.1 -y
    Kakto obiknovenno tozi klyuch mozhe da se izpolzva zaedno s flaga "!", razreshavaiki koito i da e suedineniia osven paketite za initsializatsiia na suedinenie.

    Obrabotka na fragmenti.

    Poniakoga paketa e mnogo goliam za da se predade tseliia. Kogato tova se sluchi paketa se razbva na niakolko fragmenta i se prashta vuv vid na niakolko paketa. Drugata strana priema vsichkite paketi ot fragmentite i sabira ot tiah edin goliam.
    Problema se sustoi v tova, che sluzhebnata informatsiia (adresite na izprashtacha i poluchatelia, port, ICMP tip i kod i drugi) nuzhna na iadroto se sudurzha samo v purviia fragment.
    Ako vashata mashina e vklyuchena samo vuv vunshna mrezha tozi problem mozhe da se reshi lesno. Pri kompilatsiia na iadroto postavete always defragmet v "Y". Tazi optsiia posochva na iadroto vinagi da sabira vsichki fragmenti predi po-natatushna rabota.
    V drug sluchai vazhno e da se razbere kak faragmentite minavat spisuka s pravila. Koeto i da e pravilo, koeto se opitva da razbere informatsiia za fragmenta ne ia poluchava, osven v sluchaia s purviia fragment.
    Za osiguriavane na tazi vuzmozhnost v opisanieto na pravilata e neobhodimo da se dobavi klyucha -f. Za osiguriavane srabotvaneto na praviloto samo na prviia fargment, klyucha -f mozhe da se izpolzva sus znaka "!".
    Obiknovenno tova se izpolzva za zashtita na preminavane na vtori i sledvashti paketi ot togava, kakto purviia fragment e minal filtratsiia i za zashtita ot subirane na fragmentite na hosta-priemnik. Tova mozhe da bude opasno tui kato niakoi mashini padat ot prosto prashtane na fragmenti. Az predupredih ;-).

    Za mashinite, koito sluzhat za glavni v mrezhata - mnogo ot paketite (TCP, UDP i ICMP) idvat veche fragmentirani - budete vnimatelni.
    Za primer, slednoto pravilo shte othvurlia vsichki fragmenti idvashi kum 192.168.1.1
ipchains -A output -f -D 192.168.1.1 -j DENY

    Kakvo stava vuv filtura na paketi?
    Dobre, sega nie znaem vsichki putishta, po koito nie mozhem da otpraviame paketite. Ako paketa minava praviloto, stava slednoto:

1 - Broiacha na baitove za tova pravilo se uvelichava s razmera na paketa (zaedno sus zaglavieto).
2 - Broiacha na paketi za tova pravilo se uvelichava.
3 - Ako praviloto iziskva, informatsiiata za paketa se zapisva v log.
4 - Ako praviloto iziskva, poleto TypeOfService na paketa se promenia.
5 - Ako praviloto iziskva, paketa se markira (ne i za iadrata 2.0).
6 - Proveriava se sledvashtoto pravilo po putia, koito sledva paketa.

    Ustanoviavane na ukazaniia.

    Dadenite klyuchove pozvoliavat da se ukazhe na iadroto kude da preprashta paketa, koito e popadnal pod deistvie na pravilata. ipchains izpolzva klyucha "-j" (ot jump-to - preskochi-kum) za ukazvane na adresata na paketa.
    Nai-prostiia sluchai - tova e da ne se posochva adresata voobshte. Tozi tip na pravila se naricha accounting, te obiknovenno se izpolzvat prebroiavaneto na chisloto na opredelen tip paketi. Bez znachenie dali tozi paket popada pod deistvie na tova pravilo ili ne, iadroto vse edno shte proveri sledvashtite pravila vuv verigata. Za primer, za prebroiavaneto na chisloto na paketite idvashti ot 192.168.1.1, nie mozhem da posochim slednoto:
ipchains -A input -s 192.168.1.1
    Izpolzvaiki komandata ipchains -L -v vie shte mozhete da pregledate broiachite na paketite i baitovete za vsiako pravilo.
    Ima 6 spetsialni ukazaniia, purvite tri ACCEPT, REJECT i DENY sa razbiraemi. ACCEPT propuska paketite, REJECT othvurlia paketite s opovestiavane na iztochnika, DENY othvurlia paketa taka, kato che li toi nikoga ne e idval.
    Sledvashtoto ukazanie, MASQ kazva na iadroto da napravi maskarading na paketa. Za da raboti tova pravilo iadroto triabva da bude kompilirano s poddruzhka na IP Masquerading. Za utochniavane da detailite chetete Masquerading-HOWTO. Tova pravilo shte raboti samo za verigata "preprashtane".
    Ukazanieto REDIRECT posochva na iadroto da preprashta paketa na posocheniia adres be da vzima predvid realniia adres, posochen v zaglavieto na paketa. Tova pravilo raboti samo za TCP i UDP protokolite. Dopulnitelno vie mozhete da ukazhite port (nomer ili ime) sled "-j REDIRECT". V tozi sluchai paketa shte bude prepraten na ukazaniia port, dazhe ako toi e praten na drug port. Tova pravilo raboti samo za vhodnata veriga.
    Ukazanie REUTRN posochva na iadroto vednaga da propusne paketa do kraia na verigata.
    Koeto i da drugo pravilo sochi kum verigi opredeliaemi ot potrebitelia. Paketa preminava pravilata na tazi veriga kakto obiknovenno.
  input Test Rule1: -p ICMP -j REJECT Rule1: -s 192.168.1.1 Rule2: -p TCP -j Test Rule2: -d 192.168.1.1 Rule3: -p UDP -j DENY  

Da vzemem TCP paket, koito idva ot 192.168.1.1 kum 1.2.3.4. Toi vliza vuv vhodnata veriga i se proveriava pravilo 1 - ne srabotva. Pravilo 2 srabotva, no negovoto ukazanie e Test i za tova sledvashtoto pravilo, koeto se proveriava tova e purvoto pravilo vuv verigata Test. 1-to pravilo ne srabotva i se proveriava 2-to. To susho ne srabotva i nie dostignahme kraia na verigata i se vrushtame nazad, proveriava se pravilo 3, koeto sushto ne srabotva.

Da opishem putia na paketa.     Zapisvane na paketite v log.

    Ako v praviloto e posochen flag -l, iadroto pri srabotvane na prviloto, shte vi dade preduprezhdenie. Tozi flag e polezen za eksperimenti i za izvestiavaneto vi za idvaneto na niakakuv paket.

    Upravlenie na TypeOfService.

    Ima 4 bita v zaglavieto na paketa, narichani bitove TypeOfService (tip na serviza) - "Minimum Delay" (minimalno zadurzhane), "Maximum Throughput" (maksimalna propuskatelna sposobnost), "Maximum Reliability" (maksimalna dostupnost) i "Minimum Cost" (minimalna tsena). Samo edin ot tezi bitove mozhe da bude izpolzvan.
    Obiknovenno ustanoviavat za suedineniia, otnasiashti se kum telnet&ftp control minimalna zadruzhka, a za FTP data maksimalna propuskatelna sposobnost. Tova se pravi po sledniia nachin:

ipchains -A output -p tcp -d 0.0.0.0/0 telnet -t 0x01 0x10
ipchains -A output -p tcp -d 0.0.0.0/0 ftp -t 0x01 0x10
ipchains -A output -p tcp -s 0.0.0.0/0 ftp-data -t 0x01 0x08

Klyucha -t ima 2 parametura i dvata v shestnadesetichen vid. S purvoto chislo i bitovete TOS na paketa se izpulniava AND (logichesko-i), a s vtoriia XOR (izklyuchvashto-ili). Tova e dostatuchno trudno za razbirane, za tova eto edna tablitsa:
  TOS Ime Znachenie Izpolzva se ot Minimum Delay 0x01 0x10 ftp, telnet Maximum Throughput 0x01 0x08 ftp-data Maximum Reliability  0x01 0x04 snmp Minimum Cost 0x01 0x02 nntp

    Markirane na paketi.

    Za suzhalenie, tova vse oshte ne e napraveno, no vuv vseki sluchai tova niama da go bude za iadrata 2.0.

    Operatsii vurhu tsiala veriga.

    Mnogo polezno svoistvo na ipchains e da pravi operatsii nad tsiala veriga. Vie mozhete da narechete svoiata veriga ot pravila kakto iskate, s izklyuchenie na imenata izpolzvani ot vgradenite verigi (input, output, forward) ili ukazaniiata (MASQ, REDIRECT, DENY, REJECT ili RETURN). Imeto na verigata mozhe da bude dulgo do 8 simvola.

    Suzdavane na nova veriga.

    Neka da suzdadem nova veriga. Neka da ia narechem test.

    ipchains -N test

    Tova e prosto, sega mozhete da slagate pravila vuv verigata.

    Mahane na veriga.
    Mahaneto na veriga e sushto tolkova prosto, kakto i suzdavaneto.

    ipchains -X test

    Zashto -X ? CHisto i prosto niamashe poveche podhodiashti bukvi ;-).

    Zapomnete vie ne mozhete da mahnete veriga dokato tia ne e prazna!

    Izchistvane na veriga.

    Nai-prostiia nachin da se izchisti veriga, tova e izpolzvaneto na klyucha -F.

    ipchains -F forward

    Ako imeto na verigata ne e posocheno vsichki verigi shte budat izchisteni.

    Razglezhdane na verigite.

    Voe mozhete da razgledate vsiki pravila vuv verigata izpolzvaiki klyucha -L

# ipchains -L input
Chain input (refcnt = 1): (policy ACCEPT) target prot opt source destination  ports ACCEPT icmp ----- anywhere anywhere any # ipchains -L test
Chain test (refcnt = 0): target prot opt source destination ports DENY icmp ----- localnet/24 anywhere any #

refcnt pokazva kolko pravila ima vuv verigata. Tova chislo triabva da bude 0, za da mozhe verigata da se iztrie.

Za klyucha -L ima 3 optsii. -n zabraniava opitite na ipchains da preobrazuva ip adresite v simvolicheski. -v vi pokazva detailen spisuk na pravilata. Naprimer

# ipchains -v -L input
Chain input (refcnt = 1): (policy ACCEPT) pkts bytes target prot opt tosa tosx ifname mark source destination  ports 10 840 ACCEPT  icmp --- 0xFF 0x00 lo anywhe anywhere  any

Zapomnete, che chisloto na paketite mozhe da se izvezhda sus suotvetnite sufiksi (K, M, G suotvetno za kilobait, megabait i gigabait). Izpolzvaiki -x vie shte mozhete da izvezhdate chislata v pulen format.

    Nulirane na broiachite.

    Tova deistvie mozhe da bude napraveno s pomoshta na klyucha -Z. Edinstveniia problem, koito mozhe da vuznikne v tozi sluchai se sustoi v tova, che sled komandata -L i do komandata -Z mogat da doidat niakolko paketa, koito niama da budat otcheteni. Izhoda ot tova polozhenie se sustoi v ednovremennoto izpolzvane na klyuchovete -L i -Z. No v tozi sluchai vie niama da mozhete da operirate s edna veriga - deistviiata shte se osushtestviavat za vsichki verigi kato za edna.

    Ustanoviavane na ukazaniia za verigata.

    Tazi optsiia e napulno anologichna na ustanoviavaneto na ukazaniia za pravilata s izklyuchenie na niakoi momenti.
    1 - vuzmozhni sa samo ukazaniia ACCEPT, DENY, REJECT ili MASQ.
    2 - ukazanieto MASQ e vuzmozhno samo vuv verigata preprashtane (forward).
    3 - ukazanieto RETURN triabva da se izpolzva s goliamo vnimanie.

    Operatsii s maskaradinga.

    Komandata za IP maskarading -M mozhe da bude obedinena s -L za razglezhdane na tekushtite suedineniia ili sus -S za ustanoviavaneto na parametri.
    Komandata -L mozhe da bude izpolzvana s klyuchovete -n za razglezhdaneto na adresite i portovete na tekushtite suedineniia ili s -v za po-detailno razglezhdane na sushata informatsiia.
    Komandata -S triabva da vurvi s 3-te parametura na taimauta vseki v sekundi: purviia za TCP sesiite, vtoriia za TCP sesiite sled paketa FIN i za UDP paketite. Ako vie ne iskate da promeniate, koito i da e ot parametrite prosto ostavete negovoto znachenie na "0".
    Znacheniiata po podrazbirane se sudurzhat vuv faila '/usr/include/net/ip_masq.h', obiknovenno 15 minuti, 2 minuti i 5 minuti suotvetno.

    Proverka na paketite.

    Poniakoga na vas vi triabva da vidite, kakvo se sluchva s paketa, koito vliza po niakakuv nachin v mashinata, naprimer, testirane na verigata za greshki. ipchains ima za tozi sluchai komandata -C.
    Za ukazvaneto na koia tochno veriga triabva da se testira, neinoto ime mozhe da se ukazhe sled komandata -C, inache iadroto zapochva da minava prez verigite zapochvaiki ot input.
    Za ukazvaneto na tipa na paketite se prilagat sushtite klyuchove, koito se izpolzvat i pri ukazvaneto na pravila za filtrite. Naprimer, testvame TCP SYN paket ot 192.168.1.1 na port 6000 kum 192.168.1.1 port www, zapochvaiki ot vhodnata veriga. Tova e klasichesko www suedinenie.

# ipchains -C input -p tcp -y -s 192.168.1.1 60000 -d 192.168.1.2 www packet accepted

    Polezni primeri.

    Za primer shte razgledame niakoia mashina. Izpolzva se dial-up (-i ppp0), vzimat se novini (-p TCP -s news nntp) i poshta (-p TCP -s mail pop-3), ot vreme na vreme ima dostup do ftp za obnoviavane na sistemata (-p TCP -y -s ftp.cdrom.com ftp-data). Dostup do web prez proksi-survur (-p TCP -d proxy 3128), no na nas ne ni triabva reklama ot doubleclick.net ili ot Dilbert Archive (-p TCP -y -d 199.95.207.0/24 & -p TCP -y -d 199.95.208.0/24). Nie ne iskame da pukame potrebiteli do nas po ftp (-p TCP -d $LOCALIP ftp) i voobshte v lokalnata mrezha (-s 192.168.1.0/24).

    1 - nie ne iskame neshto ili niakoi da prashta paketi kum doubleclick.net

# ipchains -A output -d 199.95.207.0/24 -j REJECT
# ipchains -A output -d 199.95.208.0/24 -j REJECT

    2 - shte napravim veriga ppp-out za pravila, koito shte distvat po vreme na vruzkata ni s internet

# ipchains -N ppp-out
# ipchains -A output -i ppp0 -j ppp-out

    3 - minimalna zadruzhka za telnet&web

# ipchains -A ppp-out -p TCP -d proxy.virtual.net.au 8080 -t 0x01 0x10
# ipchains -A ppp-out -p TCP -d 0.0.0.0 telnet -t 0x01 0x10

    4 - minimalen prioritet za ftp dannite, nntp, pop-3

# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 ftp-data -t 0x01 0x02
# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 nntp -t 0x01 0x02
# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 pop-3 -t 0x01 0x02

    5 - shte napravim veriga za vhodiashti po dial-up paketi

# ipchains -N ppp-in
# ipchains -A input -i ppp0 -j ppp-in

    6 - shte zabranim dostupa da vutreshnata mrezha

# ipchains -A ppp-in -s 192.168.1.0/24 -l -j DENY

    7 - shte razreshim suedineniia kum DNS, ftp, i danni ot ftp samo kum nas

# ipchains -A ppp-in -p TCP -s 203.29.16.1 -d $LOCALIP dns -j ACCEPT
# ipchains -A ppp-in -p TCP -s 0.0.0.0/0 ftp-data -d $LOCALIP 1024:5999 -j ACCEPT
# ipchains -A ppp-in -p TCP -s 0.0.0.0/0 ftp-data -d $LOCALIP 6010: -j ACCEPT
# ipchains -A ppp-in -p TCP -d $LOCALIP ftp -j ACCEPT

    8 - lokalnite paketi triabva svobodno da si hodiat

# ipchains -A input -i lo -j ACCEPT

    9 - ako nito edno ot pravilata ne e srabotilo, zabraniavame paketa

# ipchains -P input DENY

    Suhranenie i vuztanoviavane na nastroikite na fairwall-a.

    Umoritelno e vseki put da se vuvezhdat izredenite po-gore komandi. Ima 2 izhoda, da se zapishat vsichki komandi v shel-skript ili da se vuzpolzvame ot yutilitite ipchains-save i ipchains-restore.
# ipchains-save > my_firewall
# ipchains-restore my_firewall
Kak da gi izpolzvame, ot primera se vizhda. ipchains-save mozhe da ima samo edin parametur - imeto na zapazvanata veriga, ako to ne e posocheno to se zapazvat vsichki verigi. ipchains-restore ima 2 klyucha: -v, koito opisva, kakvo pravi skripta i -f, koito avtomaticheski izchistva sushtestvuvashtata veriga predi vuztanoviavaneto na pravilata v neia.

    Po-podrobno za tova, kakvo ne triabva da se zabraniava i za razlichiiata mezhdu ipfwadm i ipchians vie mozhete da prochetete v originalniia IPCHAINS-HOWTO. Za puskaneto na normalno rabotesht firewall e dostatuchno i gore posochenoto. Ne vuzraziavam, ako niakoi subere sili i prevede ostanaloto i dopulni tozi dokument ot originala ;-).
 

    Prevedeno ot Plamen Popov, 14 dekemvri 1999.

[ Krai ]


<< Kak da pusnem Licq prez Firewall ili proxy | IPCHAINS-HOWTO BG 1.01 (chast 1) >>