Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

zsk:netflow

Tematem przewodnim zajęć jest zbieranie informacji o ruchu sieciowym.
Do części zajęć przyda się ruch sieciowy wygenerowany w trakcie zajęć.
Stąd na początku zajęć skonfiguruj zbieranie informacji o ruchu.

Konfiguracja potrzeba do drugiej części zajęć

  1. Skonfiguruj router Mikrotik:
    • stwórz mostek na 2 interfejsach (eth2 i eth3)
    • dodaj klienta DHCP na interfejsie eth1
    • dodaj adres IP z wybranej przez siebie sieci lokalnej do mostka
    • uruchom serwer DHCP na mostku:
      • stwórz pulę adresów w IP / Pool
        • dodaj sieć lokalną w IP / DHCP Server / Networks z bramą przez router
        • dodaj serwer DHCP na mostku przydzielający adresy z wcześniej stworzonej puli
    • ustaw maskaradę – w IP / Firewall / NAT dodaj regułę z celem masquerade dla pakietów wychodzących po eth1
    • włącz klienta NTP: System / NTP Client
  2. Wepnij router między sieć a komputer (lub: sieć a dwa komputery)
  3. Skonfiguruj router tak, żeby wysyłał flowy do dwóch celi:
    • IP / Traffic Flow / Targets / Add
      wersja 9, port np. 2055
      Uwaga: jeśli używasz jednego komputera, musisz oczywiście wysyłać ruch na różne porty
      (da się wysłać na grupę multicastową, ale wymaga to więcej konfiguracji kolektorów)
    • IP / Traffic Flow: zaznacz enabled
  4. Użyj dockera, aby uruchomić program nfsen i nfcapd https://hub.docker.com/r/koprajs/nfsen/:
    systemctl start docker
    docker pull koprajs/nfsen
    mkdir nfsenData
    docker run --detach --name nfsen -e NFSEN_SOURCES="router,2055,#0000ff" -p 8080:80  -p 2055:2055/udp -v `pwd`/nfsenData:/data koprajs/nfsen
  5. Zainstaluj i uruchom program ntop:
    zypper addrepo https://download.opensuse.org/repositories/server:/monitoring/openSUSE_Leap_42.3/server:monitoring.repo
    zypper in ntop
    ntop --set-admin-password=admin
    chmod a+w /var/lib/ntop/rrd/
    ntop --interface none --http-server 3000 --daemon
  6. skonfiguruj program ntop:
    • wejdź w przeglądarce na adres http://localhost:3000
    • wybierz plugins / netflow / activate
    • podaj port i zatwierdź kliknięciem set port

MRTG

MRTG jest prostym i klasycznym1) narzędziem do zbierania statystyk o natężeniu ruchu sieciowego korzystając z protokołu SNMP.

MRTG periodycznie odpytuje OIDy podane w konfiguracji, zbiera dane w bazie danych (np. RRD) i może na tej podstawie narysować wykresy zużycia łącza. Wykresy są typowo udostępniane na stronie www.

  1. Uruchom serwer apache:
    # mv /etc/apache2/conf.d/nagios.conf /etc/apache2/conf.d/nagios.conf.disabled
    systemctl start apache2
  2. Wygeneruj plik konfiguracyjny dla mrtg:
    cfgmaker --global 'WorkDir: /srv/www/htdocs/mrtg' \
             --global 'LogFormat: rrdtool'            \
             --global 'Interval: 00:30'               \
             --global 'Options[_]: bits,growright'    \
             --output /tmp/mrtg.cfg                   \
             public@150.254.32.65                     \
             public@150.254.32.103
  3. Uruchom MRTG:
    mkdir /srv/www/htdocs/mrtg
    mrtg --daemon /tmp/mrtg.cfg
  4. Dodaj statyczne pliki i skrypt CGI rysujący wykresy na żądanie:
    indexmaker /tmp/mrtg.cfg > /srv/www/htdocs/mrtg/index.html
    wget http://my14all.sourceforge.net/14all-1.1.txt -O /srv/www/cgi-bin/14all.cgi
    chmod a+x /srv/www/cgi-bin/14all.cgi
    cp /tmp/mrtg.cfg /srv/www/cgi-bin

    Uwaga: skrypt CGI w OpenSUSE potrzebuje łatki poprawiającej ścieżki do plików:

    01_14all.cgi_opensuse_paths.patch
    --- 14all.cgi.orig	2017-10-27 11:45:40.820157082 +0200
    +++ 14all.cgi	2017-10-27 11:46:29.328157992 +0200
    @@ -11,7 +11,7 @@
     
     # if MRTG_lib.pm (from mrtg) is not in the module search path (@INC)
     # uncomment the following line and change the path appropriatly:
    -use lib qw(/usr/local/mrtg-2/lib/mrtg2);
    +use lib qw(/usr/lib64/mrtg2);
     
     # if RRDs (rrdtool perl module) is not in the module search path (@INC)
     # uncomment the following line and change the path appropriatly

    Automatyczna aplikacja łatki: patch /srv/www/cgi-bin/14all.cgi < 01_14all.cgi_opensuse_paths.patch

  5. Przejrzyj konfgurację MRTG (plik /tmp/mrtg.cfg)
    • Jakie OID są używne do odpytywania o zajętość łącza?
    • Skąd MRTG wziął nazwy interfejsów i adresy IP?
  6. Podejrzyj wiresharkiem zapytania wygenerowane przez MRTG
  7. Wejdź przeglądarką na stworzoną przez siebie stronę: http://localhost/mrtg/

