11.4. Aktuální síťový provoz

V rámci jednotlivých síťových rozhraní lze podrobně sledovat množství přenesených dat nebo počty různých spojení ve specifikovaných časech. Sledování aktuálního síťového provozu poskytuje úplný a strukturovaný záznam síťové komunikace. Data se ukládají do databáze MySQL a to každý den do nové.

Příklad 11-3. Praktické použití výpisu síťového provozu

Pokud vás například zajímá, který počítač během dopoledne nejvíce vytěžoval váš server a ke kterým službám se připojoval, zjistíte to následujícím způsobem. Nejprve ve výběrovém menu Filtr zvolíte přednastavenou hodnotu komunikace tohoto serveru s jinými počítači. Dále ve výběrovém menu v prostoru pod grafem zvolíte položku zadaný rozsah a vyplníte například 9 až 12 hodin. Potom v tabulce kliknete na rozbalovací menu u prvního sloupce a zvolíte IP – Ostatní. Uvidíte seznam strojů, které komunikovali se serverem, uspořádaný podle množství přenesených dat. Pak kliknete na jméno nebo IP adresu prvního počítače v seznamu a v rozbalovacím menu zvolíte Porty – Server. Následně v seznamu uvidíte čísla nejvytíženějších portů, které jsou v případě významných serverových služeb pojmenované.

Zobrazovaní samotných dat o přenosech se řídí několika úrovněmi omezujících podmínek. Jedná se o filtry, časy a spojení.

Ještě před jejich popisem je potřeba se zmínit o některých obecných funkcích dostupných z rozbalovacího menu:

11.4.1. Filtry

Filtr je primární prostředek pro omezení výpisu dat z databáze síťového provozu. Jeho nejdůležitější funkcí je vymezit komunikující strany, aby bylo možno vhodně interpretovat výsledná data. Několik přednastavených filtrů je k dispozici ve stejnojmenném výběrovém menu, jak je vidět na obrázku níže. V menu nalevo jsou položky na vytváření, editování a mazání filtrů. Přednastavené filtry nelze editovat ani mazat. Při vytváření nového uživatelského filtru se do jeho nastavení zkopírují údaje z aktuálně zvoleného filtru. Podrobný popis nastavení uživatelských filtrů najdete v kapitole níže.

Obrázek 11-5. Filtry síťového provozu.

11.4.1.1. Přednastavené filtry

  • komunikace lokální sítě s Internetem – na lokální straně filtru jsou všechny IP adresy uvnitř sítě s vyloučením adres síťových rozhraní, na protější straně je jakákoliv IP adresa, která nenáleží do žádné sítě na lokálním serveru. Součty nejsou nijak omezeny.

  • komunikace tohoto serveru s jinými počítači – na lokální straně jsou všechny IP adresy lokálního serveru, na protější straně je jakákoliv jiná IP adresa. Součty nejsou nijak omezeny.

  • všechna komunikace – tento filtr neobsahuje žádná omezení – vlastně nic nefiltruje, ale poskytuje pohled na všechna zaznamenaná data. Proto je seznam IP adres nebo portů ve výsledné tabulce za obě strany stejný (strany nejsou specifikovány). Proto jsou také množství odeslaných a přijatých dat při zobrazení provozu přes protokoly nebo v minutovém rozvrhu totožné – jsou započítány zdrojové i cílové adresy a sloupec Celkem pak tedy de facto zobrazuje dvojnásobné množství přenesených dat.

11.4.2. Časy

V liště pod grafem můžete ve výběrovém menu přepínat konkrétní časový interval. Tlačítka s lupou slouží k přepínání časových rozsahů z menu s tím, že přiblížení grafu znamená zobrazení následujícího kratšího intervalu z menu a obráceně. Na časové ose se lze rovněž posunovat pomocí směrových šipek v téže liště. V řádku těsně nad vykresleným grafem se v každém případě zobrazuje aktuální časový interval.

Obrázek 11-6. Časové filtry síťového provozu.

11.4.3. Spojení

Tabulka pod grafem zobrazuje data, která odpovídají zadanému filtru v daném časovém intervalu. První sloupec zobrazuje procentuální podíl jednotlivých spojení na celkovém objemu přenesených dat. Záznamy, které pokrývají méně než jedno procento úhrnného síťového provozu, se zobrazují dohromady pod jednou barvou.

