Netflow
Sisukord
Sissejuhatus
Newflow abil saab analüüsida ja üldistada andmevahetust nt võrgusõlme läbinud liikust.
Tööpõhimõte
TODO
tcp ühendusele vastab nt selline flow record
Flow Record: Flags = 0x00000000 size = 52 mark = 0 srcaddr = 10.0.71.73 dstaddr = 192.168.1.239 first = 1261995550 [2009-12-28 12:19:10] last = 1261995561 [2009-12-28 12:19:21] msec_first = 248 msec_last = 248 dir = 0 tcp_flags = 0x 0 ...... prot = 6 tos = 0 input = 0 output = 0 srcas = 0 dstas = 0 srcport = 1699 dstport = 80 dPkts = 30 dOctets = 1853
kus
- srcaddr -
- dstaddr -
- tcp_flags - OpenBSD netflow ei sisalda 2009 aasta lõpus andmeid TCP lippude kohta
Skeem
Netflow kasutamisel esinevad tavaliselt kolme sorti osalised
- netflow allikad - üks või enam OpenBSD tulemüüri
- netflow kogujad - tavaliselt sisaldub skeemis üks netflow koguja (ingl. k. collector), nt Debian Linux ja nfdump tarkvara
- netflow analüsaator - nt NfSen PHP kasutajaliidesega rakendus, mis tegelikult juhib ka netflow kogumist
_____ | | NfSen - analüsaator |_____| nfdump - netflow koguja 9995/udp | | | ---|------|-----------|-------------------|----- | | | __|__ __|__ __|__ | | | | | | |_____| |_____| |_____| OpenBSD tulemüürid - netflow allikad
kus
- allikad saadavad kogujale udp pakettide vormis andmeid, vaikimisi pordile 9995/udp
Netflow allika ettevalmistamine
OpenBSD allikate ettevalmistamine
Alates versioonist 4.5 saab OpenBSD tulemüürist väljastada netflow standardile vastavaid sõnumeid.
Paketifiltri seadistamine
Paketifilter võimaldab netflow'd saata nö pass reegli täpsusega kasutades pflow parameetrit, nt
pass in quick inet proto tcp from 10.0.6.174 to any port { 80, 443 } keep state (pflow) label "JSint from 10.0.6.174 to any port 80 443"
Kui reeglites ei ole imlutatult state omadusi täpsustatud, siis vaikimisi saab kõigi pass reeglite jaoks pflow sisse lülitada kasutades
set state-defaults pflow
pflow väljastamine
Sõnumite saatmiseks tuleb öelda kuhu sõnumeid saata
# ifconfig pflow0 flowsrc 192.168.10.210 flowdst 192.168.10.51:9995
Lisaks tuleb lubada vastav liiklus arvutist välja. Sõnumite liiklusmises saab veenduda liiklust kuulates
# tcpdump -nei pflow0 tcpdump: listening on pflow0, link-type RAW 17:14:15.813705 ip: 192.168.10.210.62379 > 192.168.10.51.9995: udp 1464 (DF) [tos 0x10]
rfdump kasutamine
TODO
NfSen kasutamine Debian Lenniga
Käesoleva skeemi kohaselt töötavad Debian Lenny keskkonnas kaks komponenti
- netflow kogumine - paketialdusest paigaldatud vahenditega, nfdump pakett
- netflow analüüs - lähtetekstist paigaldatud NfSen rakendus
netflow koguja ettevalmistamine
Debiani paketihalduses on olemas nfdump tarkvara, kuhu komplekti kuulub programm nfcapd, mille abil saab võtta vastu saadetud netflow andmeid ning promgramm nfdump, mille abil saab esitada kogutud andmeid tekstilisel kujul. Paigaldamiseks sobib öelda, kusjuures paigaldamise järel on programm käivitatud
# apt-get install nfdump
Omakäeliselt nfcapd käivitamiseks sobib nt öelda, /tmp/nfdata kataloog peab olemas olema
# nfcapd -z -w -l /tmp/nfdata -S "%Y/%m/%d/%H"
Mõne aja pärast on sinna ilmunud sarnased failid, nende sinu esitamiseks sobib öelda nt
# nfdump -r /tmp/router1/nfcapd.200905031005 Date flow start Duration Proto Src IP Addr:Port Dst IP Addr:Port Packets Bytes Flows 2009-05-03 13:50:25.466 30.000 UDP 192.168.10.101:21897 -> 89.25.35.28:57476 1 142 1 2009-05-03 13:50:25.466 30.000 UDP 89.25.35.28:57476 -> 192.168.10.101:21897 1 48 1 2009-05-03 13:50:25.466 30.000 UDP 84.50.96.138:54754 -> 89.25.35.28:57476 1 142 1 2009-05-03 13:50:25.466 30.000 UDP 89.25.35.28:57476 -> 84.50.96.138:54754 1 48 1 2009-05-03 13:50:25.466 30.000 UDP 192.168.10.101:631 -> 192.168.10.255:631 2 402 1 ...
Tundub, et suhteliselt sobiv on kasutada Debiani keskkonda veebirakenduse abil netflow esitamiseks.
NfSen analüsaatori ettevalmistamine
Paketihaldusest peavad olema paigaldatud
# apt-get install apache2 php5 librrds-perl
Lisada süsteemi kasutaja:grupp, kelle õigustes NfSen deemon käima hakkab, nt
# groupadd nfsen # useradd -g nfsen -m -d /home/nfsen nfsen
Enne installeerimist tuleb moodustada failisüsteemi vajalikud kataloogid
- /srv/www/nfsen - veebiliidese osa
- /srv/nfsen - nfsen mootor
ja seadistada Apache veebiserver näitame NfSeni aadressil /nfsen
<VirtualHost 192.168.1.4:80> ServerName www.loomaaed.tartu.ee ServerAdmin webmaster@loomaad.tartu.ee DocumentRoot /srv/www ErrorLog /var/log/apache2/www.loomaaed.tartu.ee-error.log LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined CustomLog /var/log/apache2/www.loomaaed.tartu.ee-access.log combined <Directory /srv/www/nfsen> Options None AllowOverRide None Order Allow,Deny Allow from All </Directory> </VirtualHost>
NfSen tarkvara saab kopeerida aadressil http://nfsen.sourceforge.net/ toodud lingilt, seejärel sobib ta pakkida lahti nt /usr/src kataloogis juurkasutajana
# cd /usr/src # tar zxf nfsen-1.3.2.tar.gz
Seejärel tuleb ettevalmistada sobiva sisuga NfSen seadistusfail /srv/nfsen/etc/nfsen.conf
# cp nfsen-dist.conf nfsen.conf
kus on oluline üle vaadata sellised parameetrid
- $BASEDIR = "/srv/nfsen"; - NfSen installatsioon asub selle kataloogi all, va veebiliidese osa
- $HTMLDIR = "/srv/www/nfsen/"; - NfSen veebiliidese osa
- $PREFIX = '/usr/bin'; - sealt kataloogist leiab NfSen nfdump utiliidid (nfcapd jt)
- $USER = "nfsen"; - NfSen protsessid töötavad selle kasutajana, sh netflow kogumine nfcapd abil, mille NfSen käivitab)
- $WWWUSER = "www-data"; - NfSen tahab teada, millise kasutaja:grupiga veebiserveri kasutajaliidesest korraldused tulevad
- $WWWGROUP = "www-data";
Lisaks tuleb kirjeldada kus kuulatakse netflow allikaid
%sources = ( 'tulemyyr1' => { 'port' => '9995', 'col' => '#0000ff', 'type' => 'netflow' }, 'tulemyyr2' => { 'port' => '9996', 'col' => '#ff0000', 'type' => 'netflow' }, 'tulemyyr3' => { 'port' => '9997', 'col' => '#00ff00', 'type' => 'netflow' } );
NfSen tarkvara paigaldamiseks tuleb öelda juurkasutajana
# ./install.pl etc/nfsen.conf
Tulemusena NfSen protsesse ei käivita, asjassepuutuvad failid paigutatakse seadistusfailis näidatud kataloogidesse.
NfSen käivitamine
NfSen käivitamiseks sobib öelda
# /srv/nfsen/bin/nfsen start
Töötavale NfSenile vastavad sellised protsessid
# ps aux | grep nfsen nfsen 4204 0.0 0.2 15592 1424 ? S 17:29 0:00 /usr/bin/nfcapd -w -D -I upstream1 -p 9995 -u nfsen -g www-data \ -B 200000 -S 1 -l /srv/nfsen/profiles-data/live/upstream1 -P /srv/nfsen/var/run/upstream1.pid nfsen 4207 0.0 0.1 15592 604 ? S 17:29 0:00 /usr/bin/nfcapd -w -D -I peer1 -p 9996 -u nfsen -g www-data \ -B 200000 -S 1 -l /srv/nfsen/profiles-data/live/peer1 -P /srv/nfsen/var/run/peer1.pid nfsen 4209 0.1 3.4 125680 17736 ? Ss 17:29 0:26 /usr/bin/perl -w /srv/nfsen/bin/nfsend nfsen 4210 0.0 2.4 120732 12388 ? Ss 17:29 0:12 /srv/nfsen/bin/nfsend-comm
Töö käigus moodustab NfSen nt selliseid faile
# find /srv/nfsen/ -mmin -1 /srv/nfsen/profiles-stat/live/flows-month.png /srv/nfsen/profiles-stat/live/flows-year.png ... /srv/nfsen/profiles-data/live/peer1 /srv/nfsen/profiles-data/live/peer1/2009/12 /srv/nfsen/profiles-data/live/peer1/2009/12/28 /srv/nfsen/profiles-data/live/peer1/2009/12/28/nfcapd.200912280000 /srv/nfsen/profiles-data/live/peer1/nfcapd.current.4207
Sobib kasutada nt sellist kävitusskripti
TODO
NfSen kasutamine
NfSen kasutamine toimub veebipõhise haldusliidese abil aadressil http://www.loomaaed.tartu.ee/nfsen/
Kasulikud lisamaterjalid
- http://kuutorvaja.eenet.ee/wiki/Nfsen
- http://nfsen.sourceforge.net/
- http://nfdump.sourceforge.net/
- http://en.wikipedia.org/wiki/Netflow
- http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.22.tar.gz
- http://www.securityfocus.com/infocus/1796 - esimene osa
- http://www.securityfocus.com/infocus/1802 - teine osa
- http://www.youtube.com/watch?v=oipMSiBWB08
- http://www.team-cymru.org/