(Jeśli potrzebujesz ponownie uruchomić mrtg, wyłącz stare np. komendą: pkill -TERM mrtg.)

NetFlow

NetFlow to własnościowy protokół wprowadzony przez firmę CISCO do przesyłania informacji o ruchu sieciowym [1] ,[2] . NetFlow operuje na przepływach (flows)[1] , gdzie każdy flow to grupa pakietów z tego samego źródła (adres sieciowy, protokół, numer portu, …) do tego samego celu (adres sieciowy, protokół, numer portu, …).

Protokół NetFlow w wyniku rozwoju doczekał się 9 wersji, z których 2 są w tej chwili używane - wersja 5 i 9.
Podobne (często nie do odróżnienia) rozwiązania są używane przez inne firmy produkujące sprzęt sieciowy, np. J-Flow (Juniper) czy Traffic Flow (Mikrotik).

Na bazie protokołu NetFlow (firmy CISCO) powstał otwarty standard IPFIX.

Inne rozwiązanie do analizy co się dzieje w sieci wykorzystuje próbkowanie ruchu sieciowego – sFlow.
NetFlow dostarcza informacji wszystkich przepływach w sieci, natomiast sFlow zbiera próbki ruchu (początki pakietów) i pozwala analizować ich zawartość.

Architektura

Na sprzęcie sieciowym zbierane są informacje o ruchu w cache.
Zwykle proces zbierający te dane nazywa się próbą (probe).

Informacje te są eksportowane – wysyłane z użyciem protokołu NetFlow.
Protokół NetFlow używa UDP, nie ma jednego standardowego portu.

Informacje są następnie odbierane i gromadzone przez kolektor.

Zgromadzone dane można analizować odpowiednimi narzędziami.

Szczegółowy opis działania NetFlow i różnice między wersjami: [1] [2]

Prosta próba i kolektor

  1. Zainstaluj i uruchom fprobe - prostą próbę NetFlow dla Linuksa:
    wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/onielsen/openSUSE_Factory/x86_64/fprobe-1.1-3.107.x86_64.rpm
    rpm -i fprobe-1.1-3.107.x86_64.rpm
    fprobe -i em1 localhost:2055
  2. Zainstaluj i uruchom nfcapd - prosty kolektor NetFlow dla Linuksa:
    wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/smflood:/SLE_11_SPn_General/SLE_11_SP2/x86_64/nfdump-1.6.10-7.1.x86_64.rpm
    rpm -i nfdump-1.6.10-7.1.x86_64.rpm
    mkdir /tmp/flows
    nfcapd -p 2055 -l /tmp/flows -t 60s -w -D
  3. Generuj ruch sieciowy przez 2 minuty
  4. Zobacz przy pomocy programu nfdump jak wyglądają zebrane dane:
    cd /tmp/flows/
    nfdump -r nfcapd.…

    W pliku nfcapd.current.* nie należy spodziewać się zawartości.

Przykładowy wynik:

