ipchains a ip accounting

Roskanuk Michal Michal.Roskanuk na merlin.cz
Pondělí Červenec 24 15:27:18 CEST 2000


> Mam masinu s Linuxem a pokousim se merit protecena data z 
> hostu pripojenych za ni pomoci ipchains. Vse je v pohode,
> pokud tato masina ma pouze dve rozhrani, jedno ven jedno
> dovnitr. Je-li ale pripojena k vice sitim/podsitim
> a ma tedy vice rozhrani, udaje jsou velice zkreslene.
> Odhadem co dalsi rozhrani to jedenkrat navic tolik dat.
> Pravidla pro pocitani zadavam nasledovne:
>  zridim novy chain - 'ipchains -N ipacc'
>  dale davam - 'ipchains -I input -j ipacc' a 'ipchains -I output -j ipacc'
>  dale pripojim pravidla pro jednotlive hosty - 'ipchains 
> -A ipacc -d
> 0.0.0.0/0 -s (IP adresa hosta) -b'
> Chapu to tak, ze by mel merit vse odkudkoli (0.0.0.0/0) na IP 
> adresa hosta a diky -b i naopak. Asi je problem v definici 
> 'odkudkoli/kamkoli' nebo nekde jinde.

Zalezi hlavne na tom, co vlastne chcete merit, resp. jak chcete
data seskupovat. Prvni vec, kterou bych udelal, by bylo rozliseni
podle adapteru. To jest budete-li mit
 'ipchains -A input -i eth1 -j ipacc'
 'ipchains -A output -i eth1 -j ipacc'
tak vite, ze merite jen jeden pruchozi bod - oba prece nepotrebujete.
Ovsem prisne receno nepotrebujete v accountingu ani 'input',
protoze na chainu 'input' jeste nemuzete vedet, jestli packet
nebude vyfiltrovan. Takze radeji
 'ipchains -A output -i eth0 -j ipacc'
 'ipchains -A output -i eth1 -j ipacc'
packety, prochazejici chainem 'output' urcite miri k hostovi
a je treba je merit. Pokud pouzivate masquerading, musel byste
packety smerem ven identifikovat pres mark (-m #####), protoze
uz jsou prelozene. Jina moznost je umistit pravidlo pro
accounting na vhodne misto do chainu 'forward'. Vse zalezi
na tom, jakym zpusobem jsou ipchains zkonfigurovany a
k cemu vsemu je pouzivate.

BTW pravidla jdou zadavat pres -I (insert) i pres -A (add), ale
kdyz pouzivate insert bez udani pozice (tj default rulenum 1),
budou vsechna pravidla v opacnem poradi, nez v tom scriptu.
To muze nadelat ve vasich zamerech peknou paseku.
Flag -b v tomto pripade jen zvetsuje junk - radsi si poradne
rozmyslete, co budete merit a podle toho sepiste pravidla.
Flag -b radeji nepouzivejte, pokud vam neni naprosto jasne,
co dela.
Takze odchozi:
 'ipchains -A ipacc -s ten_host -j RETURN'
prichozi:
 'ipchains -A ipacc -d ten_host -j RETURN'
Zadavat -d/-s nemusim, 0/0 je default. Naopak by melo by zadano,
co se ma stat. V pripade accountingu musi byt RETURN, protoze
ACCEPT (coz je, jak jsem pochopil, u vas default rule) by packet
pustilo dal, coz u chainu 'output' znamena pryc
z routeru. RETURN vrati packet ke zpracovani za bod, ze ktereho
prisel. Zdanlive mozna zadny velky rozdil, ale to, jestli
packet opusti chain ci cely router, by melo VZDY rozhodnout
default rule toho chainu nebo nejvys posledni routovaci/filtrovaci
pravidlo, rozhodne ne nejaky accounting. Dodelat jakoukoli
granulaci potom neni problem. Kdyz budu chtit merit http zvlast,
budu mit pro kazdeho hosta
 '#prichozi http
 'ipchains -A ipacc -p tcp -sport 80 -d ten_host -j RETURN'
 '#odchozi http
 'ipchains -A ipacc -p tcp -dport 80 -s ten_host -j RETURN'
 '#prichozi vse
 'ipchains -A ipacc -d ten_host -j RETURN'
 '#odchozi vse
 'ipchains -A ipacc -s ten_host -j RETURN'

Pokud mate vice adapteru, musite si nejak odlisit data
na nich namerena. Bud vice chainu a rozlisovat pres pravidlo,
ktere odesila packet k zapocteni, nebo rozlisovat primo
v chainu accountingu i druhou stranu spojeni.

Cele soustroji ma samozrejme smysl jen tehdy, kdyz jsou
i ostatni chainy nejak smysluplne nastaveny.

Jinak vrele doporucuji testovat vysledek bud pres
'ipchains -L' nebo pres 'ipchains-save'. Pomuze vam to
orientovat se v tom, co se s packety ve vasem routeru deje.

Michal Roskanuk


Další informace o konferenci Linux