Druhý sloupec obsahuje zvolenou podmínku pro zobrazovaná data spojenou s výběrovým menu pro její změnu. U IP adres a portů je za pomlčkou vyznačeno jméno komunikující strany, které je součástí zvoleného filtru a je buď přednastaveno nebo nastaveno uživatelem. Více v podkapitole o filtrech:

Obrázek 11-7. Spojení síťového provozu.

Ke každé položce v tabulce lze zobrazit kliknutím další podrobnosti výběrem jiné omezující podmínky z menu. V takovém případě se všechna dosavadní omezení zobrazují postupně za sebe do stavového řádku těsně pod graf. Tento stavový řádek obsahuje první až předposlední omezující podmínku, poslední podmínka je potom zobrazena v názvu druhého sloupce tabulky. Podmínky ve stavovém řádku mají rovněž své menu, které se otevře při kliknutí. Položka Jdi zpět na zruší všechny později zadané podmínky, položka Odstranit podmínku vyjme jen onu zvolenou z posloupnosti podmínek a položka Upravit podmínku umožní změnit konkrétní hodnotu pro danou podmínku. Kliknutím na tlačítko Zpět zrušíte poslední podmínku v posloupnosti.

Obrázek 11-8. Příklad posloupnosti omezujících podmínek při zobrazení síťového provozu.

Následuje stručný popis zbývajících sloupců tabulky:

11.4.4. Konfigurace vlastního filtru

Při vytváření nebo editaci filtru se otevře nové dialogové okno. Název filtru by měl popisovat, jaká data filtr z databáze vyhledává. Výběrové menu Uložit do se týká přístupových práv, tedy dostupnosti tohoto filtru jiným uživatelům. Filtr může být přístupný buď pouze samotnému uživateli nebo všem uživatelům, kteří mají nastaveno oprávnění číst graf v dané lokální síti, resp. na celém serveru.

Obrázek 11-9. Nový filtr.

Aby bylo možné se lépe orientovat ve vypočítaných údajích, je možné přidělit jednotlivým komunikujícím stranám vlastní názvy (nejvýše 10 znaků). IP adresy a porty jedné strany (obvykle lokální) jsou označeny proměnnými ip a port, IP adresy a porty protější strany pak proměnnými second_ip a second_port. Názvy jednotlivých stran jsou potom vyznačeny u zvolené podmínky a u sloupce s množstvím odeslaných dat ve výsledné tabulce.

Následují dvě pole, do kterých se zadávají další omezující podmínky filtru. Pole Vyhledávání upřesňuje parametry komunikujících stran, pole Součty se týká omezení souhrnných množství přenesených dat v různých formátech (počet bytů, paketů nebo spojení). Obě tato pole přijímají předpis v podobě asociativního pole (nazývaného také hash) v syntaxi jednoduchého jazyka JSON. Prvky hashe jsou dvojice ve tvaru (klíč: hodnota), případně pole, jehož prvky jsou hashe. Vyhodnocování výsledného předpisu takového zápisu se řídí následujícími pravidly:

Pro samotné psaní omezujících podmínek je potřebná znalost klíčů, hodnot a proměnných, které lze v hashích využívat. Pro pole jako hodnotu klíče existují tři speciální řetězce, které ovlivní vyhodnocování jeho obsahu, pokud jsou umístěny jako první prvek pole:

Pokud není zadán žádný z těchto řídících řetězců, vyhodnocuje se obsah pole tak, jako by byl zadán řetězec or. Pole může obsahovat jako prvek další pole. Následuje popis jednotlivých klíčů s příklady.

Tip: V zápisu vlastních filtrů lze používat dokonce ještě odlehčenější a přehlednější syntaxi jazyka JSON:

  • kolem jmen klíčů není potřeba psát uvozovky,

  • řády tisíců lze v zápisu čísla oddělovat podtržítkem (např. 1_000_000),

  • prvky polí a hashů není potřeba oddělovat čárkou.

Poznámka: Zápis vyhledávacího nebo součtového filtru může obsahovat komentáře. Ty mohou být označeny buď takto: /* všechno tohle je komentář */ , nebo mohou být uvozeny dvěma lomítky: // vše až do konce řádku je komentář .

11.4.4.1. Vyhledávání