lab-sec-15:/tmp/flows # nfdump -r nfcapd.201710271346
Date first seen          Duration Proto      Src IP Addr:Port          Dst IP Addr:Port   Packets    Bytes Flows
Verify map id 0: ERROR: Expected 7 elements in map, but found 2!
2017-10-27 13:45:26.079     0.000 UDP      150.254.32.65:53    ->    150.254.32.80:60831        1      160     1
2017-10-27 13:45:26.027     0.000 UDP      150.254.32.80:60831 ->    150.254.32.65:53           1       74     1
2017-10-27 13:45:29.362     0.000 UDP      150.254.32.80:33229 ->    150.254.32.65:53           1       51     1
2017-10-27 13:45:25.992     0.000 UDP      150.254.32.80:40612 ->    150.254.32.65:53           1       53     1
2017-10-27 13:45:26.016     0.000 ICMP     150.254.32.80:0     ->  213.180.141.140:8.0          1       84     1
2017-10-27 13:45:26.016     0.000 UDP      150.254.32.65:53    ->    150.254.32.80:40612        1      228     1
2017-10-27 13:45:26.027     0.000 ICMP   213.180.141.140:0     ->    150.254.32.80:0.0          1       84     1
2017-10-27 13:45:30.447     0.000 ICMP       212.77.98.9:0     ->    150.254.32.80:0.0          1       84     1
2017-10-27 13:45:30.438     0.000 ICMP     150.254.32.80:0     ->      212.77.98.9:8.0          1       84     1
2017-10-27 13:45:30.438     0.000 UDP      150.254.32.65:53    ->    150.254.32.80:33229        1      162     1
2017-10-27 13:45:30.507     0.000 UDP      150.254.32.65:53    ->    150.254.32.80:43414        1      161     1
2017-10-27 13:45:30.447     0.000 UDP      150.254.32.80:43414 ->    150.254.32.65:53           1       70     1
2017-10-27 13:45:39.583     0.000 UDP      150.254.32.80:36886 ->    150.254.32.65:53           2      106     1
2017-10-27 13:45:40.492     0.000 UDP      150.254.32.80:55274 ->    150.254.32.65:53           2      114     1
2017-10-27 13:45:40.664     0.817 TCP      150.254.32.80:45678 ->  184.172.220.163:443         12     1209     1
2017-10-27 13:45:40.662     0.002 UDP      150.254.32.65:53    ->    150.254.32.80:55274        2      414     1
2017-10-27 13:45:40.826     0.655 TCP    184.172.220.163:443   ->    150.254.32.80:45678       11    13341     1
2017-10-27 13:45:40.138     0.001 UDP      150.254.32.65:53    ->    150.254.32.80:36886        2      362     1
2017-10-27 13:45:40.140     1.339 TCP      150.254.32.80:55444 ->  184.172.220.163:80           6      425     1
2017-10-27 13:45:40.302     1.177 TCP    184.172.220.163:80    ->    150.254.32.80:55444        4      649     1
Summary: total flows: 20, total bytes: 17915, total packets: 53, avg bps: 9253, avg pps: 3, avg bpp: 338
Time window: 2017-10-27 13:45:25 - 2017-10-27 13:45:41
Total flows processed: 20, Blocks skipped: 0, Bytes read: 1168
Sys: 0.001s flows/second: 11117.3    Wall: 0.000s flows/second: 33670.0   

Mikrotik + NetFlow

Analiza danych z NetFlow

Zdecydowana większość dobrych aplikacji do analizy danych zebranych z użyciem NetFlow jest płatna.
Na zajęciach prezentowane są dwa darmowe programy pozwalające na prostą analizę ruchu.

ntop

ntop to program (też 'klasyczny') do przeglądania statystyk bieżącego ruchu sieciowego. Posiada wtyczkę odbierającą komunikaty NetFlow.

Dostępna jest też nowsza inkarnacja programu (ntopng), ta jednak do użycia NetFlow wymaga zakupienia licencji.

  1. Przeanalizuj konfigurację kolektora NetFlow programu ntop.
  2. W sebranych danych znajdź:
    • wykres bieżącego użycia sieci
    • listę połączeń które wymienają najwięcej danych
    • jaki jest udział protokołu UDP w ruchu sieciowym
    • jaki jest dominujący protokół na warstwie aplikacyjnej
    • rozkład wielkości pakietów (porównaj z: IMIX)

nfsen

Nfsen to aplikacja webowa prezentująca statystyki ruchu, współpracująca z kolektorem nfcapd i programem nfdump.

  1. Porównaj wykresy ilości: przepływów (flows)/ pakietów / bajtów
  2. Znajdź jaki flow wymienił najwięcej danych 20÷10 minut temu
  3. Znajdź jaki flow najszybciej wymieniał dane 20÷10 minut temu
  4. Zobacz jaki jest rozkład ruchu na protokoły (== porty źródłowe / docelowe)
  5. Zagreguj strumienie po sieciach IP
  6. Zobacz który host lokalny wygenerował najwięcej ruchu i z jakiego hosta zdalnego przyszło najwięcej danych
  7. Podaj jaka była szczytowa przepustowość z ostatniej godziny

1) czytaj: bardzo przestarzałym
zsk/netflow.txt · ostatnio zmienione: 2017/10/28 09:47 przez jkonczak