Linux v síti

Transkript

Linux v síti
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

Podobné dokumenty

Spectrum 4/90

Spectrum 4/90 schody u domu. Náhle se otevřelo za mnou okno a já uslyšel rozčílený hlas své ženy. Chtěl jsem honem běžet k oknu, ale jakmile jsem se jen přiblížil, žena ho zavřela. Nevěděl jsem co dělat a tak js...

Více

Operacˇnı syste´my - RNDr. Šárka Vavrečková, Ph.D.

Operacˇnı syste´my - RNDr. Šárka Vavrečková, Ph.D. parametry podporuje, program man ukončı́me stiskem klávesy Q ,

Více

02 - Konfigurace httpd Apache, testování Image: y36aws-apache

02 - Konfigurace httpd Apache, testování Image: y36aws-apache V image pro cvičení je zahrnuta instalace balíku =www-server/apache-2.2.9, který budeme dále

Více

NOVAR-106/114 NOVAR

NOVAR-106/114 NOVAR - tato hodnota v procentech je vypočtena z naměřeného průběhu proudu algoritmem FFT a udává poměr obsahu vyšších harmonických složek proudu až do 19. harmonické k úrovni základní harmonické proudu....

Více

HP LaserJet 1300 manual

HP LaserJet 1300 manual Karta Information (Informace) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65

Více

Katalog ESSER po korekci B 18_02_2010:katalog pro BOBA

Katalog ESSER po korekci B 18_02_2010:katalog pro BOBA V první řadě Vám můžeme představit celý program bezdrátových přístrojů včetně malých a velkých tlačítkových hlásičů. Pro řadu hlásičů IQ8Quad a signalizační zařízení IQ8Alarm s hlasovou evakuací Vá...

Více

Téma 11: Firewall v CentOS

Téma 11: Firewall v CentOS Teoretické znalosti V této kapitole zjistíte, jak v distribuci CentOS nastavit připojení k síti a firewall. Firewall v Linuxu je tvořen projektem Netfilter, který pracuje na úrovni jádra a umožňuje...

Více

Medsoft 2012 - Creative connections

Medsoft 2012 - Creative connections Tabulka 1 — Porovnání výsledků testů MMSE, MNA, ADL a SPPB podle souhrnného ohodnocení (% BH z výběrového souboru N=145) Legenda — Testy χ2 homogenity byly vypočteny pro každý z testů na úrovni tab...

Více

Dělení podle rozsahu Dělení podle přenosového média (čím se to

Dělení podle rozsahu Dělení podle přenosového média (čím se to propojení 2 hubů: křížený kabel nebo přímý kabel a na jednom z nich křížení vypnout latence: desítky nanosekund 1. vrstva

Více