Linux v síti Ondřej Vondrouš
Autor: Ondřej Vondrouš Název díla: Linux v síti Zpracoval(a): České vysoké učení technické v Praze Fakulta elektrotechnická Kontaktní adresa: Technická 2, Praha 6
Inovace předmětů a studijních materiálů pro e-learningovou výuku v prezenční a kombinované formě studia
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
VYSVĚTLIVKY
Definice
Zajímavost
Poznámka
Příklad
Shrnutí
Výhody
Nevýhody
ANOTACE Tento modul seznamuje studenty s možnostmi použití operačního systému Linux v sítích.
CÍLE Tento modul umožní studentům získat základní znalosti pro připojení zařízení s operačním systémem Linux do sítě. Modul se zaměřuje částečně na připomenutí adresace IPv4. Studenti se v rámci tohoto modulu dále seznámí s pokročilejším užitím operačního systému Linux v sítích. Studenti se seznámí s pokročilou administrací síťových rozhraní, s konfigurací směrovače a firewallu na bázi operačního systém Linux. Tento modul obsahuje řadu příkladů k zamyšlení nad danou tématikou a stejně tak několik cvičení pro ověření nabytých znalostí.
LITERATURA [1]
NEMETH,Evi; SNYDER, Garth; HEIN,R.,Trent. LINUX Kompletní příručka administratora. : Computer Press, 2004.828 s. ISBN 80-7226-919-4.
[2]
RFC 1918, Address Allocation for Private Networks, http://tools.ietf.org/html/rfc1918
Obsah 1 Sítě IPv4 - úvod..................................................................................................................... 6 1.1
Adresace sítě IPv4 ...................................................................................................... 6
1.2
Adresace sítě IPv4 ...................................................................................................... 7
1.3
Adresace sítě IPv4 ...................................................................................................... 8
1.4
Adresace sítě IPv4 – ověření znalostí......................................................................... 9
2 Sítě v OS Linux – příkaz „ip“ ........................................................................................... 10 2.1
Příkaz ip ................................................................................................................... 10
2.2
Příkaz ip link – nastavení rozhraní .......................................................................... 11
2.3
Příkaz ip addr – nastavení adres IP ......................................................................... 12
2.4
Příkaz ip route – nastavení směrovacích tabulek .................................................... 13
2.5
Příkaz ip route – pokročilé metody směrování........................................................ 14
2.6
Příkaz ip tunnel – vytvoření tunel rozhraní ............................................................. 17
3 Sítě v OS Linux – ostatní nastavení .................................................................................. 19 3.1
Nastavení překladu adres DNS – revolver ............................................................... 19
3.2
DHCP – klient .......................................................................................................... 20
3.3
Síťový most – Network Bridge ................................................................................ 21
3.4
OS Linux jako síťový směrovač ............................................................................... 22
3.5
Příkazy – ověření znalostí ........................................................................................ 23
4 Sítě v OS Linux – zabezpečení sítí .................................................................................... 24 4.1
TCP Wrappers / Iptables .......................................................................................... 24
4.2
Iptables – struktura ................................................................................................... 25
4.3
Iptables – pravidla (manipulace s pravidly) ............................................................. 27
4.4
Iptables – pravidla (selekce paketů) ......................................................................... 29
4.5
Iptables – pravidla (pokročilé moduly selekce paketů) ............................................ 30
4.6
Iptables – akce .......................................................................................................... 32
4.7
Iptables – překlad adres NAT / PAT ........................................................................ 33
4.8
Iptables – výpis pravidel........................................................................................... 36
4.9
Iptables – ověření znalostí ........................................................................................ 37
5 Sítě v OS Linux – užitečné nástroje .................................................................................. 38 5.1
Tcpdump ................................................................................................................... 38
5.2
Netstat ....................................................................................................................... 40
6 Sítě v OS Linux – závěrečné cvičení ................................................................................. 41 6.1
Test ........................................................................................................................... 41
1 Sítě IPv4 - úvod 1.1 Adresace sítě IPv4 Tento modul se zabývá konfigurací sítě v prostředí Linux. Je proto důležité, aby čtenář alespoň z části rozuměl způsobu adresování v sítích IPv4. Pro oživení těchto znalostí se budeme v úvodu tohoto modulu věnovat rychlému zopakování základům adresace sítě IPv4. Adresní rozsah IPv4 má velikost 2^32 = 4.294.967.296 adres. Adresní rozsah IPv4 je spravován organizací ICANN (Internet Corporation for Assigned Names and Numbers). Dělí se na několik skupin adres: soukromé adresy IP, adresy pro vícesměrové vysílaní, a další speciální skupiny. Výpis těch nejdůležitějších adresných rozsahů a jejich popis naleznete na následující stránce. Kromě těchto adres existují adresy, které jsou označovány jako veřejné, těch je většina. Veřejné adresy jsou přidělovány organizací IANA (Internet Assigned Numbers Authority) jednotlivým RIR (Regional Internet Registry). V Evropě se jedná o RIPE NCC (RIPE Network Coordination Centre)). RIPE NCC pak přiděluje adresy IP jednotlivým poskytovatelů služeb ISP (Internet Service Provider), anebo konkrétním zákazníkům. Zákazník, jenž chce vlastnit část adresného rozsahu IP musí mít také přidělené číslo ASN (autonomous system number), na jehož základě dochází ke směrování daného adresného rozsahu. Pouze veřejné adresy IP jsou dostupné v rámci celosvětové sítě internet I bez vlastního AS čísla je možné získat, aby běžný zákazník získal veřejné adresy. Ovšem pouze od jeho současného ISP. Při změně ISP zákazník o danou adresu IP automaticky přichází. Neexistuje zde možnost přenosu adres IP mezi ISP. Pokud má zákazník vlastní AS číslo, tak má možnost získa takzvané PI (Provider Independent) adresy IP, které, může volně přenášet mezi ISP, a navíc může využívat tzv. Multihoming (souběžné připojení k více ISP).
1.2 Adresace sítě IPv4 Následující tabulky specifikují nejvýznamnější rozsahy neveřejných adres IP. Adresní rozsahy IPv4 – soukromé adresy
Adresní rozsah 10.0.0.0 – 10.255.255.255 172.16.0.0 – 172.31.255.255 192.168.0.0 192.168.255.255
Prefix
Počet adres
10.0.0.0/8
2^24 = 16.777.216
172.16.0.0/12
2^20 = 1.048.576
192.168.0.0/16
2^16 = 65.536
Adresní rozsahy IPv4 – multicast (vícesměrové adresy)
Adresní rozsah 224.0.0.0224.15.255.255
Prefix
Počet adres
224.0.0.0/12
2^20 = 1.048.576
Adresní rozsahy IPv4 – localhost(lokální adresy)
Adresní rozsah 127.0.0.0 – 127.255.255.255
Prefix
Počet adres
127.0.0.0/8
2^24 = 16.777.216
Adresní rozsahy IPv4 – linkové
Adresní rozsah 169.254.0.0 – 169.254.255.255
Prefix
Počet adres
169.254.0.0/16
2^16 = 65.536
7
1.3 Adresace sítě IPv4 Pokud budeme uvažovat například síť 192.168.12.64/27 bude nás zajisté zajímat, jaké adresy budeme moci použít pro adresaci připojených počítačů a kolik jich případně máme celkem k dispozici. Při běžném použití bude adresa 192.168.12.64 označována jako síťová adresa, nebo také jako adresa sítě. Adresa 192.168.12.95 bude jakožto poslední adresa dané sítě použita pro Broadcast (všesměrové vysílání). Nakonec bude potřeba přidělit jednu adresu pro směrovač, aby byla umožněna komunikace počítačů s ostatními sítěmi. Tímto se dostáváme ke konečnému počtu použitelných adres pro počítače v rámci dané sítě. Výsledkem je celkem 32-3=29 adres pro adresaci koncových stanic. V případě adresace pomocí veřejných adres, kterých je většinou pro danou organizaci limitovaný počet, je možné použít “fintu” ve smyslu adresovaní směrovače veřejnými adresami s prefixem /32 a adresováním stanic neveřejnými adresami IP. Následně se využije překlad adres NAT (1:1 mapování). Tímto způsobem je možné využít všech dostupných adres v daném rozsahu, což v síti x.x.x.x/27 znamená všech 32 adres. Síťovou masku získáme z prefixu /27 velmi snadno. Číslo 27 znamená, že z 32bitů (4 bytů) masky má prvních 27 bitů hodnotu 1 a zbývající bity mají hodnotu 0. Jednoduchý přepočtem z bitové reprezentace zachycuje následující obrázek:
Maska sítě
Nebo alternativně: 32-27=5, 2^5=32 a to znamená, že. Maska sítě pokrývá rozsah přesně 32 adres IP.
8
1.4 Adresace sítě IPv4 – ověření znalostí U následujících sítí - 10.20.0.0/24, 10.20.0.0/26, 10.20.0.0/22, 10.20.0.0/16 uveďte: a) Síťovou masku: b) Broadcast adresu: ŘEŠENÍ
a) 255.255.255.0, 255.255.255.192, 255.255.252.0, 255.555.0.0 b) 10.20.0.255, 10.20.0.63, 10.20.63.255, 10.20.255.255 c) 10.20.0.1-10.20.0.254, 10.20.0.1-10.20.255.254
10.20.0.1-10.20.0.62,
10.20.0.1-10.20.63.254,
ŘEŠENÍ 8 12 16 18 22 25 27 29
11111111|00000000|00000000|00000000 11111111|11110000|00000000|00000000 11111111|11111111|00000000|00000000 11111111|11111111|11000000|00000000 11111111|11111111|11111100|00000000 11111111|11111111|11111111|10000000 11111111|11111111|11111111|11100000 11111111|11111111|11111111|11111000
9
255.0.0.0 255.240.0.0 255.255.0.0 255.255.192.0 255.255.252.0 255.255.255.128 255.255.255.224 255.255.255.248
2 Sítě v OS Linux – příkaz „ip“ 2.1 Příkaz ip Příkaz ip v Linuxu zastřešuje téměř veškeré nastavení sítě včetně pokročilých technik směrování, vytváření tunelů a v neposlední řadě i například nastavení VLAN dle standard IEEE 802.1Q. Vzhledem k rozsáhlým možnostem a jeho důležitosti mu bude věnováno několik následujících stránek. Nastavení sítě pomocí tohoto příkazu není složité a struktura syntaxe je veskrze jeho podpříkazy konzistentní. Příkaz ip není jediná možnost jak nastavovat síť v OS Linux a proto budou v rámci tohoto modulu uváděny i další alternativy.
Snadnosti použití napomáhají kvalitně zpracované manuálové stránky dostupné přes standardní příkaz „man”. man ip
Další usnadnění přináší dobře zpracovaná nápověda daného příkazu. Nápovědu je možné vyvolat jak na úrovní příkazu ip, tak i na úrovni jednotlivých podpříkazů jako je například ip addr, nebo ip route. ip help; ip addr help; ip route help;
Zjednodušená struktura příkazu ip vypadá následovně: ip ip ip ip ip ip
link add link | delete | set | show addr add | change | replace | delete | show route add | del | list | flush |change | … rule add | del | list | flush tunnel add | del | change | list | show | …
Nejedná se zde o kompletní výpis všech možností příkazu ip, ale jedná se na ukázku těch nejdůležitějších.
10
2.2 Příkaz ip link – nastavení rozhraní Tato variant příkazu ip slouží k nastavování síťového rozhraní. Je možné například rozhraní přejmenovat, což může byt užitečné pro lepší orientaci a snadnější rozpoznání příslušnosti rozhraní k nějaké konkrétní podsíti. To znamená, že pokud dané zařízení slouží například jako směrovač je možné rozhraní eth0 přejmenovat na LAN a rozhraní eth1 přejmenovat na WAN. V tomto případě jsme předpokládali, že rozhraní eth1 bude připojeno do sítě internet a rozhraní eth0 do lokální sítě. Nastavení jména rozhraní je možné provést následujícím příkazem ip link set eth0 name LAN
Je evidentní, že pokud bude daný směrovač následně spravovat někdo nový, bude se mnohem snáze orientovat v konfiguraci například Firewallu, protože nebude muset neustále přemýšlet nad tím, kam je dané rozhraní připojeno, ale daný fakt bude přímo vyplývat z názvu rozhraní.
Pomocí tohoto příkazu je možné nastavit hardwarovou adresu rozhraní MAC. ip link set eth0 address 00:AF:22:CD:01:EF
To samé nastavení adresy MAC, ale s použitím příkazu ifconfig. ifconfig eth0 hw ether 00:AF:22:CD:01:EF
Dále je důležité mít možnost dané rozhraní vypnout nebo naopak zapnou, což je možné použitím následujících příkazů. ip link set eth0 up ip link set eth0 down
To samé nastavení, ale s použitím příkazu ifconfig. Ifconfig eth0 up Ifconfig eth0 down
Více o použití příkazu ip link je možné nalézt v nápovědě daného příkazu.
11
2.3 Příkaz ip addr – nastavení adres IP Tímto příkazem se nastavují adresy IP na síťová rozhraní spolu s dalšími parametry, které se týkají adresace sítí. Pomocí tohoto příkazu je možné jednoduše přidávat adresy IP na rozhraní, odstraňovat adresy IP z rozhraní, případně provádět různé změny v nastavení. Na síťové rozhraní je možné přiřadit více než jednu adresu IP
Výpis všech přiřazených adres IP v daném system ip addr show
Obdodně s použitím příkazu ifconfig ifconfig
Pozor na fakt, že pomocí příkazu ifconfig není možné zobrazit více než jednu adresu IP nastavenou pomocí příkazu ip pro dané rozhraní v některých distribucích (CentOS, RHEL, …)
Nastavení 2 adres IP na rozhraní eth0: ip addr add 192.168.10.254/24 dev eth0 brd + ip addr add 192.168.20.254/24 dev eth0 brd +
Obdodně s použitím příkazu ifconfig, všesměrová adresa broadcast je nastavena automaticky ifconfig eth0 192.168.10.254/24 ifconfig eth0:1 192.168.10.254/24
Odebrání adresy 192.168.10.254/24 z rozhraní eth0 ip addr del 192.168.10.254/24 dev eth0
Obdodně s použitím příkazu ifconfig. ifconfig eth0 del 192.168.10.254
12
2.4 Příkaz ip route – nastavení směrovacích tabulek Tento příkaz se používá pro přidávání a modifikaci směrovacích záznamů. Je možné nastavovat jak běžné statické směrování, tak je možné využít tento příkaz pro směrování, které je založeno na směrovacích politikách. V tomto případě je ovšem třeba použít více směrovacích tabulek a ošetřit jejich použití pomocí pravidel, která je možné definovat pomocí příkazu ip rule. Přidání dalších směrovacích tabulek je možné docílit editací souboru: /etc/iproute2/rt_tables
Nastavení směrování působí studentům často značné potíže, nicméně je třeba poznamenat, že na vině není použití příkazu ip route. Studentům činí potíže sestavení vhodných pravidel. Při konfiguraci směrování je třeba dopředu pečlivě promyslet, čeho vlastně chceme dosáhnout a kudy pakety mohou dorazit k cíli. Také je třeba si uvědomit skutečnost, že pokud pakety dorazí správně k cíli, ještě to a priori neznamená, že existuje i cesta zpět k odesilateli. I opačnou cestu je potřeba v síti korektně nastavit.
Výpis směrovací tabulky ip route show
Přidání nového záznamu do směrovací tabulky ip route add 10.0.0.0/8 via 192.168.0.1 [ dev eth0 ]
Odstranění záznamu ze směrovací tabulky ip route del 10.0.0.0/8 via 192.168.0.1 [ dev eth0 ]
Alternativně je možné použít příkaz route route route add –net 10.0.0.0/8 gw 192.168.0.1 route del 10.0.0.0/8 gw 192.168.0.1
13
2.5 Příkaz ip route – pokročilé metody směrování Jak již bylo naznačeno na předchozí stránce, je možné používat více směrovacích tabulek, tato možnost je v řadě distribucí zkompilována již ve výchozím jádře systému. Pokud by tomu tak nebylo, je možné přidat podporu pro více směrovacích tabulek tak, že se nastaví patřičný parametr jádra. Nastavení jádra pro podporu více směrovacích tabulek. CONFIG_IP_MULTIPLE_TABLES=y
Jádro je poté samozřejmě nutné znovu přeložit a nastavit jeho zavedení při startu systému. Typická struktura souboru /etc/iproute2/rt_tables vypadá následovně:
Číslo směrovací tabulky
Jméno směrovací tabulky
255
Local
254
Main
253
Default
0
unspec
Při procházení směrovacích tabulek mají přednost ty, které mají vyšší číslo. Pokud tedy přidáme další tabulku, která bude mít číslo v rozsahu od 1 do 252 je potřeba upravit pomocí speciálních pravidel to, jakým způsobem se budou směrovací tabulky procházet, resp. která z tabulek bude použita pro směrování daného paketu. K tomu slouží příkaz ip rule, kterým je možné přidat potřebná pravidla. Pravidla mohou obsahovat definice ve smyslu: •
Pakety pocházející / nepocházející z určité sítě, určité adresy.
•
Pakety směřující / nesměřující do konkrétní sítě, určité adresy.
•
Pakety určitého typu služby TOS (Type Of Service)
•
Pakety označené firewallem (iptables), nesoucí nějaké konkrétní označení FWMARK, v tomto případě je možné na dané označení použít i masku, tzn. FWMARK/MASK
14
Pravidlo, které říká, že pakety ze sítě 223.1.2.0/24 budou směrovány pomocí tabulky „MojeTabulka“ ip rule add from 223.1.2.0/24 table MojeTabulka
Vezměme si například následující situaci, kde budeme chtít směrovat na základě zdrojové adresy, viz následující obrázek:
Směrování založené na zdrojové adrese
Ze sítě 223.1.2.0/24 se budou pakety do sítě 223.1.1.0/24 standardně směrovat přes výchozí bránu 223.1.4.2. Standardní směrování je založeno na cílové adrese. Pokud budeme chtít, aby pakety, které pocházejí z adresy 223.1.2.2, procházeli přes směrovač s adresou 223.1.3.2 namísto výchozí brány, je možné požadovaného chování docílit použitím směrování založeném na politikách. V tomto konkrétním případě na politikách dle zdrojové adresy paketů. Vlastní nastavení směrovacích tabulek bude vypadat následovně: 1. 2. 3. 4.
ip route add default via 223.1.4.2 echo “100 MojeTabulka“ >> /etc/iproute2/rt_tables ip rule add from 223.1.2.2/32 table MojeTabulka ip route add default via 223.1.3.2
Řádek číslo 1 nastavuje standardní výchozí bránu.
15
Řádek číslo 2 přidává naši vlastní směrovací tabulku číslo 100 k ostatním směrovacím tabulkám. Řádek číslo 3 přidává pravidlo, které říká, že pokud přijde paket z adresy 223.1.2.2 má se pro jeho směrování použít směrovací tabulka, která se jmenuje „MojeTabulka“. Jméno tabulky je možné ekvivalentně nahradit jejím číslem. Řádek číslo 4 přidává výchozí bránu 223.1.3.2 pro pakety, které jsou směrovány pomocí tabulky „MojeTabulka“. Teprve směrování, které je založené na politikách, dává správci sítě plnou kontrolu nad tím, jakým způsobem budou pakety směrovány sítí.
16
2.6 Příkaz ip tunnel – vytvoření tunel rozhraní Pomocí tohoto příkazu je možné vytvořit speciální rozhraní pro tunelování paketů. To znamená, že pakety jsou zapouzdřený do jiných paketů a tak jsou přenášený sítí na druhý konec tunelu, kde jsou opět obnoveny do původní podoby. Vytvoření tunelovacího rozhraní. ip tunnel add NazevRozhrani mode MOD local AdresaIP AdresaIP ip tunnel add tun0 mode gre local 223.1.1.1 remote 1.2.3.4
remote
módy které lze použít: ipip, gre a sit. Změna tunelovacího rozhraní (například změna klíče) ip tunnel change tun0 mode gre local 223.1.1.1 remote 1.2.3.4 key 123456
Odstranění tunelovacího rozhraní ip tunnel del tun0
Výpis tunelovacích rozhraní Ip tunnel show
Pozor na fakt, že každý tunel má dva konce, na druhém konci je potřeba provést to samé, ale adresy IP budou samozřejmě opačně.
K čemu může být tunelování dobré? Tunely se používají v řadě případů asi nejtypičtějším použitím je například vytvoření šifrovaného tunelu v rámci připojení pomocí VPN (Virtual Private Network). V tomto případě je ovšem vytvářen zcela automaticky a většinou bez jakékoliv interakce s uživatelem. K vytvoření tunelu vás mohou vest i jiné pohnutky. Vezměme si například propojení poboček, kde chceme jednoduše sdílet nějaký segment veřejných adres IP. Nebo můžeme mít problém získat veřejný segment adres IP v nějaké konkrétní lokalitě. Vzhledem k faktu, že de facto veřejné adresy IP došly, může se to lehce stát. Pokud odhlédneme od případných dalších technických obtíží, může být tunelování paketů řešením. Představme si síť jako je na následujícím obrázku.
Představme si, že v lokalitě „A“ máme k dispozici veřejný segment PI (Provider Independent) adres IP o velikosti bloku C (256 adres IP). V lokalitě „C“ potřebujeme instalovat několik serverů, ale a vzhledem k faktu, že nechceme být závislí na .rozsahu adres IP lokálního ISP, použijeme tunelu k propojení našich sítí. V tomto případě nemusíme s nikým na trase dohadovat směrování naší sítě, 17
což by bylo pravděpodobně jen těžko proveditelné. Představte si totiž, že pod směrovačem „C” se ve skutečnosti může skrývat například 8 směrovačů, kde v nejhorším případě bude každý patřit někomu jinému Řešení může vypadat tak, že si vytvoříme tunel ze směrovače „A“ do „C“ a na směrovači „A“ nastavíme směrování požadovaného segmentu adres IP do takto vytvořeného tunelu. Na směrovači „C“ zase obráceně nastavíme směrování pouze z přidělených adres zpět do tunelu a tím pádem ostatní provoz v lokalitě „C“ nebude nijak ovlivněn. Vytvoření tunelu na „A“: ip tunnel add tun0 mode gre local 223.1.4.1 remote 223.1.6.1 key 123456
Vytvoření tunelu na „C“: ip tunnel add tun0 mode gre local 223.1.6.1 remote 223.1.4.1 key 123456
Po té již stačí jen rozhraní aktivovat, nastavit adresy IP a nastavit směrování.
Tunelování segmentu adres IP.
18
3 Sítě v OS Linux – ostatní nastavení 3.1 Nastavení překladu adres DNS – revolver Pro potřeby síťové komunikace je ve většině případů nutné nastavit DNS revolver. Ten slouží k překladům doménových jmen libovolné úrovně na adresu IP a opačně. Nastavení je možné provést editací souboru /etc/resolv.conf, typický obsah může vypadat například takto: search fel.cvut.cz nameserver 10.0.0.1 nameserver 8.8.8.8
Toto nastavení nám zajistí, že pokud budeme potřebovat přistupovat například ke stránkám www.comtel.cz, dojde k odeslání požadavku na překlad doménového jména na IP adresu na specifikovaný jmenný server. Ten nám může vrátit několik různých odpovědí. Nejdůležitější z nich jsou odpovědi typu: doména neexistuje, anebo obdržíme požadované informace o doméně. Poté co naše zařízení získá adresu IP protějšku, může dojít k uskutečnění požadované komunikace. Také, protože jsme v konfiguraci zadali řádek začínající klíčovým slovem search, tak pokud zadáme například jenom www do adresního řádku prohlížeče, tak DNS revolver se pokusí dané jméno doplnit o fel.cvut.cz a vrátí výsledek.
19
3.2 DHCP – klient DHCP (Dynamic Host Configuration Protocol) je protokol, který slouží k automatickému nastavení adres IP připojených zařízení. Díky DHCP není potřeba, aby administrátor sítě konfiguroval každé síťové zařízení zvlášť, případná nová zařízení jsou taktéž automaticky nastavena po jejich připojení. Tento protokol řeší: nastavení adresace stanic, nastavení směrovacích tabulek, nastavení jmen stanic, případně další síťová nastavení. Manuální spuštění DHCP klienta na rozhraní eth2 dhclient eth2
Pro automatické nastavení síťových rozhraní je třeba editovat patřičný soubor s konfigurací /etc/network/interfaces Pro automatickou konfiguraci rozhraní eth2 ze serveru DHCP a automatickou aktivaci rozhraní po startu je potřeba přidat následující řádky do výše zmiňovaného souboru: allow-hotplug eth2 iface eth2 inet dhcp
20
3.3 Síťový most – Network Bridge V některých případech je potřeba propojit síťová rozhraní na úrovni 2 vrstvy RMOSI modelu. K tomuto účelu slouží v OS Linux balíček nástrojů bridge-utils, který obsahuje příkaz brctl. Použití příkazů je vcelku jednoduché. Příkaz má následující syntaxi. brctl addbr | delbr | addif | delif |show| …
v případě vytváření síťového mostu by daná rozhraní, která budou v rámci mostu použita, neměla být aktivní a neměla by mít přiřazené adresy IP
Příklad vytvoření a nastavení sítového mostu z rozhraní eth1,tun0, eth0.10, a nastavení adres IP na daném síťovém mostu. brctl addbr br0 brctl addif br0 eth1 brctl addif br0 tun0 brctl addif br0 eth0.10 brctl stp br0 on brctl setbridgeprio br0 8192 ip addr add 192.168.10.254/24 dev br0 brd + ip link set dev br0 up
21
3.4 OS Linux jako síťový směrovač Pokud jsme se v textu zmiňovali o směrování, pak se doposud jednalo o zajištění dostupnosti jednotlivých sítí přímo z daného zařízení. Linux OS je možné ovšem také použít jako plnohodnotný síťový směrovač, který bude předávat pakety z jedné sítě do jiné. Nastavení statického směrování plně pokrývají již zmiňované příkazy route a ip route. Pokud se budeme bavit o dynamickém směrování ať už to je RIP, RIPv2, OSPF, BGP a další je třeba doinstalovat další podpůrné nástroje a daemony, které dynamické směrovaní zajistí. Za zmínku zde stojí projekt Zebra, resp jeho nástupce Quagga. V OS Linux je standardně předávání paketů mezi rozhraními při směrování zakázáno. Směrování je tedy nutné nejprve povolit. Povolení směrování je jednoduché, je možné ho zapnout hned několika způsoby. a) zápisem hodnoty 1 do pseudo souboru /proc/sys/net/ipv4/ip_forward echo “1“ >/proc/sys/net/ipv4/ip_forward
b) nebo pomocí příkazu sysctl sysctl –w net.ipv4.ip_forward=”1”)
c) nebo editací souboru /etc/sysctl.conf (automatické zapnutí směrování po startu OS)”1” přidáním řádku: /etc/sysctl.conf
net.ipv4.ip_forward=”1”
do
souboru
Pokročilejšího čtenáře možná v tuto chvíli napadne otázka: Jak je to na OS Linux s překladem adres NAT (Network Address Translation), případně PAT (Port Address Translation)? V případě směrovačů na bázi OS Linux je řešení ponecháno na straně firewallu. V případě většiny distribucí se jedná o balík Iptables o němž bude velká část následujícího textu.
22
3.5 Příkazy – ověření znalostí a) Jaký příkaz použijete pro nastavení adresy IP? b) Jaký příkaz použijete pro nastavení výchozí brány? c) Jaký příkaz použijete ke změně hardwarové adresy MAC? d) Kde se v OS Linux nastavuje DNS revolver? e) Jaký příkaz použijete pro vytvoření VLAN dle IEEE - 802.1Q? f) S informacemi jaké vrstvy pracuje síťový most? ŘEŠENÍ
a) ip addr add, případně ifconfig b) ip route add , případně route add c) ip link set, případně ifconfig eth0 ether hw. d) v souboru /etc/resolv.conf e) ip link add,případně vconfig f) Jedná se o druhou vrstvu RM-OSI modelu. (MAC) g) Jedná se o třetí vrstvu RM-OSI modelu. (MAC)
23
4 Sítě v OS Linux – zabezpečení sítí 4.1 TCP Wrappers / Iptables Způsobu jakým lze ošetřit přístup k zařízení s OS Linux je několik, mezi základní možnosti patří využití Firewallu nebo vrstvy TCP Wrappers.
TCP Wrappers Použití této knihovny je docela jednoduché. Editací souborů /etc/hosts.allow a /etc/hosts.deny lze řídit z jakých adres IP bude povolen přístup k jednotlivým daemonům. Typicky je tak možné ošetřit přístup k poštovním službám, vzdálenému přihlášení pomocí protokolu SSH, přístup k webovému obsahu a samozřejmě k celé řadě dalších služeb. Definice daných souborů může vypadat například následovně: /etc/hosts.allow sshd: 192.168.0.0/255.255.0.0 sshd: 172.16.0.0/255.240.0.0 sshd: 10.0.0.0/255.0.0.0
etc/hosts.deny ALL:ALL
Toto nastavení říká, že kromě přístupu z lokální sítě (neveřejné adresy IP) ke službě SSHd, nebude nikomu povolen přístup k danému zařízení.
Je třeba si ovšem uvědomit, že se to týká pouze služeb, které jsou vytvářeny službou inetd - /etc/inetd.conf
Iptables V tomto případě se jedná velice mocný program, pomocí něhož je možné vystavět komplexní bránu Firewall včetně překladu adres NAT nebo PAT. Dokáže definovat pravidla nejenom v bezestavovém módu firewallu, ale i v modu stavového firewallu. Vzhledem k velkému významu a rozsahu programu Iptables, bude tomuto tématu podrobněji věnováno několik následujících stránek.
24
4.2 Iptables – struktura Následující obrázek zachycuje zjednodušeně, jakým způsobem prochází pakety bránou, která je založena na Iptables.
Zjednodušená struktura Iptables
Obrázek popisuje situaci, kdy dané zařízení může být zdrojem paketu, cílem paketu, anebo může paket daným zařízením pouze procházet z jedné sítě do jiné. Na obrázku jsou zachyceny nejdůležitější dva typy tabulek. Těchto tabulek je ve skutečnosti více tak jak zachycuje následující tabulka a jak je z tabulky patrné struktura Iptables je mnohem komplikovanější. Pro běžné použití ovšem bohatě dostačuje použití tabulek „filter“ a „nat“ dle obrázku. Výběr tabulky se provádí pomocí parametru -t. iptables –t nat –A POSTROUTING –o eth1 –j MASQUERADE
25
Typ tabulky (tables)
Filter
Nat Mangle
Raw
Seznamy pravidel (chains)
Význam
INPUT, OUTPUT, FORWARD
Výchozí tabulka, není potřeba ji explicitně uvádět. Slouží k definici pravidel pro filtrování provozu.
PREROUTING, OUTPUT, POSTROUTING PREROUTING, INPUT, OUTPUT, FORWARD, POSTROUTING
PREROUTING, OUTPUT
Slouží k manipulaci s obsahem paketů. Slouží k manipulaci s obsahuem paketů ve speciálních případech Slouží především k definicím vyjímek v případě použití překladu adres s podporou connection tracking, má nejvyšší prioritu.
•
PREROUTING – ke zpracování paketu dochází před vlastním směrováním paketu
•
INPUT – ke zpracování dochází v případě, že jsou pakety určeny pro dané zařízení po rozhodnutí o směrování paketu
•
FORWARD – ke zpracování dochází v případě, že jsou pakety určeny pro směrování do jiné sítě, po rozhodnutí o směrování paketu.
•
OUTPUT – ke zpracování dochází poté, co je paket vygenerován lokálním zařízením.
•
POSTROUTING – ke zpracování dochází těsně před tím, než je paket zařazen do fronty na rozhraní pro odeslání do sítě.
26
4.3 Iptables – pravidla (manipulace s pravidly) Příkazy pro práci s pravidly je možné rozdělit na několik podskupin: manipulace s pravidly, pravidla pro selekci paketu a akce.
Manipulace s pravidly •
-A, --append přidání pravidla na konec seznamu
•
-D, --delete odebrání konkrétního pravidla
•
-I, --insert přidání pravidla na konkrétní místo seznamu, pokud to není specifikováno, pak je pravidlo přidáno na začátek seznamu
•
-R, --replace nahrazení vybraného pravidla
•
-L, --list výpis pravidel
•
-F, --flush vymazání všech pravidel v daném seznamu, pokud ten není uveden, pak dojde k vymazání všech pravidel v dané tabulce.
•
-Z, --zero vynulování počítadel paketů a přenesených bytů u jednotlivých pravidel
•
-N, --new-chain vytvoření nového seznamu pravidel daného jména vedle standardních seznamů jako jsou INPUT, OUTPUT, apod.
•
-X, --delete-chain odstranění seznamu pravidel, nesmí se na něj odkazovat žádné pravidlo
•
-P, --policy Nastavuje politiku zpracování paketů pro konkrétní seznam. Lze pouze u vnitřních seznamů pravidel, jako jsou INPUT, OUTPUT, apod..
Příklad užití zmíněných pravidel: iptables iptables iptables iptables iptables
–A –A –A –A –I
INPUT INPUT INPUT INPUT INPUT
–p tcp –s 192.168.0.0/16 –-dport 22 –j ACCEPT –p tcp –s 172.16.0.0.0/12 -–dport 22 –j ACCEPT –p tcp –s 10.0.0.0/8 -–dport 22 –j ACCEPT –p tcp –-dport –j DROP 4 –p tcp –s 147.32.32/24 –dport 22 –j ACCEPT
Nastavení politik pomocí -P nebo --policy si zaslouží zvláštní pozornost vzhledem k faktu, že zásadně ovlivňuje způsob, jakým se seznamem pravidel pracuje. Výchozí nastavení je na hodnotu ACCEPT. To znamená, že pokud není uvedeno jinak, všechny pakety daným seznamem pravidel mohou procházet. Pokud se naopak daný seznam nastaví na politiku DROP, znamená to, že všechny pakety budou implicitně zahozeny bez jakékoliv další akce, není-li to v seznamu pravidel definováno jinak.
27
Použití vypadá následovně: iptables –P INPUT DROP iptables –P FORWARD DROP iptables –P OUTPUT ACCEPT
28
4.4 Iptables – pravidla (selekce paketů) Velmi významná část pravidla je právě ta část, kde definujeme, na jaké pakety se bude vztahovat námi zvolená akce. Pakety je možné vybírat na základě velkého množství různých parametrů.
Selekce paketů – základní parametry •
-p, --protocol tímto přepínačem máme možnost zvolit typ protokolu, např. tcp, udp, icmp, esp, all, …
•
-s, --source specifikace zdroje paketu, např. konkrétní počítač, síť, …
•
-d,--destination specifikace cíle paketu, např. konkrétní počítač, síť, …
•
-j, --jump specifikace akce, která se provede s daným paketem, např ACCEPT, DROP, REJECT, MASQUERADE, DNAT, SNAT, …
•
-i, --in-interface specifikace vstupního zařízení příchozího paketu
•
-o, --out-interface specifikace výstupního zařízení odchozího paketu.
U daných parametrů je možné pracovat i s jejich negací. To je možné pomocí znaku „!”. Viz čtvrtý řádek následujícího příkladu.
iptables iptables iptables iptables iptables
-A -A -A -A –A
FORWARD –p tcp –d 10.20.30.0/24 –i eth3 –j ACCEPT FORWARD –p tcp –d 10.20.30.0/24 –i eth2 –j DROP INPUT –p tcp –s my.server.cz –i eth0 –j ACCEPT INPUT –p tcp ! –s my.server.cz –i eth0 –j DROP INPUT –p udp -j DROP
iptables –t nat –A POSTROUTING –o eth4 –j MASQUERADE iptables –t nat –A POSTROUTING –o eth3 –j SNAT –-to 172.31.255.10
Selekce paketů – rozšíření základních parametrů Pakety je dále možné rozlišovat s použitím dalších modulů. Ty se vztahují vždy ke konkrétnímu protokolu. Velmi dobře to je vidět například na rozdílu protokolů TCP a UDP. V případě protokolu TCP můžeme na rozdíl od protokolu UDP pracovat navíc i s příznaky daného spojení a se stavovou informací o daném spojení. V případě stavových informací se používá samostatný modul state. Odtud také pochází pojem stavový firewall. V případě obou protokolů můžeme rozlišovat pakety podle zdrojového a cílového portu. Stavový firewall (statefull firewall) – nazývá se tak brána firewall, která dokáže pakety dále rozlišit i podle toho v jaké fázi se spojení nachází. Tzn. Je možné určit zda se jedná o nově vytvářené spojení, již existující probíhající spojení, apod..
29
4.5 Iptables – pravidla (pokročilé moduly selekce paketů) state •
--state specifikuje stav spojení, na jehož základě má být paket vybrán. Možné stavy jsou NEW, RELATED, ESTABLISHED, INVALID, UNTRACKED.
tcp •
--source-port, --sport spojení.
•
--destination-port, --dport specifikuje cílový port nebo rozsah portů tcp spojení
•
--tcp-flags specifikuje, zda se má ověřit paket na nastavení některého z příznaků. Např ACK, FIN, RST, …
specifikuje zdrojový port nebo rozsah portů tcp
udp •
--source-port, --sport diagramu.
•
--destination-port, --dport specifikuje cílový port nebo rozsah portů udp datagramu
specifikuje zdrojový port nebo rozsah portů udp
dscp •
--dscp specifikuje porovnání paketů dle hodnoty DSCP [ 0 – 63 ]
•
--dscp-class specifikuje porovnání paketů dle třídy DSCP [ BE, EF, AFxx, CSx ]
icmp •
--icmp-type specifikuje konkrétní typ ICMP zprávy
Jedná se o ukázku pouze několika málo základních modulů / pravidel. Pro kompletní přehled doporučuji, zvídavému čtenáři, nahlédnou do manuálových stránek příkazu iptables (na Linuxu jsou manuálové stránky jednoduše dostupné po zadání příkazu man iptables).
Požadavek: Na dané zařízení je možné se připojit pouze pomocí protokolu SSH (standardně na portu TCP/22), stejně tak zařízení dokáže navázat komunikaci na
30
protokolu SSH. Ostatní provoz z internetu je blokován. Zařízení navíc může komunikovat s kýmkoliv. iptables iptables iptables iptables
–A –A –P –P
INPUT –p tcp –m state –-state=NEW –-dport 22 –j ACCEPT INPUT –m state –-state=RELATED, ESTABLISHED –j ACCEPT INPUT DROP OUTPUT ACCEPT
První řádek říká, že s daným zařízením můžeme zahájit komunikaci odkudkoliv pomocí protokolu TCP na portu 22. Pozor na to, že toto pravidlo povoluje pouze zahájení komunikace a ne komunikaci samotnou. Druhý řádek říká, že pokud již máme navázáno spojení, paketům tohoto spojení je povoleno projít daným firewallem. Třetí řádek říká, že pokud není specifikováno jinak, pakety jsou na vstupu zahozeny. Čtvrtý řádek říká, že můžeme odesílat pakety kamkoliv, bez omezení není-li specifikováno jinak.
31
4.6 Iptables – akce Po té co umíme pravidla přidávat a definovat, je třeba definovat jaká akce má být s danými pakety provedena. Mezi základní akce patří ACCEPT, DROP, QUEUE a RETURN. •
ACCEPT – znamená, že daný paket projde.
•
DROP – znamená, že paket bude zahozen bez další doprovodné akce.
•
QUEUE – znamená, že paket bude předán do uživatelského prostoru.
•
RETURN – znamená, že se ukončí zpracování v daném seznamu a bude se pokračovat ve zpracování pravidel v seznamu, ze kterého byl tento zavolán.
•
Kromě základních akcí existují i další akce, které rozšiřují možnosti uplatnění programu iptables. Následující seznam zachycuje ty nejzajímavější z nich.
•
MASQUERADE – používá se v tabulce nat, používá se místo akce SNAT v případě použítí dynamicky přidělovaných veřejných adres IP. Například v případě připojení pomocí ADSL.
•
SNAT – používá se v tabulce nat, tato akce mění zdrojovou adresu paketu.
•
DNAT – používá se v tabulce nat, slouží ke změně cílové adresy paketu.
•
DSCP – umožňuje nastavit hodnoty bitů DSCP v rámci hlavičky paketu.
•
LOG – umožňuje logování paketů syslog daemonem.
•
MARK – umožňuje značkování paketů. Toho je možné dále využít například v případě směrování na základě přidělené značky.
•
REJECT – Na rozdíl od DROP zahodí paket, ale současně umožňuje vrátit odesilateli chybovou hlášku pomocí protokolu ICMP.
iptables –A INPUT -p tcp –-dport 25 –j DROP iptables –A INPUT –p tcp –-dport 25 –j LOG iptables –A INPUT -p tcp –-dport 25 –j REJECT --reject-with tcpreset iptables –A PREROUTING –p tcp –-dport 8080 –j DNAT –-to 192.168.0.10:80
32
4.7 Iptables – překlad adres NAT / PAT Proč překládat adresy? V devadesátých letech se ukázalo, že adres IP není nevyčerpatelně mnoho jak se na první pohled při vytváření protokolu IPv4 mohlo zdát. Dalším faktem v té době (před rozmachem internetu) bylo, že většina počítačů uvnitř sítí potřebovala komunikovat pouze mezi sebou a jen mizivé procento zařízení (servery) potřebovaly komunikovat mimo tuto síť. Proto se zrodil nápad používat překlad adres. Překlad adres funguje tak, že je možné manipulovat s hlavičkou paketu a je možné měnit některé parametry dle zadaných pravidel. Na následujícím obrázku jsou vyznačeny dva seznamy pro pravidla a to POSTROUTING a PREROUTING. Do seznamu PREROUTING se vstupuje ihned po přijetí paketu a je možné v rámci tohoto seznamu definovat pravidla pro změnu cílové adresy IP a cílového portu. Do seznamu POSTROUTING se vstupuje těsně před tím, než je paket odeslán do sítě. Zde je možné pro změnu měnit IP adresu zdroje a zdrojový port.
33
Zjednodušená struktura Iptables
Zde bych chtěl upozornit na používání správné terminologie, velmi často se mluví o překladu adres NAT, ale v drtivé většině případů se jedná a PAT (někdy také nazýváno NAPT (Network Address Port Translation). To znamená, že nedochází k překladu neveřejných adres na veřejné, ale za jednou veřejnou adresou se skrývá větší množství neveřejných adres, které komunikují díky tomu, že nejenom že dochází k manipulaci s adresou IP, ale rovněž dochází k manipulaci se zdrojovými porty. Kdy jaké seznamy použít? V případě, že chceme připojit za směrovač s veřejnou adresou IP nějakou síť, kde se používají neveřejné adresy IP, tak k tomu slouží seznam POSTROUTING. Tak jak pakety opouštějí daný směrovač a putují dále do internetu, je jim v hlavičce nahrazována jejich zdrojová adresa IP případně zdrojový port. Díky tomu, že se tam místo neveřejné adresy IP objeví veřejné, je možné, aby odpovědi na dané požadavky byli schopny dorazit zpět alespoň na výchozí směrovač, kde je uskutečňován překlad adres. Protože by tohle bylo málo, tak si navíc směrovač udržuje informace o překladech a na jejich základě j je zase zpětně schopen vrátit
34
do vracejícího se paketu příslušnou neveřejnou adresu IP. Čímž dojde k doručení paketu ke správnému zařízení Příklad nastavení: pokud se je veřejná adresa přidělována dynamicky a rozhraní do internetu je rozhraní eth1: iptables -t nat –A POSTROUTING –o eth1 MASQUERADE
-s 192.168.0.0/24 –j
pokud máme statickou veřejnou adresu IP a rozhraní do internetu je rozhraní eth1: iptables -t nat –A POSTROUTING –o eth1 --to 1.2.3.4
-s 192.168.0.0/24 –j SNAT
V případě, že máme neveřejnou síť, za překladem adres a chceme, aby nějaká služba na konkrétním zařízení byla dostupná z internetu, je možné zařídit, aby daná služba byla dostupná pod veřejnou adresou směrovače na nějakém konkrétním portu. Toho se docílí přidáním pravidla do seznamu PREROUTING. Příklad nastavení: Chceme, aby na serveru s adresou192.168.0.10 byla dostupná webová služba. iptables –t nat –A PREROUTING –p tcp –dport 80 –j DNAT --to 192.168.0.10
případně může přesměrovat na jiný port: iptables –t nat –A PREROUTING –p tcp –i eth1–dport 8080 –j DNAT -to 192.168.0.10:80
Překlad adres není Firewall!
Pozor na fakt, že řadu lidí svádí představa o tom, že “není možné“ komunikovat ze sítě internet do vnitřní sítě s neveřejnými adresami IP. To není pravda. Pokud bude útočník například ve stejné síti jako vaše rozhraní s veřejnou IP, pak mu stačí pouze nastavit svoje směrovaní do vaší sítě a váš směrovač bude ochotně směrovat jeho pakety.
35
4.8 Iptables – výpis pravidel Na předchozích stránkách bylo ukázáno jak pravidla vytvářet případně mazat nebo měnit. Neméně důležité je mít možnost pravidla přehledným způsobem vypsat anebo ještě lépe, mít možnost podívat se jak daná pravidla fungují. K tomu slouží v programu Iptables speciálně parametr -L, který slouží k výpisu pravidel daného seznamu. Pokud se jméno konkrétního seznamu neuvede, jsou vypsány všechny seznamy pro aktuální tabulku. Parametr „-L“ může být navíc doplněn parametrem „-v“ pro podrobnější výpis. Použití je jednoduché a vypadá následovně: výpis všech pravidel tabulky „filter“: iptables –L –v
výpis všech pravidel tabulky „nat“: iptables –t nat –L -v
výpis pravidel tabulky „filter“ v seznamu pravidel FORWARD: iptables –L FORWARD –v
výpis všech pravidel tabulky „filter“, nebudou se překládat adresy IP pomocí DNS: iptables –L –v -n
36
4.9 Iptables – ověření znalostí A) Jaké bude pořadí pravidel po použití následující sekvence příkazů? iptables iptables iptables iptables iptables iptables iptables
–I –I –I –A –A –I –I
INPUT INPUT INPUT INPUT INPUT INPUT INPUT
–s 192.168.0.1 –j ACCEPT –s 192.168.0.2 –j ACCEPT –s 192.168.0.3 –j ACCEPT –s 192.168.0.4 –j ACCEPT –s 192.168.0.5 –j ACCEPT 4 –s 192.168.0.6 –j ACCEPT 4 –s 192.168.0.7 –j ACCEPT
ŘEŠENÍ Chain INPUT (policy ACCEPT pkts bytes target destination 0 0 ACCEPT anywhere 0 0 ACCEPT anywhere 0 0 ACCEPT anywhere 0 0 ACCEPT anywhere 0 0 ACCEPT anywhere 0 0 ACCEPT anywhere 0 0 ACCEPT anywhere
38 packets, 3841 bytes) prot opt in out
source
all
--
any
any
192.168.0.3
all
--
any
any
192.168.0.2
all
--
any
any
192.168.0.1
all
--
any
any
192.168.0.7
all
--
any
any
192.168.0.6
all
--
any
any
192.168.0.4
all
--
any
any
192.168.0.5
B) Definujte sadu pravidel pro server, který bude sloužit jako brána do internetu a bude na něm běžet webový server na standardním portu (80). Dále bude možné k danému server přistupovat pomocí protokolu SSH rovněž na standardním portu (22). Uživatelům vnitřní sítě a serveru samotnému bude umožněn přístup kamkoli. Veškeré ostatní pakety budou zahazovány. ŘEŠENÍ iptables –A INPUT –p tcp --dport 80 –m state --state=NEW –j ACCEPT iptables –A INPUT –p tcp --dport 22 –m state --state=NEW –j ACCEPT iptables –A INPUT –m state --state=RELATED,ESTABLISHED –j ACCEPT iptables –A FORWARD –i eth0 –o eth1 –j ACCEPT iptables –A FORWARD –i eth1 –o eth0 –m state --state=RELATED, ESTABLISHED –j ACCEPT iptables –t nat –A POSTROUTING –o eth1 –j SNAT --to 147.32.32.10 iptables –P INPUT DROP iptables –P FORWARD DROP iptables –P OUTPUT ACCEPT
37
5 Sítě v OS Linux – užitečné nástroje 5.1 Tcpdump Tcpdump je velmi mocný nástroj, který slouží k zachytávání provozu na rozhraní. Sice se jedná pouze o textový konzolový nástroj, nicméně to nijak nesnižuje jeho upotřebitelnost. Pomocí tohoto nástroje je možné zachytávat provoz dle velkého množství kriterií. Je možné zachytávat pakety konkrétních protokolů, s konkrétní adresou IP nebo MAC, pakety z určitých sítí, atd. Zachycené pakety se standardně vypisují na standardní výstup, podle speciálních přepínačů je možné řídit, jak podrobně budou pakety vypisovány, kolik jich bude zachyceno, případně je možné určit, kolik bytů z každého paketu bude zachyceno. Ve většině případů je totiž důležitá pouze hlavička paketu. Pakety je také možné zachytávat do souborů, což je obzvláště výhodné pro pozdější analýzu provozu například pomocí grafického nástroje WireShark (dříve Ethereal). Případně může uložení do souboru sloužit pro archivaci měření. K čemu je dobré zachytávat pakety? Samozřejmě, že primárním cílem není někoho “špehovat”, ale informace o provozu mohou být velmi užitečné při řešení řady problémů, které mohou v síti nastat.
Představte si například běžnou situaci, kdy se snažíte zprovoznit například směrovač. V případě nefunkčnosti vaší konfigurace je velmi dobré mít k dispozici nějaký nástroj, který vám umožní sledovat, kam v síti se dostaly vaše pakety, a na základě této znalosti je možné určit, na kterém prvku je chybná konfigurace.
Konkrétně u směrování je důležité nejenom zajistit, aby byly pakety směrovány dobře k cíli, ale je třeba pohlídat, aby existovala i správná cesta zpět.
Příklad použití může vypadat například takto (bude zachycen protocol SIP v síti 10.0.0.0/8 kromě adresy provozu z adresy 10.10.10.10, to vše na rozhraní eth4 ): tcpdump -i eth4 net 10.0.0.0/8 and udp dst port 5060 and not host 10.10.10.10
výstup: tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth4, link-type EN10MB (Ethernet), capture size 96 bytes 21:44:42.999547 IP 10.99.99.66.sip > 212.24.128.56.sip: SIP, length: 475
38
21:44:43.025307 length: 370 21:44:43.349312 length: 4 21:44:44.268841 length: 4
IP
212.24.128.56.sip
>
10.99.99.66.sip:
SIP,
IP
212.24.128.56.sip
>
10.99.99.47.sip:
SIP,
IP
212.24.128.56.sip
>
10.99.99.86.sip:
SIP,
Jak vidno, program nás upozorňuje na možnost použití dalších přepínačů pro podrobnější výpis informací z hlavičky paketů.
Zachycení provozu do souboru provedeme například následovně: tcpdump -i eth4 net 10.0.0.0/8 and udp dst port 5060 and not host 10.10.10.10 -w /root/zachyceny_provoz.txt -c 10
V tomto případě dojde k zachycení přesně 10 paketů a jejich uložení do příslušného souboru.
Při ukládání do soboru je možné postupovat i odlišně, například je možné nastavit, že se budou vytvářet soubory konkrétní velikosti a bude se jim přidělovat sekvenční číslo z určitého rozsahu. To znamená, že pokud velikost souboru dosáhne konkrétní velikosti, založí se nový soubor s daným jménem a příslušným číslem. Po vyčerpání číselné řady se řada vynuluje a začne se počítat znovu. V tomto běhu již dochází k přepisu starších souborů. K čemu je to dobré? Pokud se nějaký problém objevuje v síti sporadicky, třeba 2 krát do měsíce, je možné takto zachytávat provoz například za posledních 24h. Pokud se problém objeví lze jednoduše dané soubory analyzovat. Rozdělení na více menších souborů je vhodné proto, že při větším objemu provozu v síti jsou soubory značně velké, a programy pro analýzu provozu mohou mít problém, pokud je v souboru uloženo například více než 1x10^6 paketů.
39
5.2 Netstat Jedná se o další z užitečných nástrojů pro nasazení OS Linux v síti. Této program slouží k zobrazení řady rozličných informací o nastavení sítě. Ať už to jsou směrovací tabulky, statistické informace o síťových rozhraních, informace o překladu adres, případně členství ve skupinách vícesměrového vysílání. Program je také možné využít pro zobrazení seznamu síťových připojení k danému zařízení, anebo je možné zobrazit na jakých portech je dané zařízení připraveno ke komunikaci. Pokud budeme chtít zjistit například to, jaké služby jsou dostupné na konkrétním zařízení je možné požadovaná data získat spuštěním následujícího příkazu: netstat -a -p -n --inet
výstup: Proto Recv-Q Send-Q PID/Program name tcp 0 0 1489/dovecot tcp 0 0 1711/mysqld tcp 0 0 5310/spamd.pid tcp 0 0 1489/dovecot tcp 0 0 3656/perl tcp 0 0 4017/master tcp 0 0 4017/master udp 0 0 3656/perl
Local
Address
Foreign
Address
State
0.0.0.0:993
0.0.0.0:*
LISTEN
0.0.0.0:3306
0.0.0.0:*
LISTEN
127.0.0.1:783
0.0.0.0:*
LISTEN
0.0.0.0:*
LISTEN
0.0.0.0:10000
0.0.0.0:*
LISTEN
127.0.0.1:25
0.0.0.0:*
LISTEN
0.0.0.0:25
0.0.0.0:*
LISTEN
0.0.0.0:143
0.0.0.0:10000
0.0.0.0:*
Více informací o příkazu netstat je k nalezení v manuálových stránkách. Ty jsou dostupné po zadání příkazu: „man netstat“.
40
6 Sítě v OS Linux – závěrečné cvičení 6.1 Test 1. Jakou masku sítě má síť: 192.168.0.1/26? a) 255.255.0.0 b) 255.255.255.0 c) 255.255.255.192 d) 255.255.255.224 správné řešení: c
2. Jakou masku sítě má síť: 192.168.0.1/22? a) 255.255.0.0 b) 255.255.224 c) 255.255.192.0 d) 255.255.240.0 správné řešení: d
3. Jaký příkaz(y) použijete pro přidání záznamu do směrovací tabulky v OS Linux? a) iptables b) ip c) route d) ifconfig správné řešení: b, c
4. Jaký přílaz(y) použijete pro nastavení hardwarové adresy síťové karty? a) iptables b) ip c) route d) ifconfig správné řešení: b, d
41
5. Jaký přílaz(y) použijete pro nastavení překladu adres NAT v OS Linux? a) iptables b) ip c) route d) ifconfig správné řešení: a
6. Broadcast adresa sítě 10.0.8.0/22 je? a) 10.0.12.255 b) 10.0.8.1 c) 10.0.8.255 d) 10.0.11.255 správné řešení: d
7. Síťové rozhraní může mít přiděleno N adres, kde N je? a) 0 - rozhraní nemusí mít žádnou adresu IP b) 1 - rozhraní musí mít právě 1 adresu IP c) N<5 - maximálně 4 adresy IP d) N - více než 1 adresu IP. správné řešení: a, b, d
8. Maximální počet směrovacích tabulek v OS Linux je? a) 1 b) 4 c) 16 d) 256 správné řešení: d
42
9. Na základě jakého údaje z hlavičky paketu je prováděno běžné směrování paketu v síti? a) zdrojová adresa IP b) cílová adresa IP c) typu služby (ToS) d) velikosti paketu správné řešení: b
10. Kde se v linuxu definují jmenné servery pro překlad doménových jmen na adresy IP a zpět? a) v souboru /etc/inittab b) v souboru /var/named/etc/named.conf c) v souboru /etc/named.conf d) v souboru /etc/resolv.conf správné řešení: d
11. S informacemi jaké vrstvy pracuje síťový most? a) 1 vrstvy RM-OSI modelu b) 2 vrstvy RM-OSI modelu c) 3 vrstvy RM-OSI modelu d) 4-7 vrstvy RM-OSI modelu správné řešení: b
12. S informacemi jaké vrstvy pracuje síťový směrovač? a) 1 vrstvy RM-OSI modelu b) 2 vrstvy RM-OSI modelu c) 3 vrstvy RM-OSI modelu d) 4-7 vrstvy RM-OSI modelu správné řešení: c
43
13. Kterou tabulku Iptables použijeme pro řízení přístupu k serveru ? a) filter b) nat c) mangle d) raw správné řešení: a
14. Kterou tabulku Iptables použijeme pro přesměrování portů (tzv. Port Forwarding / Port Redirection)? a) filter b) nat c) mangle d) raw správné řešení: b
15. Které parametry Iptables použijeme pro přidání pravidel? a) D b) A c) L d) I správné řešení: b, d
16. Jaký parametr použijeme pro odstranění všech pravidel v dané tabulce / seznamu iptables? a) R b) F c) Z d) P správné řešení: b
44
17. Jaký parametr použijeme INPUT/FORWARD/OUTPUT?
pro
nastavení
politiky
seznamů
a) R b) F c) Z d) P správné řešení: d
18. Který parametr Iptables použijeme pro odstranění pravidla? a) D b) A c) L d) I správné řešení: a
19. Jakou akci zvolíme v Iptables pokud chceme zabránit dané komunikaci a nechceme o tom zpětně šířit žadnou informaci? a) DNAT b) MASQUERADE c) REJECT d) DROP správné řešení: d
20. Jaké parametry použijeme v případě stavového firewallu, pokud chceme, aby pakety již navázané komunikace byli přijímány? a) UNTRACKED b) RELATED c) NEW d) ESTABLISHED správné řešení: b, d
45
21. Jaký parametr použijeme v případě k přesměrování výstupu do souboru?
užití
nastroje
Tcpdump
a) v b) w c) x d) y správné řešení: b
22. K čemu je dobré zachytávat pakety pomocí tcpdump do souboru? a) je to jediná možnost jak s programem pracovat b) je potřeba analyzovat alespoň 10000 paketů c) pro pozdější analýzu například programem WireShark d) archivace konkrétního měření správné řešení: c, d
23. Jaký program použijeme v OS Linux pokud budeme chtít zjistit jaké síťové služby a na jakých portech jsou dostupné na našem zařízení? a) iptables b) ifconfig c) netstat d) tcpdump správné řešení: c
24. Co nám program netstat neumožní? a) zjišťovat členství v multicast skupinách b) zobrazit směrovací tabulky c) získat informace o překladu adres NAT d) sledovat provoz konkrétního zařízení správné řešení: d
46