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 ]