K dispozici jsou tyto klíče do hashů:

  • ip – specifikuje IP adresu, která se bude hledat v databázi. Tento klíč samostatně neurčuje komunikující stranu. Hodnotu lze zapisovat buď klasicky jako čtveřici číslic (1.1.1.1), jako celé číslo (v našem příkladu 16843009) nebo jako zápis s maskou ve tvaru 1.1.1.1/16 nebo 1.1.1.1/255.255.0.0. Je možné také zadávat jméno počítače (hostname – např. aurora.priklad.cz).

  • second_ip – specifikuje IP adresu na protější straně spojení, pokud je již specifikován klíč ip. Jinak se chová stejně jako klíč ip.

  • port – specifikuje číslo portu. Tento klíč samostatně nespecifikuje komunikující stranu, ale vztahuje se ke klíči ip, resp. k opačné straně specifikované v klíči second_ip, pokud je některý z těchto klíčů uveden. Hodnotou je buď řetězec s názvem portu (např. ssh) nebo celé číslo (v našem příkladu 22).

  • second_port – specifikuje port vztahující se ke komunikující straně specifikované klíčem second_ip, resp. k opačné straně, než která je specifikována klíčem ip nebo port, pokud je některý z těchto klíčů uveden.

  • time – specifikuje hodinu a minutu, kdy byl záznam zapsán do databáze. Hodnotou je buď řetězec (např. 11:11) nebo celé číslo označující číslo minuty v daném dnu (v našem příkladu tedy 671).

  • protocol – specifikuje komunikační protokol spojení. Hodnotou je buď řetězec (např. tcp) nebo číslo protokolu (v našem příkladu tedy 6).

Hodnoty k těmto klíčům mohou být seskupeny do polí a mohou obsahovat následující proměnné:

  • all_networks – označuje všechny IP adresy, které nastaveny na všech lokálních sítích. Do tohoto výčtu spadají i adresy definované maskou sítě.

  • interface_ips – označuje všechny IP adresy náležící síťovému rozhraní, do kterého filtr náleží. Do tohoto výčtu se nepočítají adresy definované maskou sítě.

  • all_ips – označuje IP adresy všech síťových rozhraní na serveru. Do tohoto výčtu se nepočítají adresy definované maskou sítě.

  • network – označuje všechny IP adresy náležící síťovému rozhraní, do kterého filtr náleží. Do tohoto výčtu spadají i adresy definované maskou sítě.

Příklad 11-4. Příklad vyhledávacího filtru.



   second_ip: [ "not", "${all_networks}" ],
   ip: [
          "and",
          "${network}",
          [ "not", "${interface_ips}" ]
       ]
}
    

Tento filtr zobrazí komunikaci adres v síti, s výjimkou adres síťového rozhraní, s adresami, které nepatří do žádné definované lokální sítě. Je to tedy komunikace aktuální lokální sítě s Internetem.

11.4.4.2. Součty

K dispozici jsou tyto klíče do hashů:

  • bytes1_2_sum, bytes2_1_sum – specifikuje množství přenesených bytů, které se zobrazují v tabulce ve sloupcích odesláno a přijato. Strana 1 je určena hodnotou klíče ip, strana 2 hodnotou klíče second_ip. Hodnoty jsou přirozená čísla.

  • bytes_sum – specifikuje celkové množství přenesených bytů, které odpovídá sloupci celkem ve výsledné tabulce. Jedná se o součet hodnot klíčů bytes1_2_sum a bytes2_1_sum. Hodnotou je přirozené číslo.

  • packets_sum – specifikuje celkové množství přenesených paketů. Hodnotou je přirozené číslo.

  • conns_sum – specifikuje celkové množství navázaných spojení. Hodnotou je přirozené číslo.

  • time_min, time_max – specifikuje nejstarší respektive nejnovější čas, kdy byl zaznamenán přenos paketu, který spadá do vyhledávacího filtru. Formát zápisu je stejný jako u klíče time popsaného výše.

Pokud jde o hodnoty k těmto klíčům, lze je zadávat buď jako celá čísla nebo jako intervaly. Krajní hodnota intervalu do něj vždy náleží. Zápis 1..100 znamená hodnoty od 1 včetně do 100 včetně. Zápisy 66.., respektive ..66 znamená hodnoty větší nebo rovno, respektive menší nebo rovno hodnotě 66.

Příklad 11-5. Příklad součtového filtru.


{
    bytes_sum: "1_000_000..",
    conns_sum: "..10"
}
    

Tento filtr zobrazí pouze záznamy těch toků, ve kterých byl v součtu přenesen více než 1 MB dat, ale současně bylo v zadanou dobu navázáno nejvýše 10 spojení.