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. .. _Rys. 1: .. figure:: http://upload.wikimedia.org/wikipedia/commons/9/9e/NetFlow_Architecture_2012.png :align: center 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`: .. code-block:: bash 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 :menuselection:`IP --> Traffic Flow --> +`. Jako port domyślny wybieramy 2055, wersję NetFlow ustawiamy na v9. W polu :samp:`Address` należy podać adres kolektora. Ten sam efekt można uzyskać w terminalu: .. code-block:: bash 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. .. code-block:: bash 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: .. code-block:: bash 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 :samp:`localhost:3000`. Aby skonfigurować kolektora NetFlow, należy aktywować i skonfigurować wtyczkę NetFlow :guilabel:`Plugins --> NetFlow --> Activate` oraz :guilabel:`Plugins --> NetFlow --> View/Configure`. W polach :samp:`port` ustawiamy port 2055, w polu :samp:`Virtual NetFlow Interface Network Address` podajemy adres routera np. :samp:`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ć. .. code-block:: bash 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: .. code-block:: bash nfcapd -S 0 -w -D -l /home/tdi/flows/ -p 2055 Przełącznik :samp:`-S 0` nakazuje składać pliki w płaskiej strukturze katalogów, :samp:`-w` ustawia rotowanie plików co 5 min (można zmienić przełącznikiem :samp:`-t`), :samp:`-D` wprowadza nfcapd w tryb demona, :samp:`-l` ustawia folder do zapisuj zrzutów NetFlow, w końcu :samp:`-p` nakazuje nasłuchiwać na wskazanym porcie. W katalogu :file:`/home/tdi/flows` będą zapisywane pliki, które możemy przeglądać programem :samp:`nfcapd`. Nfcapd jako argument przyjmuje filtry zgodnie z pcap. np. .. code-block:: bash nfdump -r PLIK -c 10 'src ip 192.168.1.1 and dst port > 100' Emiter NetFlow - fprobe ~~~~~~~~~~~~~~~~~~~~~~~ Pakiet :samp:`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ć. .. code-block:: bash 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: .. code-block:: bash 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.