NetFlow

Wstęp

NetFlow jest protokołem opracowanym przez firmę Cisco do zbierania informacji o ruchu w sieciach IP. W architekturze NetFlow, routery zbierają statystyki ruchu IP na wskazanych interfejsach by później przekazać je w rekordach protokołu NetFlow do węzłów zbierających (ang. NetFlow collector). Przeważnie węzłami są serwery, czy oprogramowanie do wizualizacji. Protokołó NetFlow używa UDP do transportu danych, przeważnie używane porty to 2055, 9555.

http://upload.wikimedia.org/wikipedia/commons/9/9e/NetFlow_Architecture_2012.png

Rys.1. Architectura netflow (Wikipedia)

Flow (przepływ) można dzdefiniować jak nieskierowną sekwencję pakietów, które mają wspólne:

  • Interfejs wchodzący
  • Adres IP źródłowy
  • Adres IP docelowy
  • Protokół IP
  • Port źródłowy UDP/TCP
  • Port docelowy UDP/TPC, typ i kod ICMP
  • ToS IP

Przykład przepływu z narzędzia nfdump:

Date flow start          Duration Proto   Src IP Addr:Port      Dst IP  Addr:Port     Packets    Bytes Flows
2010-09-01 00:00:00.459     0.000 UDP     127.0.0.1:24920   ->  192.168.0.1:22126        1       46     1
2010-09-01 00:00:00.363     0.000 UDP     192.168.0.1:22126 ->  127.0.0.1:24920          1       80     1

NetFlow w Mikrotik

NetFlow w Mikrotik można włączyć w menu IP ‣ Traffic Flow ‣ +. Jako port domyślny wybieramy 2055, wersję NetFlow ustawiamy na v9. W polu Address należy podać adres kolektora. Ten sam efekt można uzyskać w terminalu:

ip traffic-flow set enabled=true interfaces=all
ip traffic-flow target version=9 address=ADRES_IP:PORT

Po ustawieniu NetFlow, Mikrotik będzie wysyłał pakiety statystyk na wskazany adres i port.

Kolektory

goflow

Goflow służy jedynie do testowania czy pakiety netflow przychodzą na nasz interfejs. Goflow obsługuje jedynie Netflow w wersji 5. Można go pobrać z https://gobuilder.me/github.com/tdi/goflow.

 chmod 755 goflow
./goflow -H 0.0.0.0 -p 2055

Ntop

Ntop jest darmowym programem do zbierania przepływów, dodatkowo potrafi działać jako kolektor NetFlow. Aby zainstalować ntop w sali laboratoryjnej, należy wydać polecenia:

root# zypper install ntop
root# mkdir /var/lib/ntop
root# ntop -i em1

Po włączeniu za pierwszym razem, ntop poprosi o ustawienie haseł dla administratora. Po tym dostępny będzie interfejs WWW na adresie localhost:3000. Aby skonfigurować kolektora NetFlow, należy aktywować i skonfigurować wtyczkę NetFlow Plugins –> NetFlow –> Activate oraz Plugins –> NetFlow –> View/Configure. W polach port ustawiamy port 2055, w polu Virtual NetFlow Interface Network Address podajemy adres routera np. 192.168.1.1/255.255.255.0. Po zapisaniu ustawień ntop będzie odbierał dane z naszego routera.

nfdump i nfcapd

Pakiet nfdump jest konsolowym kolektorem NetFlow. Aby zainstalować go w salach laboratoryjnych, należy pobrać pakiet ze strony : http://nfdump.sourceforge.net/ i skompilować.

tar xvf nfdump-1.X.X.tar.gz
cd nfdump-1.X.X/
./configure && make && make install

Zostaną zainstalowane dwa polecenia: nfcapd oraz nfdump. Za pomocą nfcapd możemy zbierać pakiety NetFlow, za pomocą nfdump możemy wyświetlać je na ekranie konsoli. Przykładowe uruchomienie nfcapd:

nfcapd -S 0 -w -D -l /home/tdi/flows/ -p 2055

Przełącznik -S 0 nakazuje składać pliki w płaskiej strukturze katalogów, -w ustawia rotowanie plików co 5 min (można zmienić przełącznikiem -t), -D wprowadza nfcapd w tryb demona, -l ustawia folder do zapisuj zrzutów NetFlow, w końcu -p nakazuje nasłuchiwać na wskazanym porcie.

W katalogu /home/tdi/flows będą zapisywane pliki, które możemy przeglądać programem nfcapd.

Nfcapd jako argument przyjmuje filtry zgodnie z pcap. np.

nfdump -r PLIK -c 10 'src ip 192.168.1.1 and dst port > 100'

Emiter NetFlow - fprobe

Pakiet fprobe jest emiterem NetFlow, potrafi zbierać statystyki z interfejsu Linuksa i wysyłać je do ospowiedniego kolektora. Aby zainstalować fprobe w sali laboratoryjnej należy sciągnąć źródła z http://fprobe.sourceforge.net/ i skompilować.

zypper install libpcap-devel
tar xjvf fprobe-X.X.tar.bz2
cd fprobe-X.X/
./configure && make && make install

Podstawowe uruchomienie sondy fprobe, zbierającej statystyki na interfejsie em0 i wysyałającej pakiety na adres 127.0.0.1:2055:

root# fprobe -i em0 -p -n 7 127.0.0.1:2055

Ćwiczenia

  1. Skonfiguruj router Mikrotik, tak aby dawał dostęp do Internetu.
  2. Skonfiguruj na routerze wysyłanie przepływów za pomocą NetFlow.
  3. Skonfiguruj ntop na komputerze jako kolektor ntop.
  4. Skonfiguruj nfcapd na komputerze i zobacz przepływy za pomocą nfdump. Zastosuj filtry, żeby wybrać tylko przepływy jednego hosta.
  5. Skonfiguruj sondę fprobe.