Univerzita Pardubice Fakulta elektrotechniky a informatiky
´r ˇska ´ pra ´ ce Bakala
2010
ˇj Trakal Mate
Univerzita Pardubice Fakulta elektrotechniky a informatiky
´ n´ı Aplikace pro profilova ˇ´ıstupovy ´ ch seznam˚ pr u
ˇj Trakal Mate
´r ˇska ´ pra ´ ce Bakala 2010
Prohlaˇsuji: Tuto pr´aci jsem vypracoval samostatnˇe. Veˇsker´e liter´arn´ı prameny a informace, kter´e jsem v pr´aci vyuˇzil, jsou uvedeny v seznamu pouˇzit´e literatury. Byl jsem sezn´amen s t´ım, ˇze se na moji pr´aci vztahuj´ı pr´ava a povinnosti vypl´ yvaj´ıc´ı ze z´akona ˇc. 121/2000 Sb., autorsk´ y z´akon, zejm´ena se skuteˇcnost´ı, ˇze Univerzita Pardubice m´a pr´avo na uzavˇren´ı licenˇcn´ı smlouvy o uˇzit´ı t´eto pr´ace jako ˇskoln´ıho d´ıla podle § 60 odst. 1 autorsk´eho z´akona, a s t´ım, ˇze pokud dojde k uˇzit´ı t´eto pr´ace mnou nebo bude poskytnuta licence o uˇzit´ı jin´emu subjektu, je Univerzita Pardubice opr´avnˇena ode mne poˇzadovat pˇrimˇeˇren´ y pˇr´ıspˇevek na u ´hradu n´aklad˚ u, kter´e na vytvoˇren´ı d´ıla vynaloˇzila, a to podle okolnost´ı aˇz do jejich skuteˇcn´e v´ yˇse. Souhlas´ım s prezenˇcn´ım zpˇr´ıstupnˇen´ım sv´e pr´ace v Univerzitn´ı knihovnˇe. V Pardubic´ıch dne 20. srpna 2010
Matˇej Trakal
Podˇ ekov´ an´ı T´ımto bych chtˇel podˇekovat Ing. Tom´aˇsi Fidlerovi, vedouc´ımu m´e bakal´aˇrsk´e pr´ace, za jeho velmi cenn´e rady, pomoc pˇri tvorbˇe tohoto textu a ˇcas, po kter´ y se mi vˇenoval.
Souhrn Tato pr´ace je zamˇeˇrena na ot´azku zabezpeˇcen´ı uˇceben pˇred neopr´avnˇen´ ym pouˇz´ıv´an´ım zdroj˚ u s´ıtˇe v urˇcit´e dobˇe. D´ale popisuje jednotliv´e moˇznosti nastaven´ı smˇerovaˇce, abychom tohoto nastaven´ı dos´ahli. V´ ysledkem pr´ace je aplikaˇcn´ı ˇc´ast pro ovl´ad´an´ı smˇerovaˇce pomoc´ı pˇredpˇripraven´ ych pˇr´ıstupov´ ych seznam˚ u, kter´e mˇen´ı jeho chov´an´ı.
Kl´ıˇ cov´ a slova Pˇr´ıstupov´e seznamy, acl, Cisco IOS, tcl, telnet, ssh, sdm
Title Application for profiling access control lists
Annotation This work is aimed to question of classroom security. It handle question of using sources of network in specified time. Work described ways to set a router. Result of the work of application part, which control router with predefined access lists. This lists change behaviour of router.
Keywords Access Lists, acl, Cisco IOS, Tool Command Language (tcl), telnet, Secure Shell (ssh), sdm
Seznam zkratek AAA Authentication, Authorization, and Accounting ACL Access Control List CAS Central Authentication Service CDT Central Daylight Time CLI
Command Line Interface
CST Central Standard Time DNS Domain Name System DVD Digital Versatile Disc ftp
File Transfer Protocol
GUI
Graphical User Interface
http
Hypertext Transfer Protocol
https Hypertext Transfer Protocol Secure IOS
Internetwork Operating System
IP
Internet Protocol
IPS
Intrusion prevention system
LAN Local Area Network MD5 Message-Digest algorithm 5 MITM Man in the midle NTP Network Time Protocol OOP Objektovˇe orientovan´e programov´an´ı PHP Hypertext Processor QoS
Quality of Service
RSA inici´aly autor˚ u Rivest, Shamir, Adleman SDM Security Device Manager SHA1 Secure Hash Algorithm SSH
Secure Shell
SSL
Secure Sockets Layer
TCL Tool Command Language TCLsh Tool Command Language shell telnet Telecommunication Network tftp
Trivial File Transfer Protocol
TTY Teletype — asynchronn´ı linka UDP User Datagram Protocol UPa Univerzita Pardubice VLAN Virtual Local Area Network VPN Virtual Private Network VTY virtual Teletype — virtu´aln´ı linka WAN Wide Area Network WLAN Wireless Local Area Network
Seznam obr´ azk˚ u 1 2 3 4 5 6
Cisco ios m´ody . . . . . . . . . . . . . . . . . Administraˇcn´ı ˇc´ast sdm, jak se re´alnˇe pouˇz´ıv´a Jak funguje dns[9] . . . . . . . . . . . . . . . Topologie s´ıtˇe — rozlehl´a . . . . . . . . . . . . Topologie s´ıtˇe — upˇresnˇen´a . . . . . . . . . . Pr˚ uchod skrz router a rozd´ıln´e vlan . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
15 19 26 29 30 31
Obsah ´ 1 Uvod 1.1 C´ıl pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12 12
2 Cisco IOS 2.1 Moˇznosti ovl´ad´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 M´ody IOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13 13 14
3 Pˇ r´ıstupov´ e seznamy — Access lists 3.1 Dˇelen´ı pˇr´ıstupov´ ych seznam˚ u . . . . 3.2 Konfigurace v Cisco IOS . . . . . . . 3.2.1 Standardn´ı pojmenovan´e ACL 3.2.2 Rozˇs´ıˇren´e pojmenovan´e ACL . 3.2.3 Aplikace na rozhran´ı . . . . .
. . . . .
16 16 17 17 17 17
. . . . . . .
18 18 18 19 20 20 21 21
. . . . .
22 22 22 22 23 23
. . . . .
24 24 24 25 25 25
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
4 Metody vzd´ alen´ e administrace 4.1 Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Konfigurace na zaˇr´ızen´ıch Cisco . . . . . . . . 4.2 SDM . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Zpˇr´ıstupnˇen´ı sluˇzby SDM na Cisco zaˇr´ızen´ıch 4.2.2 Vyuˇzit´ı SDM paket˚ u . . . . . . . . . . . . . . 4.3 Secure Shel — SSH . . . . . . . . . . . . . . . . . . . 4.3.1 Konfigurace na zaˇr´ızen´ıch Cisco . . . . . . . . 5 Tool Command Language shell — TCLsh 5.1 Vyuˇzit´ı . . . . . . . . . . . . . . . . . . . . 5.2 Uk´azka pouˇzit´ı na Cisco zaˇr´ızen´ı . . . . . . 5.2.1 TCL shell reˇzim . . . . . . . . . . . 5.2.2 Spuˇstˇen´ı skriptu z extern´ıho zdroje 5.2.3 Naˇcten´ı souboru s procedurami . .
. . . . .
. . . . .
. . . . .
. . . . .
6 Dalˇ s´ı vyuˇ z´ıvan´ e moˇ znosti zaˇ r´ızen´ı ˇ 6.1 Casov´ y interval platnosti ud´alost´ı . . . . . . . . . 6.1.1 Aplikov´an´ı na Cisco zaˇr´ızen´ı . . . . . . . . 6.2 Pl´anov´an´ı ud´alost´ı — Kron . . . . . . . . . . . . 6.2.1 Uk´azka vyuˇzit´ı kronu pro opakovan´ y ping 6.3 Network Time Protocol — NTP . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . . . .
. . . . .
. . . . .
. . . . .
. . . . . . .
. . . . .
. . . . .
. . . . .
. . . . . . .
. . . . .
. . . . .
. . . . .
. . . . . . .
. . . . .
. . . . .
. . . . .
. . . . . . .
. . . . .
. . . . .
. . . . .
. . . . . . .
. . . . .
. . . . .
6.4
6.3.1 Zapnut´ı sluˇzby na Cisco zaˇr´ızen´ı . . . . . . . . . . . . . . . Domain Name System — DNS . . . . . . . . . . . . . . . . . . . . 6.4.1 Konfigurace na Cisco zaˇr´ızen´ıch . . . . . . . . . . . . . . .
25 26 26
7 Praktick´ aˇ c´ ast 7.1 V´ ybˇer vhodn´ ych n´astroj˚ u . . . . . . . . . . . . . . . . . . . . . . 7.2 Topologie s´ıtˇe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1 Uk´azka zapojen´ı uˇceben . . . . . . . . . . . . . . . . . . . 7.3 Pˇripojen´ı aplikace k routeru . . . . . . . . . . . . . . . . . . . . . 7.3.1 Pˇripojen´ı a odesl´an´ı dat pomoc´ı sluˇzby telnet . . . . . . . 7.3.2 Pˇr´ıjem dat ze sluˇzby telnet . . . . . . . . . . . . . . . . . . 7.3.3 Pˇripojen´ı a odesl´an´ı dat pomoc´ı sluˇzby SDM . . . . . . . . 7.3.4 Pˇr´ıjem dat ze sluˇzby SDM a ovˇeˇren´ı zpracov´an´ı . . . . . . 7.3.5 Pˇripojen´ı a odesl´an´ı dat pomoc´ı sluˇzby SSH . . . . . . . . 7.4 Ovˇeˇren´ı uˇzivatele aplikac´ı . . . . . . . . . . . . . . . . . . . . . . 7.4.1 Uk´azka ovˇeˇren´ı uˇzivatele . . . . . . . . . . . . . . . . . . . 7.5 Generov´an´ı doby platnosti . . . . . . . . . . . . . . . . . . . . . . 7.5.1 Implementace . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.2 Uk´azka generov´an´ı ˇcasov´eho raz´ıtka . . . . . . . . . . . . . 7.5.3 Uk´azka statick´eho vr´acen´ı zkr´acen´eho n´azvu ˇcasov´eho raz´ıtka 7.6 Generov´an´ı ACL pˇr´ıkaz˚ u . . . . . . . . . . . . . . . . . . . . . . . 7.6.1 Uk´azka pˇrid´an´ı ˇcasov´eho raz´ıtka . . . . . . . . . . . . . . . 7.6.2 Uk´azka navr´acen´ı jiˇz pˇripraven´eho ACL . . . . . . . . . . . 7.6.3 Uk´azka navr´acen´ı pole seznam˚ u ACL . . . . . . . . . . . . 7.7 Generov´an´ı TCL pˇr´ıkaz˚ u . . . . . . . . . . . . . . . . . . . . . . . 7.7.1 Tvorba v´ ysledn´eho seznamu TCL pˇr´ıkaz˚ u . . . . . . . . . 7.8 Zabezpeˇcen´ı chodu smˇerovaˇce . . . . . . . . . . . . . . . . . . . .
27 27 28 28 31 31 33 34 35 35 36 36 38 38 38 39 40 40 40 41 42 42 43
8 Z´ avˇ er
45
´ Uvod
1
Jelikoˇz v posledn´ı dobˇe stoup´a poˇcet prohˇreˇsk˚ u pˇri vypracov´av´an´ı zkouˇskov´ ych test˚ u, p´ısemek a prac´ı, bylo tˇreba navrhnout nov´ y syst´em zabezpeˇcen´ı uˇceben proti neopr´avnˇen´emu vyuˇz´ıv´an´ı sluˇzeb s´ıtˇe Internet. Tato bakal´aˇrsk´a pr´ace se zab´ yv´a t´ım, jak vhodnˇe umoˇznit, pro urˇcitou uˇcebnu, zamezen´ı pˇr´ıstupu k nepovolen´ ym sluˇzb´am, nebo naopak povolit omezen´ y pˇr´ıstup pouze na pˇr´ısluˇsn´e servery. Pr´ace se struˇcnˇe zab´ yv´a n´avrhem topologie s´ıtˇe pro vhodn´e a snadn´e udrˇzov´an´ı pˇr´ıstupov´ ych seznam˚ u a jejich aplikaci na jednotliv´e uˇcebny. D´ale ˇreˇs´ı ot´azku zabezpeˇcen´ı pˇr´ıstupu z vytv´aˇren´e aplikace k centr´aln´ımu prvku s´ıtˇe — hlavn´ımu routeru, na kter´em jsou vˇsechny pˇr´ıstupov´e seznamy (acls) aplikov´any. Hlavn´ım c´ılem pr´ace je navrhnout zabezpeˇcen´ y syst´em spr´avy pˇr´ıstupu do s´ıtˇe Internet a k dalˇs´ım sluˇzb´am poskytovan´ ym v r´amci univerzitn´ı s´ıtˇe UPa.
1.1
C´ıl pr´ ace
Chceme omezovat provoz na s´ıti. Toho budeme dosahovat zmˇenou nastaven´ı centr´aln´ıho smˇerovaˇce univerzity/fakulty. Zmˇena konfigurace bude prob´ıhat vzd´alenˇe ´ z klientsk´e aplikace, kter´a bude bˇeˇzet na serveru1 . Uprava nastaven´ı by mˇela ovlivˇ novat pˇr´ıstupov´e seznamy aplikovan´e na jednotliv´ ych rozhran´ıch smˇerovaˇce. T´ım, ˇze rozhran´ım je myˇslen pouze virtu´aln´ı okruh lok´aln´ı s´ıtˇe, mˇel by umoˇznit mˇenit omezov´an´ı provozu na s´ıti v r´amci jednotliv´ ych uˇceben (virtu´aln´ıch s´ıt´ı). Samotn´emu zabr´anˇen´ı pˇr´ıstupu do s´ıtˇe by mˇelo prob´ıhat pr´avˇe aplikac´ı urˇcit´eho pˇr´ıstupov´eho seznamu na rozhran´ı, ke kter´emu je uˇzivatel pˇripojen. V pˇr´ıstupov´em seznamu by mˇely b´ yt definov´any a povoleny vˇsechny sluˇzby vyuˇz´ıvan´e v r´amci s´ıtˇe UPa (pˇrihlaˇsov´an´ı stanic, sluˇzba dns, dhcp a dalˇs´ı) a nad´ale podle poˇzadovan´ ych pravidel odepˇreny sluˇzby, kter´e by uˇzivatel nemˇel m´ıt pr´avo v urˇcit´e dobˇe vyuˇz´ıvat. Aplikaˇcn´ı ˇca´st by bylo vhodn´e navrhnout tak, aby ˇsla do budoucna zaˇclenit do syst´emu cas, byla pˇripravena na centr´aln´ı zp˚ usob ovˇeˇrov´an´ı uˇzivatel˚ u a byla modul´arn´ı — ˇsla pˇr´ıpadnˇe jednoduˇse rozˇsiˇrovat o dalˇs´ı funkcionalitu. Jej´ı vhodn´e um´ıstˇen´ı by bylo na aplikaˇcn´ım serveru, tedy by mˇela umoˇzn ˇovat b´ yt spouˇstˇena vzd´alenˇe (webov´e rozhran´ı, aplikace typu klient/server).
1
Aplikaˇcn´ı server bude veˇrejn´ y a vˇsichni ˇclenov´e univerzity se k nˇemu mohou pˇripojit, tedy aplikace by mˇela pˇredpokl´ adat dostateˇcn´e zabezpeˇcen´ı proti neautorizovan´emu pˇr´ıstupu.
12
2
Cisco IOS
Cisco ios je operaˇcn´ı syst´em, navrˇzen´ y pro ˇr´ızen´ı provozu v s´ıt’ov´ ych prvc´ıch (routery a switche) z d´ılny Cisco Systems, Inc.
2.1
Moˇ znosti ovl´ ad´ an´ı
Cisco ios je ovl´adan´ y pomoc´ı textov´ ych pˇr´ıkaz˚ u psan´ ych do konzole zaˇr´ızen´ı (cli). Pro pˇripojen´ı k ios m´ame nˇekolik variant: Konzolov´ y port na zaˇ r´ızen´ı je dobˇre moˇzn´e pouˇz´ıt, pokud m´ame fyzick´ y pˇr´ıstup k zaˇr´ızen´ı. Pˇripojuje se pomoc´ı rollover kabelu. Toto ˇreˇsen´ı je jedin´e moˇzn´e pˇri poˇr´ızen´ı nov´eho zaˇr´ızen´ı, kter´e nen´ı pˇredkonfigurovan´e, jelikoˇz nem´a povoleno pˇripojen´ı pˇres telnet ani ssh. Telnet nebo SSH je nejsp´ıˇs nejpohodlnˇejˇs´ı varianta pˇripojen´ı k zaˇr´ızen´ı, jelikoˇz umoˇzn ˇuje po spr´avn´e konfiguraci pˇripojen´ı i ze vzd´alen´ ych m´ıst. D´ale nen´ı tˇreba pˇri spr´avˇe v´ıce zaˇr´ızen´ı pˇrepojovat kabely mezi fyzick´ ymi konzolov´ ymi porty. Pro pˇripojen´ı pˇres telnet a ssh je poˇzadov´ano ovˇeˇren´ı uˇzivatele pomoc´ı hesla, pˇr´ıpadnˇe i uˇzivatelsk´eho jm´ena. Webov´ e rozhran´ı nen´ı vyloˇzenˇe pˇripojen´ı k ios konzoli a neposkytuje pln´e ovl´ad´an´ı zaˇr´ızen´ı. Tento zp˚ usob je vhodn´ y sp´ıˇse jen pro dohled nad funkc´ı zaˇr´ızen´ı, jelikoˇz je n´azorn´e a nevyˇzaduje znalost konfiguraˇcn´ıch pˇr´ıkaz˚ u. SNMP poskytuje spr´avu nejen Cisco zaˇr´ızen´ı, kter´e tento protokol podporuj´ı. Pro komunikaci mus´ı b´ yt v tomto pˇr´ıpadˇe dvˇe strany. Jedna monitorovan´a (agent), kter´a odes´ıl´a odpovˇedi, a druh´a klientsk´a. Ta zas´ıl´a speci´aln´ı standardizovan´e pˇr´ıkazy. Po pˇr´ıjmu dat od agenta data vyhodnocuje a zpracov´av´a (napˇr. monitoring stavu s´ıtˇe). TCL shell je jedno z dalˇs´ıch moˇzn´ ych ˇreˇsen´ı. Vyuˇz´ıv´a se odliˇsnˇe, neˇz v´ yˇse zm´ınˇen´e, a to tak, ˇze se na zaˇr´ızen´ı pˇripoj´ı pomoc´ı jin´eho v´ yˇse zm´ınˇen´eho zp˚ usobu. Pot´e se z tcl shellu zaˇza´d´a o konfiguraˇcn´ı skript ze vzd´alen´eho serveru (tftp, ftp, http, nebo dalˇs´ıch) a ten se nad´ale na zaˇr´ızen´ı vykon´a. Druh´a moˇznost je vstoupit do t´eto konfiguraˇcn´ı ˇca´sti pˇr´ımo na zaˇr´ızen´ı a potˇrebn´e nastaven´ı zadat jako ˇr´adkov´ y pˇr´ıkaz, oddˇelen´ y uvozovkami.
13
2.2
M´ ody IOS
Cisco ios pouˇz´ıv´a v´ıce u ´rovn´ı zabezpeˇcen´ı pˇr´ıstupu. Opr´avnˇen´ı, kter´e uˇzivatel nad zaˇr´ızen´ım m˚ uˇze prov´adˇet, urˇcuje privilege level ˇc´ıslo 0–15. D´ıky tomuto ˇc´ıslu se urˇc´ı pravomoci. Uˇzivatel bez dostateˇcn´ ych pr´av m˚ uˇze tˇreba na zaˇr´ızen´ı jen sledovat chod, ale nem´a moˇznost ho konfigurovat. Uˇ zivatelsk´ y m´ od m´a privilege level hodnotu 0. Uˇzivatel v tomto reˇzimu m˚ uˇze pouˇz´ıvat velice omezen´e mnoˇzstv´ı pˇr´ıkaz˚ u pro pˇripojen´ı na dalˇs´ı zaˇr´ızen´ı, zas´ıl´an´ı pˇr´ıkaz˚ u ping, zapnut´ı vyˇsˇs´ıho (privilegovan´eho) m´odu a nˇekter´e dalˇs´ı. Privilegovan´ y m´ od umoˇzn ˇuje jiˇz nahl´ıˇzen´ı do aktu´aln´ı konfigurace zaˇr´ızen´ı, z´asahy do jeho bˇehu a spoustu dalˇs´ıch moˇznost´ı. Privilege level tohoto m´odu je nastaven na hodnotu 15, tedy jeho nejvyˇsˇs´ı. Kaˇzd´emu pˇr´ıkazu jde nastavit vlastn´ı level v rozmez´ı 1–15, dle potˇreby. Konfiguraˇ cn´ı m´ od poskytuje moˇznost nastavov´an´ı zaˇr´ızen´ı. Umoˇzn ˇuje zap´ınat dalˇs´ı sluˇzby bˇeˇz´ıc´ı na zaˇr´ızen´ı, konfiguraci rozhran´ı, smˇerov´an´ı, nastavov´an´ı pˇr´ıstupov´ ych pr´av a spoustu dalˇs´ıch.
14
Obr´azek 1: Cisco ios m´ody
15
3
Pˇ r´ıstupov´ e seznamy — Access lists
V Cisco zaˇr´ızen´ıch se pˇr´ıstupov´e seznamy pouˇz´ıvaj´ı pro urˇcov´an´ı pravidel smˇerov´an´ı paket˚ u na jednotliv´e rozhran´ı zaˇr´ızen´ı, pˇr´ıpadnˇe jednotliv´e vlany. Pomoc´ı tˇechto seznam˚ u jde zamezit pˇr´ıstupu dle konfigurace napˇr.: z nˇekter´ ych ip adres, na nˇekter´e sluˇzby a jin´e dalˇs´ı moˇznosti. Kromˇe omezov´an´ı provozu pˇr´ıchoz´ıch i odchoz´ıch dat pˇr´ıstupov´e seznamy ˇsetˇr´ı i s´ıt’ov´e zdroje, jelikoˇz zamez´ı pr˚ uchodu paketu d´ale do s´ıtˇe, kde by byly n´aslednˇe nejsp´ıˇs zablokov´any nˇejak´ ym koncov´ ym zaˇr´ızen´ım a jeho firewallem. Seznamy se skl´adaj´ı z jednotliv´ ych vˇet“, kde kaˇzd´a vˇeta (ˇr´adek) znaˇc´ı pr´avˇe ” jedno pravidlo, bud’ povolen´ı nebo zak´az´an´ı, pro smˇerovaˇc. Postup zpracov´an´ı je ten, ˇze se postupuje od prvn´ıho pravidla k posledn´ımu, kdy posledn´ı pravidlo je vˇzdy zak´az´an´ı veˇsker´eho provozu. Pokud si nˇekterou poˇzadovanou sluˇzbu nepovol´ıme, bude n´aslednˇe pr´avˇe posledn´ım pravidlem zablokov´ana.
3.1
Dˇ elen´ı pˇ r´ıstupov´ ych seznam˚ u
Standardn´ı (Standard) pˇr´ıstupov´e seznamy filtruj´ı provoz pouze na z´akladˇe zdrojov´e ip adresy. Nedok´aˇz´ı filtrovat provoz na jednotliv´ ych protokolech a jejich poskytovan´ ych sluˇzb´ach. Filtruj´ı jednotliv´e rozhran´ı zaˇr´ızen´ı jako celek, ne jednotliv´e sluˇzby poskytovan´e v r´amci tcp/ip a udp protokol˚ u. Jsou vˇetˇsinou nastavov´any co nejbl´ıˇze koncov´emu zaˇr´ızen´ı. D˚ uvod, proˇc se st´ale pouˇz´ıvaj´ı, je jejich v´ ypoˇcetn´ı nen´aroˇcnost. Zpracov´an´ı je velice rychl´e, zpracov´av´a se jen na z´akladˇe zdrojov´e ip adresy a wildcard masky2 . Rozˇ s´ıˇ ren´ e (Extended) pˇr´ıstupov´e seznamy dok´aˇz´ı rozliˇsovat jednotliv´e protokoly a sluˇzby na nich poskytovan´e. Dok´aˇz´ı tedy filtrovat napˇr´ıklad webov´ y provoz, emailov´e sluˇzby a dalˇs´ı. Jejich nev´ yhodou ovˇsem oproti standardn´ım acl je, ˇze mus´ı paket v´ıce rozebrat pro anal´ yzu, aby dok´azaly spr´avnˇe porovnat paket s pravidlem v rozˇs´ıˇren´em seznamu. T´ım spotˇrebuj´ı mnohem v´ıce syst´emov´ ych zdroj˚ ua v´ ypoˇcetn´ıho v´ ykonu potˇrebn´eho pro jejich zpracov´an´ı — zatˇeˇzuj´ı smˇerovaˇc u ´kony, na kter´ y nen´ı prim´arnˇe urˇcen. 2
Wildcard maska je negovanou variantou masky s´ıtˇe. Ud´av´a poˇcet zaˇr´ızen´ı, nikoli poˇcet pods´ıt´ı. Pro pˇrepoˇcet na wildcard masku staˇc´ı od ˇc´ısla 255.255.255.255 odeˇc´ıst po kvadrantech masku s´ıtˇe.
16
3.2
Konfigurace v Cisco IOS
Z´ akladn´ı ACL se po prvn´ı konfiguraci jiˇz ned´a zmˇenit. D´a se pouze pˇrid´avat dalˇs´ı z´aznam na konec. Jedin´a moˇznost opravy je zkop´ırov´an´ı do textov´eho souboru a oprava ruˇcnˇe s t´ım, ˇze se upraven´ y k´od n´aslednˇe nakop´ıruje do konfigurace routeru. Pojmenovan´ e ACL kaˇzd´emu pˇr´ıkazu pˇriˇrad´ı jeho poˇrad´ı, pomoc´ı kter´eho jdou n´aslednˇe jednotliv´e ˇra´dky acl mazat, nebo mezi jiˇz nakonfigurovan´e vkl´adat nov´e. Dalˇs´ı moˇznost konfigurace je, ˇze se pˇr´ıkaz˚ um nejdˇr´ıve specifikuje priorita (poˇrad´ı). Vzhledem k jednoduˇsˇs´ı konfiguraci a spr´avˇe pojmenovan´ ych acl se zde z´akladn´ımi d´ale zab´ yvat nebudu. Pr´ace je s nimi obdobn´a, jen se m´ısto n´azv˚ u pouˇz´ıvaj´ı ˇc´ısla. 3.2.1
Standardn´ı pojmenovan´ e ACL
´ • Pˇridˇelen´ı n´azvu acl Router(config)# ip access-list standard NAZEV-ACL • Nastaven´ı jednotliv´ ych pravidel pˇr´ıstupov´eho seznamu Router(config-stdnacl)#[deny | permit | remark] source [source-wildcard] [log] 3.2.2
Rozˇ s´ıˇ ren´ e pojmenovan´ e ACL
´ • Pˇridˇelen´ı n´azvu acl Router(config)#ip access-list extended NAZEV-ACL • Nastaven´ı jednotliv´ ych rozˇs´ıˇren´ ych pravidel Router(config-ext-nacl)#deny | permit | remark protocol source source-wildcard [operator operand] [port port-number or name] destination [destination-wildcard] [operaotr operand] [port port-number or name][established] 3.2.3
Aplikace na rozhran´ı
• Pˇridˇelen´ı pˇr´ıstupov´eho seznamu jednotliv´emu rozhran´ı Router(config-if )#ip ´ access-group NAZEV-ACL [in | out]
17
4
Metody vzd´ alen´ e administrace
Na tomto m´ıstˇe popisuji, jak je moˇzn´e se na smˇerovaˇc pˇripojit a zas´ılat na nˇej pˇr´ıkazy pro ovlivˇ nov´an´ı konfigurace.
4.1
Telnet
Telnet je relativnˇe jednoduch´a sluˇzba poskytuj´ıc´ı spojen´ı serverov´e a klientsk´e strany. Pro pˇripojen´ı se vyuˇz´ıv´a ip adresy serveru a portu, na kter´em sluˇzba standardnˇe bˇeˇz´ı, 23. 4.1.1
Konfigurace na zaˇ r´ızen´ıch Cisco
V pˇr´ıpadˇe router˚ u Cisco se pˇred samotn´ ym pˇripojen´ım mus´ı zajistit zprovoznˇen´ı 3 vty linky s ovˇeˇren´ım pˇrihlaˇsovan´eho uˇzivatele. Toho se dos´ahne pomoc´ı Router (config)#enable secret HESLO. T´ım se zajist´ı zabezpeˇcen´ı privilegovan´eho m´odu pomoc´ı hesla. D´ale je tˇreba vykonat tyto pˇr´ıkazy: • Router(config)#line vty 0 15 pro zapnut´ı 16 virtu´aln´ıch linek umoˇzn ˇuj´ıc´ıch pˇripojen´ı pomoc´ı telnetu • Router(config-line)#password JINE-HESLO pro nastaven´ı z´akladn´ıho hesla pro pˇrihl´aˇsen´ı pomoc´ı VTY linky • Router(config-line)#login, ˇc´ımˇz se povol´ı pˇrihl´aˇsen´ı k virtu´aln´ı lince Nyn´ı m´ame smˇerovaˇc pˇripraven na pˇripojen´ı pomoc´ı sluˇzby telnet. Tento protokol ovˇsem nen´ı nijak zabezpeˇcen a je zde velk´a pravdˇepodobnost odchycen´ı hesla pˇr´ıpadn´ ym u ´toˇcn´ıkem. Heslo a veˇsker´a data jsou zas´ıl´ana v plain–textu (neˇsifrovanˇe), tedy pˇri odchycen´ı paketu jdou surov´a data ˇc´ıst a zobrazovat si obsah jednotliv´ ych paket˚ u. mitm je bohuˇzel relativnˇe jednoduch´a a funkˇcn´ı metoda, jak tyto pakety odchytit.
3
Virtual Teletype
18
4.2
SDM
Sluˇzba sdm4 je prim´arnˇe urˇcena pro spr´avu a administraci zaˇr´ızen´ı pomoc´ı gui aplikaˇcn´ı ˇca´sti. Usnadˇ nuje ovl´ad´an´ı zaˇr´ızen´ı zaˇca´teˇcn´ık˚ um, ovˇsem neposkytuje kompletn´ı moˇznosti nastaven´ı. Hlavn´ı v´ yhodou je, ˇze dok´aˇze detekovat zranitelnosti zaˇr´ızen´ı pomoc´ı automatick´e konfigurace (zad´ame, na co je zaˇr´ızen´ı v s´ıti urˇceno a kter´ ych sluˇzeb vyuˇz´ıv´ame). Obsahuje r˚ uzn´e pr˚ uvodce, jak co nastavit, tedy i zaˇca´teˇcn´ık bez znalosti pˇr´ıkaz˚ u do cli je schopen zaˇr´ızen´ı pˇripravit k chodu. Tento n´astroj poskytuje nastaven´ı dynamick´eho smˇerov´an´ı, wan pˇr´ıstupu, wlan, firewall, vtpn, ssl vpn, ips, a qos.
Obr´azek 2: Administraˇcn´ı ˇca´st sdm, jak se re´alnˇe pouˇz´ıv´a 4
SDM: Security Device Manager
19
4.2.1
Zpˇ r´ıstupnˇ en´ı sluˇ zby SDM na Cisco zaˇ r´ızen´ıch
Pro povolen´ı sluˇzby sdm mus´ıme na Cisco zaˇr´ızen´ıch zapnout http server a nastavit pomoc´ı jak´e autentizace se bude uˇzivatel pˇrihlaˇsovat. • Zapnut´ı http serveru Router(config)#ip http server • Nastaven´ı ovˇeˇrov´an´ı uˇzivatele: – pomoc´ı exec m´odu Router(config)#ip http authentication enable – pomoc´ı lok´aln´ıho ovˇeˇren´ı Router(config)#ip http authentication local 4.2.2
Vyuˇ zit´ı SDM paket˚ u
D´ıky tomu, ˇze sdm umoˇzn ˇuje konfiguraci zaˇr´ızen´ı, mus´ı tak´e dok´azat se zaˇr´ızen´ım komunikovat a konfigurovat ho. Po odchycen´ı dostateˇcn´eho poˇctu paket˚ u pomoc´ı n´astroje Wireshark jde rozpoznat, jak jsou zpr´avy pro zaˇr´ızen´ı a od nˇej sestavov´any, jak jsou zabezpeˇceny a hlavnˇe, jak je vyuˇz´ıt pro vlastn´ı zas´ıl´an´ı konfiguraˇcn´ıch pˇr´ıkaz˚ u. POST / i o s w e b e x e c / commandset HTTP/1 . 1 User−Agent: M o z i l l a /4 . 0 ( Windows XP 5 . 1 ) Java /1 . 6 . 0 1 7 H o s t : 192 . 1 6 8 . 1 3 4 . 1 0 A c c e p t : t e x t / h t m l , image / g i f , image / j p e g , ∗ ; q = . 2 , ∗ /∗ ; q=.2 Connection: keep−alive A u t h o r i z a t i o n : B a s i c dXNlcm5hbWU6cGFzc3dvcmQ= Content−type: a p p l i c a t i o n /x−www−form−urlencoded Content−Length: 131 ! COMMANDSET VERSION=”1 . 0 ” ! OPTIONS BEGIN ! MODE=”0 ” ! OPTIONS END show i n t e r f a c e F a s t E t h e r n e t 0 /0 ! END ! COMMANDSET END
Jak je vidˇet z k´odu, poˇsle se post dotaz s hlaviˇckou. V t´e je zak´odovan´e uˇzivatelsk´e jm´eno a heslo Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=, pomoc´ı Base64 algoritmu. Po rozpozn´an´ı metody ˇsifrov´an´ı, a jist´ ych dalˇs´ıch drobnostech, jiˇz nen´ı probl´em zas´ılat na router vlastn´ı pˇr´ıkazy. Mode=”0” v konfiguraˇcn´ıch pˇr´ıkazech znaˇc´ı exec m´od, Mode=”1” pak reˇzim konfigurace.
20
4.3
Secure Shel — SSH
Secure Shell je jiˇz zabezpeˇcen´ y protokol, nyn´ı je ve dvou verz´ıch, kdy kaˇzd´a poskytuje jinou u ´roveˇ n zabezpeˇcen´ı. Uˇz samotn´ y protokol poskytuje autentizaci. Pˇred samotn´ ym zah´ajen´ım pˇrenosu dat odeˇsle server dva kl´ıˇce ke klientovi. Klient n´aslednˇe poˇsle zaˇsifrovan´ y kl´ıˇc serveru a t´ım se vytvoˇr´ı zabezpeˇcen´ y tunel mezi serverem a klientem. Aˇz n´aslednˇe se zas´ıl´a samotn´a komunikace. Uvnitˇr tunelu jsou veˇsker´a data chr´anˇena proti odposlechnut´ı d´ıky pouˇzit´ ym kl´ıˇc˚ um. Jeden z kl´ıˇc˚ u, kter´ ym se data ˇsifruj´ı, se kaˇzdou hodinu mˇen´ı, ˇc´ımˇz zvyˇsuje bezpeˇcnost. V pr˚ ubˇehu cesty mezi zdrojem a c´ılem nen´ı moˇzn´e si data pˇreˇc´ıst, pokud u ´toˇcn´ık nevlastn´ı priv´atn´ı kl´ıˇc c´ılov´e strany, nebo jeˇstˇe pˇred zah´ajen´ım komunikace nepouˇzil metodu mitm. Zde je ale dalˇs´ı metoda odhalen´ı a to ta, ˇze si klientsk´a strana pamatuje jeden z otisk˚ u kl´ıˇce serveru. Pˇr´ıpadnˇe se tento kl´ıˇc d´a ovˇeˇrit z v´ıce zdroj˚ u a pˇri jeho neplatnosti je zˇrejm´e, ˇze server je podvrˇzen. 4.3.1
Konfigurace na zaˇ r´ızen´ıch Cisco
Zde uv´ad´ım jak pˇripravit smˇerovaˇc pro pouˇzit´ı protokolu ssh, aby s n´ım bylo moˇzn´e pomoc´ı tohoto protokolu komunikovat. U jednotliv´ ych pˇr´ıkaz˚ u je struˇcnˇe pops´ano co zp˚ usobuj´ı, tedy by mˇel kaˇzd´ y b´ yt schopen ssh na smˇerovaˇci zprovoznit a zaˇc´ıt ho vyuˇz´ıvat, nam´ısto nezabezpeˇcen´eho protokolu telnet. • Nastaven´ı n´azvu routeru: Router(config)#hostname Central • Nastaven´ı hesla pro privilegovan´ y m´od: Central(config)#enable secret HESLO • Zapnut´ı aaa5 : Central(config)#aaa new-model ˇ • Vytvoˇren´ı uˇzivatele: Central(config)#username UZIVATEL secret HESLO • Nastaven´ı dom´enov´eho jm´ena routeru: Central(config)#ip domain-name upce.cz • Vygenerov´an´ı rsa kl´ıˇce: Central(config)#crypto key generate rsa • Poˇcet pokus˚ u o pˇrihl´aˇsen´ı: Central(config)#ip ssh authentication-retries 2 • Verze ssh: Central(config)#ip ssh version 2 • Konfigurace vty linky (pro ID 0 – 15): Central(config)#line vty 0 15 • Nastaven´ı pˇrenosu na ssh: Central(config-line)#transport input ssh 5
Authentication, Authorization, and Accounting
21
5
Tool Command Language shell
Tool Command Language je jednoduch´ y skriptovac´ı jazyk. Je navrˇzen´ y tak, aby byl srozumiteln´ y pˇri psan´ı a ˇcten´ı v´ ysledn´eho k´odu. Poskytuje pouze z´akladn´ı prvky programovac´ıch jazyk˚ u, a to promˇenn´e, procedury a kontroln´ı struktury. Tento jazyk je implementov´an do Cisco ios, od verze 12.3(2)T a 12.2(25)S.
5.1
Vyuˇ zit´ı
Tohoto skriptovac´ıho jazyka lze vyuˇz´ıt pro konfiguraci Cisco zaˇr´ızen´ı. Implementace ve smˇerovaˇc´ıch a pˇrep´ınaˇc´ıch umoˇzn ˇuje zad´av´an´ı pˇr´ıkaz˚ u ˇra´dek po ˇra´dku do konzole ios. Po zad´an´ı tcl pˇr´ıkazu je ten posl´an na interpret. Pokud je pˇr´ıkaz validn´ı a projde, zobraz´ı se v´ ysledek na tty6 . Jestliˇze pˇr´ıkaz nen´ı shled´an jako tcl, je nad´ale zasl´an do parseru ios, kde se opˇet zkus´ı vykonat. Pokud ani zde nevyhov´ı, zobraz´ı se ve fin´ale dvˇe chybov´e zpr´avy. Prvn´ı chybov´a zpr´ava je vygenerov´ana tcl parserem, druh´a n´aslednˇe Cisco ios parserem. Jejich informaˇcn´ı hodnota pro uˇzivatele m˚ uˇze b´ yt rozd´ıln´a, jelikoˇz obˇe syntaktick´e anal´ yzy maj´ı rozd´ılnou chybovou zpr´avu. Skripty lze vytv´aˇret i mimo zaˇr´ızen´ı a n´aslednˇe je spouˇstˇet bud’ z extern´ıho zaˇr´ızen´ı (tftp, http, ...), nebo je z u ´loˇziˇstˇe nahr´at do zaˇr´ızen´ı a spustit je lok´alnˇe. Jelikoˇz je moˇzn´e b´ yt na router pˇripojen z mnoha m´ıst, mus´ı dok´azat tcl bˇeˇzet ve v´ıce vl´aknech najednou, aby se pˇr´ıkazy neovlivˇ novaly.
5.2
Uk´ azka pouˇ zit´ı na Cisco zaˇ r´ızen´ı
Pro pouˇzit´ı tcl shellu mus´ı b´ yt uˇzivatel pˇrihl´aˇsen v privilegovan´em m´odu, ze kter´eho se d´a vstoupit do tcl reˇzimu. Tento reˇzim m´a v´ıce zp˚ usob˚ u, jak naˇc´ıtat a vykon´avat spouˇstˇen´ı skript˚ u. 5.2.1
TCL shell reˇ zim
V tomto reˇzimu jiˇz lze zad´avat jednotliv´e tcl pˇr´ıkazy. Zad´avan´e pˇr´ıkazy se mus´ı zapisovat vˇzdy cel´e na jeden ˇra´dek. Pro spouˇstˇen´ı pˇr´ıkaz˚ u z privilegovan´eho reˇ ´ ˇzimu se vyuˇz´ıv´a pˇr´ıkazu Router(tcl)#exec PRIKAZ“ a pro konfiguraci zaˇr´ızen´ı ”ˇ ´ ˇ IKAZ“ ´ Router(tcl)#ios config PR PODPR IKAZ“. ” ” 6
Teletype — asynchronn´ı linka
22
5.2.2
Spuˇ stˇ en´ı skriptu z extern´ıho zdroje
Tato moˇznost byla pˇrid´ana aˇz v pozdˇejˇs´ıch verz´ıch Cisco ios. Dobˇre lze uplatnit, pokud m´ame u ´loˇziˇstˇe, kde veˇsker´e konfiguraˇcn´ı soubory uchov´av´ame a budeme je z nˇej volat. Nev´ yhoda je, ˇze takto volan´e skripty nelze upravovat pomoc´ı parametr˚ u, jelikoˇz se spouˇst´ı pˇr´ımo. Nelze vyuˇz´ıvat procedur. Pokud soubor vypistext.tcl obsahuje puts Vypisovan´y text“, pˇr´ıkaz Router#tclsh ” tftp://192.168.134.1/vypistext.tcl vyp´ıˇse do konzole hl´aˇsku Vypisovan´y text. 5.2.3
Naˇ cten´ı souboru s procedurami
V´ yhodou tohoto zp˚ usobu je, ˇze lze volat procedury, kter´e jsou naˇcteny v souboru. Tento soubor m˚ uˇze b´ yt um´ıstˇen na libovoln´em z mnoha dostupn´ ych u ´loˇziˇst’ (nvram, flash, sloty, tftp, http, . . . ). Zpˇr´ıstupnˇen´ı souboru se prov´ad´ı pomoc´ı pˇr´ıkazu Router(config)#scripting tcl init tftp://192.168.134.1/TclSkript.tcl. Samotn´e spuˇstˇen´ı skriptu jiˇz prob´ıh´a v tcl shell reˇzimuRouter(tcl)#N´azevProcedury parametr1“ parametr2“ . . . ” ”
23
6
Dalˇ s´ı vyuˇ z´ıvan´ e moˇ znosti zaˇ r´ızen´ı
V t´eto ˇca´sti uv´ad´ım dalˇs´ı vyuˇz´ıvan´e sluˇzby, kter´e Cisco smˇerovaˇce poskytuj´ı. Jedn´a se o nastaven´ı ˇcasov´ ych ud´alost´ı, pl´anov´an´ı ud´alost´ı, nastaven´ı aktu´aln´ıho data na smˇerovaˇci a k nˇemu potˇrebn´emu nastaven´ı dns z´aznam˚ u.
6.1
ˇ Casov´ y interval platnosti ud´ alost´ı
Cisco zaˇr´ızen´ı umoˇzn ˇuj´ı aplikovat jist´e druhy nastaven´ı na omezenou dobu, bud’ na interval, nebo na opakovanou ud´alost. Toho se d´a vyuˇz´ıt, pokud poˇzadujeme zmˇenit nastaven´ı v jist´e dobˇe. Poˇzadujeme napˇr´ıklad omezen´ı moˇznosti pˇripojen´ı na sluˇzbu ssh na vˇsechn´ı dny, kdy se pˇripojuj´ı spr´avci s´ıtˇe, aby mohli mˇenit konfiguraci zaˇr´ızen´ı. M˚ uˇzeme toho pomoc´ı ˇcasov´eho nastaven´ı a pˇr´ıstupov´eho seznamu doc´ılit celkem snadno. 6.1.1
Aplikov´ an´ı na Cisco zaˇ r´ızen´ı
Periodick´ e jdou nastavit, aby mˇenili nastaven´ı opakovanˇe v jist´em intervalu • Nastaven´ı ˇcasov´eho kontejneru Router(config)#time-range time-rangename • Samotn´ y interval Router(config-time-range)#periodic days-of-the-week hh:mm to [days-of-the-week] hh:mm Absolutn´ı se nastavuj´ı na dobu, od kdy do kdy maj´ı b´ yt aplikov´any • Nastaven´ı ˇcasov´eho kontejneru Router(config)#time-range time-rangename • Vlastn´ı rozsah Router(config-time-range)#absolute [start time date] [end time date] Aplikov´ an´ı na ACL pro aktivov´an´ı ˇcasov´eho pl´anu • Nastaven´ı ˇcasov´eho kontejneru Router(config-acl)#ip access-list name| number <extended definition>time-rangename of time-range V t´eto pr´aci vyuˇz´ıv´am ˇcasov´ ych ud´alost´ı pouze jednor´azov´ ych, bez opakov´an´ı. Pro kaˇzd´ y nastavovan´ y pˇr´ıstupov´ y seznam udˇel´am ˇcasov´e omezen´ı jeho platnosti, t´ım aktivuji profil jen na urˇcitou dobu a n´aslednˇe na jeho pozici navr´at´ım p˚ uvodn´ı profil, kter´ y na portu byl nastaven dˇr´ıve. 24
6.2
Pl´ anov´ an´ı ud´ alost´ı — Kron
Kron, neboli pl´anov´an´ı ud´alost´ı, se vyuˇz´ıv´a, pokud chceme dopˇredu stanovit akci, kter´a se v dan´ y ˇcas m´a prov´est. M˚ uˇzeme t´ım aplikovat zmˇenu cel´e konfigurace, vypnut´ı rozhran´ı, aktivaci pˇr´ıstupov´eho seznamu nebo prov´est r˚ uzn´e dalˇs´ı zmˇeny. 6.2.1
Uk´ azka vyuˇ zit´ı kronu pro opakovan´ y ping
• Nastav´ı kron kontejner: kron occurrence UdalostPing in 10 recurring • Co se m´a vykonat za kontejner ud´alost´ı: policy-list StartPing • Seznam ud´alost´ı (jejich n´azev): kron policy-list StartPing • Samotn´e pˇr´ıkazy kronu: cli ping ip 192.168.134.2
6.3
Network Time Protocol
Network Time Protocol je jeden z nejd˚ uleˇzitˇejˇs´ıch protokol˚ u s´ıtˇe, kter´ y slouˇz´ı pro synchronizaci ˇcasu jednotliv´ ych zaˇr´ızen´ı. Veˇsker´e z´alohy, pl´anovan´e ud´alosti a dalˇs´ı jsou ˇr´ızeny pomoc´ı ˇcasu. Spr´avn´e nastaven´ı ˇcasu je tedy kl´ıˇcov´e, a proto se hod´ı vyuˇz´ıt pˇresn´eho ˇcasu ˇr´ızen´eho z atomov´ ych hodin. Pro synchronizaci s nimi a dalˇs´ımi servery se vyuˇz´ıv´a pr´avˇe protokolu ntp. Bez synchronizace serveru a routeru by nebylo moˇzn´e spr´avnˇe nastavit ˇcasov´e rozsahy platnosti pˇr´ıstupov´ ych seznam˚ u, proto ho povaˇzuji za jeden z kl´ıˇcov´ ych. Vzhledem k d˚ uleˇzitosti spr´avnˇe nastaven´eho ˇcasu je vhodn´e uv´est v´ıce ntp zdroj˚ u, se kter´ ymi se bude zaˇr´ızen´ı synchronizovat. 6.3.1
Zapnut´ı sluˇ zby na Cisco zaˇ r´ızen´ı
• Nastaven´ı ˇcasov´e z´ony Router(config)#clock timezone CST +1 • Nastaven´ı letn´ıho ˇcasu Router(config)#clock summer-time CDT recurring • Pˇrid´an´ı serveru Router(config)#ntp server ntp.nic.cz • Pˇrid´an´ı serveru Router(config)#ntp server cz.pool.ntp.org • Pˇrid´an´ı serveru Router(config)#ntp server 0.cz.pool.ntp.org • Pˇrid´an´ı serveru Router(config)#ntp server 1.cz.pool.ntp.org • Pˇrid´an´ı serveru Router(config)#ntp server 2.cz.pool.ntp.org 25
6.4
Domain Name System
Sluˇzba dns umoˇzn ˇuje pˇreklad ip adres na dom´enov´a jm´ena, kter´a se vyuˇz´ıvaj´ı vˇsude v Internetu. D´ıky t´eto sluˇzbˇe obsaˇzen´e v zaˇr´ızen´ı je umoˇznˇeno z´ısk´avat data nejen ze serveru podle jejich ip adresy, ale i jejich jmen na s´ıti.
Obr´azek 3: Jak funguje dns[9]
6.4.1
Konfigurace na Cisco zaˇ r´ızen´ıch
• Pˇrid´an´ı prim´arn´ıho dns serveru (OpenDNS) Router(config)#ip name-server 208.67.222.222 • Pˇrid´an´ı sekund´arn´ıho dns serveru (OpenDNS) Router(config)#ip nameserver 208.67.220.220
26
7
Praktick´ aˇ c´ ast
Aplikace m´a za c´ıl umoˇznit vyuˇcuj´ıc´ım Univerzity Pardubice nastavovat pˇr´ıstupov´a pr´ava k jednotliv´ ym uˇcebn´am a na stanovenou dobu. Samozˇrejmost´ı je ovˇeˇren´ı vyuˇcuj´ıc´ıho pomoc´ı jeho unik´atn´ıch pˇr´ıstupov´ ych u ´daj˚ u (pˇredpokl´ad´a se prov´az´an´ı aplikace s ovˇeˇrovac´ım datab´azov´ ym syst´emem cas7 a Weblogin).
7.1
V´ ybˇ er vhodn´ ych n´ astroj˚ u
Zab´ yval jsem se v´ ybˇerem metod, jak se na Cisco zaˇr´ızen´ı pˇripojit a hlavnˇe jak´ y zvolit postup pro samotnou konfiguraci. Nakonec byla jako nejvhodnˇejˇs´ı zvolena kombinace telnetu, sdm a skriptovac´ıho jazyka tcl. Tato kombinace umoˇzn ˇuje vzd´alenˇe kompletn´ı ovl´ad´an´ı zaˇr´ızen´ı. Nebyl by proto probl´em rozˇs´ıˇrit aplikaci o dalˇs´ı moduly, kter´e by poskytovaly funkcionalitu nejen pro pˇr´ıstupov´e seznamy, nebo vyˇsˇs´ı zabezpeˇcen´ı pomoc´ı ssh. Vzhledem k pˇredpokl´adan´emu zaˇclenˇen´ı do syst´emu Portal Univerzity Pardubice jsem zvolil jazyk php 8 , d´ıky kter´emu je snadn´e um´ıstˇen´ı aplikace do jiˇz zabˇehl´eho syst´emu. Dalˇs´ı v´ yhodou v´ ybˇeru t´eto platformy je, ˇze umoˇzn ˇuje ovˇeˇrov´an´ı uˇzivatel˚ u pomoc´ı centralizovan´eho autentizaˇcn´ıho syst´emu cas. Tento princip umoˇzn ˇuje uchov´avat jedinou datab´azi uˇzivatel˚ u. Vzd´alenˇe se pak z kaˇzd´e aplikace dotazuje do t´eto datab´aze, zda-li je jiˇz uˇzivatel pˇrihl´aˇsen. D´ıky tomu se nemus´ı do kaˇzd´e aplikace pˇrihlaˇsovat znovu. Syst´em je praktick´ y z d˚ uvodu udrˇzov´an´ı vˇsech u ´ˇct˚ u na jednom m´ıstˇe a z´aroveˇ n usnadˇ nuje uˇzivateli pr´aci s ˇcast´ ym pˇrihlaˇsov´an´ım do r˚ uznorod´ ych aplikac´ı, kter´e v r´amci univerzitn´ı s´ıtˇe vyuˇz´ıv´a.
7 8
Central Authentication Service PHP: Hypertext Processor
27
7.2
Topologie s´ıtˇ e
Vzhledem k rozlehlosti cel´e Univerzitn´ı s´ıtˇe zde uv´ad´ım topologii pˇri vyuˇzit´ı vhodnˇe navrˇzen´ ych vlan˚ u a pˇr´ıstupov´ ych seznam˚ u. Kaˇzd´a uˇcebna m´a vlastn´ı vlan, d´ıky ˇcemuˇz lze snadno identifikovat, kde se nach´az´ı. D´ıky tomu, ˇze m´a kaˇzd´a uˇcebna vlastn´ı vlan, je moˇzn´e je na smˇerovaˇci dle nich samostatnˇe konfigurovat. Pro kaˇzdou uˇcebnu m˚ uˇze nar´az bˇeˇzet jin´ y pˇr´ıstupov´ y seznam. M˚ uˇzeme t´ım tedy omezit provoz jedn´e uˇcebny, aniˇz bychom omezili provoz a v´ yuku v uˇcebn´ach dalˇs´ıch. Pro administrativn´ı u ´ˇcely byl zvolen rozsah vlan0002 – vlan0099, kde mezi nimi je moˇzn´e zvolit i samostatnou vlan pro univerzitn´ı knihovnu, posluch´arny, kancel´aˇre a i koleje. 7.2.1
Uk´ azka zapojen´ı uˇ ceben
Pro uk´azku je zde obr´azek na dalˇs´ı stranˇe. Kaˇzd´a uˇcebna je svedena do vlastn´ıho switche (vlany v pˇr´ıpadˇe pouˇzit´ı vˇetˇs´ıho pˇrep´ınaˇce). Z nˇej vych´az´ı trunk linka spojuj´ıc´ı vlany do jedn´e s t´ım, ˇze se pˇren´aˇs´ı i s informac´ı, z jak´e subs´ıtˇe data jsou a v dalˇs´ım pˇrep´ınaˇci se zase rozdˇeluj´ı do spr´avn´ ych vlan˚ u. Vˇsechny pˇrep´ınaˇce jsou svedeny do centr´aln´ıho prvku, kter´ y je pˇripojen pomoc´ı vysokorychlostn´ı linky (optick´a vl´akna) k centr´aln´ımu smˇerovaˇci. Ten umoˇzn ˇuje smˇerov´an´ı dat mezi jednotliv´ ymi vlan okruhy a pr´avˇe na tomto m´ıstˇe se d´a filtrovat veˇsker´ y datov´ y provoz.
28
Obr´azek 4: Topologie s´ıtˇe — rozlehl´a
29
Obr´azek 5: Topologie s´ıtˇe — upˇresnˇen´a 30
7.3
Pˇ ripojen´ı aplikace k routeru
Jelikoˇz aplikov´an´ı pˇr´ıstupov´ ych seznam˚ u nen´ı moˇzn´e, aniˇz bychom byli pˇripojeni na smˇerovaˇc, zaˇcnu praktickou ˇca´st popisem pr´avˇe pˇripojen´ı na toto zaˇr´ızen´ı. Z jiˇz popsan´ ych metod jsem zvolil jako prvn´ı tu nejsnazˇs´ı s t´ım, ˇze pˇr´ıpadnˇe je moˇzn´e aplikaci d´ale snadno rozˇs´ıˇrit o nˇekter´ y z pokroˇcilejˇs´ıch zp˚ usob˚ u pˇripojen´ı. Aplikoval jsem tedy metodu pˇripojen´ı pomoc´ı protokolu telnet. Aˇc nen´ı zabezpeˇcen, d´ıky vlastn´ı vlan lince mezi smˇerovaˇcem a aplikaˇcn´ım serverem, ˇreˇsen´ı je plnˇe dostaˇcuj´ıc´ı. Data smˇeruj´ıc´ı k routeru jsou chr´anˇeny pr´avˇe samostatnou vlan linkou.
Obr´azek 6: Pr˚ uchod skrz router a rozd´ıln´e vlan
7.3.1
Pˇ ripojen´ı a odesl´ an´ı dat pomoc´ı sluˇ zby telnet
Nejjednoduˇsˇs´ı pˇripojen´ı php poskytuje pomoc´ı metody fsockopen(adresa, port, error-number, error-string, timeout);, ˇc´ımˇz se vytvoˇr´ı spojen´ı mezi aplikac´ı a vzd´alen´ ym serverem. D´ale se pomoc´ı metod fputs(fsock-spojen´ı, data) a fgets(fsockspojen´ı, poˇcet-byt˚ u) zas´ılaj´ı a vyzved´avaj´ı data ke vzd´alen´emu hostiteli.
31
private function pripojitTelnet () { $ t h i s −>p r i p o j e n i = fsockopen ( $ t h i s −>host , $ t h i s −>port , $ e r r n o , $ e r r s t r , 2 ) ; i f ( $ t h i s −>p r i p o j e n i ) { $ t h i s −>p r i h l a s i t ( ) ; r e t u r n true ; } else { return false ; } } private function prihlasitTelnet () { i f ( i s s e t ( $ t h i s −>u z i v a t e l ) ) { $ t h i s −>p o s l i P r i k a z ( $ t h i s −>u z i v a t e l ) ; } $ t h i s −>p o s l i P r i k a z ( $ t h i s −>h e s l o r o u t e r u ) ; $ t h i s −>p o s l i P r i k a z ( ’ en ’ ) ; $ t h i s −>p o s l i P r i k a z ( $ t h i s −>h e s l o p r i v i l e g e ) ; r e t u r n TRUE; } private function posliPrikazTelnet ( $prikaz ) { t i m e n a n o s l e e p ( 0 , 5 0 0 0 0 0 0 0 0 ) ; // p o z d rˇz e n´ı , pˇr ed z a s l ´ a n´ım fputs ( $ t h i s −>p r i p o j e n i , $ p r i k a z . ”\ r \n ” ) ; }
Z k´odu je patrn´e, ˇze po pˇripojen´ı na zaˇr´ızen´ı se automaticky provede pˇrihl´aˇsen´ı aplikace, kter´a nad´ale jiˇz umoˇzn ˇuje zad´avat pˇr´ıkazy potˇrebn´e k ovlivˇ nov´an´ı funkc´ı smˇerovaˇce. Pˇred kaˇzd´ ym zas´ılan´ ym pˇr´ıkazem je vol´ana metoda time nanosleep(0, 500000000);, coˇz zapˇr´ıˇcin´ı pozdrˇzen´ı p˚ ul vteˇriny pˇred zasl´an´ım pˇr´ıkazu. Toho je vhodn´e vyuˇz´ıt, jelikoˇz ne vˇsechny pˇr´ıkazy smˇerovaˇc vykon´av´a okamˇzitˇe a tak se na nˇem tvoˇr´ı fronta nevykonan´ ych pˇr´ıkaz˚ u. T´ımto zp˚ usobem tuto frontu“ ˇc´asteˇcnˇe eliminu” jeme. Na smˇerovaˇc se v aplikaci nezas´ıl´a vˇetˇs´ı mnoˇzstv´ı pˇr´ıkaz˚ u, tedy toto drobn´e zdrˇzen´ı niˇcemu v´ yraznˇe nevad´ı.
32
7.3.2
Pˇ r´ıjem dat ze sluˇ zby telnet
Pro ovˇeˇren´ı spr´avnˇe vykonan´e sekvence zas´ılan´ ych dat je zde moˇznost si z routeru data st´ahnout a zobrazit je. Pokud v sekvenci pˇr´ıkaz˚ u zaslan´ ych pomoc´ı tcl nenastane chyba, zobraz´ı se pouze zopakovan´ y ˇra´dek z tcl, aniˇz by zobrazil cokoliv dalˇs´ıho. Naopak, pokud k chybˇe dojde, zobrazuje se chybov´a hl´aˇska, na kter´em ˇra´dku nastala chyba. Tohoto lze snadno vyuˇz´ıt pro ovˇeˇrov´an´ı funkˇcnosti aplikace. /∗ ∗ ∗ Pˇr ijme d a t a z e smˇe rovaˇc e pomoc´ı p r o t o k o l u t e l n e t ∗ @return <s t r i n g > p ˇr´ı c h o z´ı d a t a ∗/ private function prijmiDataTelnet () { $time = time ( ) + 5 ; $ r e s u l t = ”” ; s t r e a m s e t t i m e o u t ( $ t h i s −>p r i p o j e n i , 1 ) ; $radek = ” ” ; f g e t s ( $ t h i s −>p r i p o j e n i , 1 2 8 ) ; while ( ! f e o f ( $ t h i s −>p r i p o j e n i ) ) { $radek = f g e t s ( $ t h i s −>p r i p o j e n i , 1 2 8 ) ; i f ( preg replace ( ”/\−\−More\−\−/ ” , ”\ r \n ” , $radek ) ) { fputs ( $ t h i s −>p r i p o j e n i , ” ” ) ; } $ r e s u l t .= $radek . ”\ r \n ” ; i f ( time ( ) > $time ) { return $result ; } } return $result ; }
33
7.3.3
Pˇ ripojen´ı a odesl´ an´ı dat pomoc´ı sluˇ zby SDM
Sloˇzitˇejˇs´ı variantou pˇrenosu dat mezi serverovou aplikac´ı a smˇerovaˇcem je vyuˇzit´ı metody sdm. Tato metoda m´a jiˇz alespoˇ n drobn´e ˇsifrov´an´ı zas´ılan´eho hesla. p r i v a t e f u n c t i o n posliPrikazSDM ( $ p r i k a z ) { $ p r i k a z y = array ( ’ ! COMMANDSET VERSION= ”1 . 0 ” ’ . ”\ r \n ” , ’ ! OPTIONS BEGIN ’ . ”\ r \n ” , ’ ! MODE=”0” ’ . ”\ r \n ” , ’ ! OPTIONS END” ’ . ”\ r \n ” , $ p r i k a z . ”\ r \n ” , ’ ! END ’ . ”\ r \n ” , ’ ! COMMANDSET END ’ . ”\ r \n ” ) ; $ v e l i k o s t d a t = $ t h i s −>a r r a y s i z e ( $ p r i k a z y ) + 2 ; fputs ( $ t h i s −>p r i p o j e n i , ’POST / i o s w e b e x e c / commandset HTTP/ 1 . 1 ’ . ”\ r \n ” ) ; fputs ( $ t h i s −>p r i p o j e n i , ’ User−Agent : M o z i l l a / 4 . 0 ( Windows XP 5 . 1 ) Java / 1 . 6 . 0 1 7 ’ . ”\ r \n ” ) ; fputs ( $ t h i s −>p r i p o j e n i , ’ Host : ’ . $ SERVER [ ’SERVER ADDR ’ ] . ”\ r \n ” ) ; fputs ( $ t h i s −>p r i p o j e n i , ’ Accept : t e x t / html , image / g i f , image / jpeg , ∗ ; q =.2 , ∗ / ∗ ; q=.2 ’ . ”\ r \n ” ) ; fputs ( $ t h i s −>p r i p o j e n i , ’ Connection : keep−a l i v e ’ . ”\ r \n ” ) ; i f ( i s s e t ( $ t h i s −>u z i v a t e l ) ) { fputs ( $ t h i s −>p r i p o j e n i , ’ A u t h o r i z a t i o n : B a s i c ’ . base64 encode ( $ t h i s −>u z i v a t e l . ’ : ’ . $ t h i s −>h e s l o r o u t e r u ) . ”\ r \n ” ) ; } else { fputs ( $ t h i s −>p r i p o j e n i , ’ A u t h o r i z a t i o n : B a s i c ’ . base64 encode ( ’ : ’ . $ t h i s −>h e s l o r o u t e r u ) . ”\ r \n ” ) ; } fputs ( $ t h i s −>p r i p o j e n i , ’ Content−type : a p p l i c a t i o n /x−www−form−u r l e n c o d e d ’ . ”\ r \n ” ) ; fputs ( $ t h i s −>p r i p o j e n i , ’ Content−Length : ’ . $ v e l i k o s t d a t . ”\ r \n ” ) ; fputs ( $ t h i s −>p r i p o j e n i , ”\ r \n ” ) ; foreach ( $ p r i k a z y a s $ v a l u e ) { fputs ( $ t h i s −>p r i p o j e n i , $ v a l u e ) ; } fputs ( $ t h i s −>p r i p o j e n i , ”\ r \n ” ) ; }
34
7.3.4
Pˇ r´ıjem dat ze sluˇ zby SDM a ovˇ eˇ ren´ı zpracov´ an´ı
Samotn´ y pˇr´ıjem dat je shodn´ y s verz´ı, kter´a pˇrij´ım´a data z telnetu. Komunikuje pouze na jin´em portu. Pro kontrolu pˇrij´ıman´ ych dat je pak vyuˇzito metody provedlSePrikazSDM(), kter´a ovˇeˇr´ı pomoc´ı regul´arn´ıho v´ yrazu, zda-li nedoˇslo pˇri zpracov´an´ı skriptu na routeru k chybˇe. /∗ ∗ ∗ Z j i ˇs t ˇe n´ı zda− l i s e v y k o n a l pˇr´ı k a z z a s l a n ´y pomoc´ı p r o t o k o l u SDM ∗ @return
t r u e : v y k o n a l se , f a l s e : n e v y k o n a l s e ∗/ p r i v a t e f u n c t i o n provedlSePrikazSDM ( ) { i f ( preg match ( ’ /ˆPARSE ERROR= ”[ ˆ 0 ] ”| w h i l e e x e c u t i n g /m’ , $ t h i s −>p r i c h o z i d a t a ) == 0 ) { r e t u r n true ; } return false ; }
7.3.5
Pˇ ripojen´ı a odesl´ an´ı dat pomoc´ı sluˇ zby SSH
Vzhledem k volbˇe php a spoustˇe dostupn´ ych hotov´ ych ˇreˇsen´ı v nˇem, je dostupn´e i ˇreˇsen´ı pomoc´ı metody ssh. Tato metoda je jiˇz plnˇe ˇsifrov´ana a odbour´av´a tedy pˇr´ıpadnou potˇrebu samostatn´e virtu´aln´ı linky smˇerem od aplikaˇcn´ıho serveru k smˇerovaˇci. Nev´ yhodou je, ˇze tato metoda pˇripojen´ı je umoˇznˇena pouze za pˇredpokladu pouˇzit´ı operaˇcn´ıho syst´emu GNU/Linux na aplikaˇcn´ım serveru, jelikoˇz jinde knihovna poskytuj´ıc´ı ssh v php nen´ı dostupn´a. Jak nainstalovat a zprovoznit ssh pod Linuxem v php je dostupn´e na webov´ ych str´ank´ach kevin.vanzonneveld.net, kde autor popisuje instalaci, pˇripojen´ı i samotn´e zas´ıl´an´ı pˇr´ıkaz˚ u na vzd´alen´ y syst´em, aˇc ne zrovna Cisco smˇerovaˇc.
35
7.4
Ovˇ eˇ ren´ı uˇ zivatele aplikac´ı
Pro ovˇeˇren´ı uˇzivatele je vyuˇzit jednoduch´ y skript, kter´ y zjist´ı, zda-li je uˇzivatel v seznamu a zda-li se pˇrihlaˇsuje pomoc´ı jeho hesla. Pokud k ovˇeˇren´ı nedojde, je na vyˇsˇs´ı aplikaˇcn´ı u ´rovni incident zaznamen´an s u ´daji, podle kter´ ych by ˇsel podezˇrel´ y uˇzivatel dohledat na s´ıti. Pro uchov´an´ı hesel v bezpeˇc´ı je vyuˇzito dvojit´e ˇsifry. Dˇr´ıve se vyuˇz´ıval hojnˇe algoritmus md5, kter´ y m´a ovˇsem bezpeˇcnostn´ı rizika. Pro nˇekter´e ˇretˇezce existuje v´ıce hash˚ u. D´ıky tomu se daly povaˇzovat dva r˚ uzn´e ˇretˇezce za shodn´e, coˇz je z bezpeˇcnostn´ıho hlediska nepˇr´ıpustn´e. Proto je zde vyuˇzito novˇejˇs´ıho a silnˇejˇs´ıho algoritmu sha1, kter´ y je pro jistotu doplnˇen o ˇc´ast, kde je za jeho konec pˇripojen ˇretˇezec z ˇsifrovac´ıho algoritmu md5, ve kter´em je uloˇzena d´elka vlastn´ıho hesla. 7.4.1
Uk´ azka ovˇ eˇ ren´ı uˇ zivatele
Z k´odu je patrn´e, ˇze moment´aln´ı verze se dotazuje na uˇzivatele a heslo z konfiguraˇcn´ıho souboru pomoc´ı konstant. Tuto ˇc´ast k´odu jsem pˇrevzal z dˇr´ıvˇejˇs´ıho ˇskoln´ıho projektu, kde byl napojen na Oracle 10g datab´azi. Nen´ı probl´em tuto ˇc´ast d´ale pˇrizp˚ usobit tak, aby se mohla dotazovat do v´ yˇse zmiˇ novan´eho centralizovan´eho autentizaˇcn´ıho syst´emu cas, ˇci jin´eho datab´azov´eho syst´emu. /∗ ∗ ∗ Pˇr i h l ´ a ˇs e n´ı u ˇz i v a t e l e a s k r z k o n f i g u r a ˇc n´ı s o u b o r ( b ´y v a l o s k r z DB, z b y t e ˇc n ´e ∗ pro uk´ a zku − t ˇr´ı d a j e p o uˇz i t a z d ˇr´ı v ˇe j ˇs´ı h o ˇs k o l n´ı h o p r o j e k t u , kde b y l a ∗ cel´ a t ˇr´ı d a napojena na O r a c l e DB pomoc´ı DiBi l a y e r u , t e d y j e j e d n o d u c h´e ∗ j i o pˇe t na DB p ˇr i p o j i t ) ∗ @param <s t r i n g > $username u ˇz i v a t e l s k ´e jm´e no pˇr i h l aˇs o v a n ´e h o u ˇz i v a t e l e ∗ @param <s t r i n g > $password h e s l o pˇr i h l aˇs o v a n ´e h o u ˇz i v a t e l e ∗ @return t r u e : ovˇeˇr en , f a l s e : n e o vˇeˇr en ∗/ p u b l i c f u n c t i o n l o g i n u s e r ( $username , $password ) { $ t h i s −>username = $username ; $ t h i s −>password = sha1 ( $password ) . md5( s t r l e n ( $password ) ) ; i f ( $ t h i s −>username == APPL USERNAME && $ t h i s −>password == APPL PASSWORD) { $ SESSION [ ’ l o g i n ’ ]= true ; $ SESSION [ ’ username ’ ]= $ t h i s −>username ; r e t u r n true ; } else { return false ; } }
36
Zde pro uk´azku uv´ad´ım, jak vypadala p˚ uvodn´ı verze metody s ovˇeˇren´ım skrz datab´azi a DiBi layer. /∗ ∗ ∗ Pˇr i h l ´ a ˇs e n´ı u ˇz i v a t e l e a o v ˇe ˇr e n´ı s k r z d a t a b ´ azi ∗ @param <s t r i n g > $ u s e r ∗ @param <s t r i n g > $password ∗ @return p ˇr i h l ´ a ˇs e n u ´ s pˇe ˇs nˇe ? ∗/ p u b l i c f u n c t i o n l o g i n u s e r ( $username , $password ) { $ t h i s −>username = $username ; $ t h i s −>password = sha1 ( $password ) . md5( s t r l e n ( $password ) ) ; try { $result = null ; $db = new Oci8 ( ) ; $ r e s u l t = $db−>UserAuth ( $ t h i s −>username , $ t h i s −>password ) ; unset ( $db ) ; i f ( ( $ r e s u l t != n u l l ) && ( $ t h i s −>username == $ r e s u l t [ 0 ] [ ’USERNAME ’ ] && ( $ t h i s −>password == $ r e s u l t [ 0 ] [ ’PASSWORD’ ] ) ) ) { $ SESSION [ ’ l o g i n ’ ]= true ; $ SESSION [ ’ username ’ ]= $ r e s u l t [ 0 ] [ ’USERNAME ’ ] ; $ SESSION [ ’ r o l e ’ ] = $ r e s u l t [ 0 ] [ ’ROLE ’ ] ; r e t u r n true ; } else { return false ; } } c a t c h ( D i b i E x c e p t i o n $e ) { echo g e t c l a s s ( $e ) , ’ : ’ , $e−>getMessage ( ) , ”\n ” ; return false ; } }
37
7.5
Generov´ an´ı doby platnosti
Jako poˇzadavek na aplikaci bylo zad´ano, ˇze mus´ı jednotliv´e pˇr´ıstupov´e seznamy nastavovat na pˇredem stanovenou dobu. Pokud by zde toto ˇcasov´e omezen´ı nebylo, zajist´e by se st´avalo, ˇze by nˇekdo pˇr´ıstupov´ y seznam po skonˇcen´ı hodiny/p´ısemky nevypnul a omezil by t´ım pˇr´ıpadn´e dalˇs´ı vyuˇcovac´ı hodiny. V aplikaˇcn´ı ˇca´sti tedy kaˇzd´ y, kdo aplikuje pˇr´ıstupov´ y seznam mus´ı nastavit ˇ ˇcasov´ y interval, na kter´ y seznam aplikuje. Cas se nastavuje v minut´ach, coˇz je dostateˇcnˇe pˇresn´a jednotka pro urˇcen´ı doby pro bˇeˇzn´e pouˇz´ıv´an´ı, jelikoˇz mezi hodinami jsou pˇrest´avky, bˇehem kter´ ych dojde k deaktivaci pˇr´ıstupov´eho seznamu. P´ar minut z pˇrest´avky, kdy by st´ale nebyla dostupn´a ˇca´st s´ıtˇe nikomu vadit nebude, nehledˇe na to, ˇze by nikdo pˇresnˇejˇs´ı ˇcasov´ yu ´daj nechtˇel nastavovat. 7.5.1
Implementace
Uˇzivatel zad´a poˇcet minut, po kter´e chce seznam aplikovat. Nelze pl´anovat seznam na dobu pˇredem, vˇzdy se aplikuje seznam od aktu´aln´ıho data na danou dobu. Zobrazen´ y k´od ukazuje zpracov´an´ı ˇcasov´ ych u ´daj˚ u. Pokud by se mˇelo dodˇelat pl´anov´an´ı ˇcasu, jednalo by se o posunut´ı hodnoty zacatek o ˇcas, ve kter´ y se m´a ud´alost zah´ajit. Probl´em by ovˇsem mohl nastat na smˇerovaˇci, kde by na tuto zmˇenu nebyly pˇripraveny kontroln´ı mechanismy t´eto aplikace. Ta by se musela ˇc´asteˇcnˇe opravit. 7.5.2
Uk´ azka generov´ an´ı ˇ casov´ eho raz´ıtka
Z k´odu je patrn´e, ˇze n´azev t´eto ˇcasov´e n´alepky je v´azan´ y na ˇcas, kdy byl vytv´aˇren, a na samotn´ y pˇr´ıstupov´ y seznam, na kter´ y je aplikov´an. p r i v a t e f u n c t i o n generujTimeRange ( ) { $ t h i s −>t i m e r a n g e [ ’ z a c a t e k ’ ] = date ( $ t h i s −>t i m e f o r m a t ) ; $ t h i s −>t i m e r a n g e [ ’ konec ’ ] = date ( $ t h i s −>timeformat , $ t h i s −>t i m e r a n g e [ ’ z a c a t e k ’ ] + strtotime ( $ t h i s −>t i m e r a n g e [ ’ doba ’ ] . ” minute ” ) ) ; $ t h i s −>f i n a l n a m e = ’TR ’ . $ t h i s −>a c l n a z e v . ’ ’ . date ( ”YmdHi” ) ; $ t h i s −>f i n a l n a m e s h o r t = $ t h i s −>a c l n a z e v . date ( ”Hi ” ) ; $ t h i s −>f i n a l t i m e r a n g e = array ( ’ time−r a n g e ’ . $ t h i s −>f i n a l n a m e , ’ a b s o l u t e s t a r t ’ . $ t h i s −>t i m e r a n g e [ ’ z a c a t e k ’ ] . ’ end ’ . $ t h i s −>t i m e r a n g e [ ’ konec ’ ] ); }
38
7.5.3
Uk´ azka statick´ eho vr´ acen´ı zkr´ acen´ eho n´ azvu ˇ casov´ eho raz´ıtka
T´eto metody se vyuˇz´ıv´a pro um´ıstˇen´ı z´alohy p˚ uvodn´ıho pˇr´ıstupov´eho seznamu, kter´ y byl nastaven na rozhran´ı, na kter´e se bude nov´e acl aplikovat. Jelikoˇz Cisco smˇerovaˇce maj´ı omezenou d´elku souboru, musel jsem pouˇz´ıt zkr´acen´eho n´azvu, kde nen´ı cel´e ˇcasov´e raz´ıtko, jak bych si pˇr´al. /∗ ∗ ∗ S t a t i c k ´e metoda , k t e r ´ a pˇr i z a v o l ´ a n´ı s parametry ∗ v r a c´ı z k r ´ a c e n ´y n ´ a z ev s o u b o r u . ∗ @param $doba Doba p l a t n o s t i ACL ∗ @param <s t r i n g > $ a c l n a z e v N´ a zev pˇr´ıs t u p o v ´e h o seznamu ∗ @return <s t r i n g > z k r ´ a c e n ´y n ´ a z ev ACL pro g e n e r o v ´ a n´ı s o u b o r˚ u ve s mˇe r o v aˇc i ∗/ p u b l i c s t a t i c f u n c t i o n getTimeRangeNameStaticShort ( $doba , $ a c l n a z e v = n u l l ) { $ t i m e r a n g e = new TimeRange ( ) ; $timerange −>setTimeRange ( $doba , $ a c l n a z e v ) ; r e t u r n $timerange −>getTimeRangeNameShort ( ) ; }
39
7.6
Generov´ an´ı ACL pˇ r´ıkaz˚ u
Pro jednoduchou spr´avu seznam˚ u je kaˇzd´ y z nich udrˇzov´an ve vlastn´ım souboru, kde jeho n´azev je z´aroveˇ n i n´azev samotn´eho pˇr´ıstupov´eho seznamu. Jejich zpracov´an´ı spoˇc´ıv´a v naˇcten´ı souboru a doplnˇen´ı pˇr´ıkaz˚ u o ˇcasov´ y interval, ve kter´em budou platn´e. 7.6.1
Uk´ azka pˇ rid´ an´ı ˇ casov´ eho raz´ıtka
Pro zpracov´an´ı je podm´ınkou, aby v pˇr´ıstupov´em seznamu (na ˇra´dku s poˇzadovan´ ym filtrem) byl poˇzadavek na nastaven´ı ˇcasov´eho raz´ıtka vˇzdy na konci ˇra´dku, ˇ adek tedy nekonˇc´ı pˇr´ımo coˇz je z principu tvorby acl vlastnˇe i t´emˇeˇr nutnost´ı. R´ ˇcasovou hodnotou, ale pouze slovy time-range. /∗ ∗ ∗ Zpracov´ a n´ı pˇr´ıs t u p o v ´e h o seznamu a d o p l nˇe n´ı o ˇc a s o v´e r a z´ı t k o ∗/ p r i v a t e f u n c t i o n parseACL ( ) { foreach ( $ t h i s −> a c l l i s t a s $row ) { i f ( strpos ( $row , ’ time−r a n g e ’ ) ) { $row .= ’ ’ . $ t h i s −>t i m e r a n g e n a z e v ; } $ t h i s −>f i n a l a c l [ ] = $row ; } }
7.6.2
Uk´ azka navr´ acen´ı jiˇ z pˇ ripraven´ eho ACL
Po zpracov´an´ı jsou vˇsechny pˇr´ıstupov´e seznamy udrˇzov´any v lok´aln´ı pamˇeti tˇr´ıdy, odkud je moˇzn´e pozdˇeji seznamy z pole vyzvednout a pˇredat je pro zpracov´an´ı. /∗ ∗ ∗ Vrac´ı o bsa h d e f i n o v a n´e h o pˇr´ıs t u p o v ´e h o seznamu . ∗ @param <s t r i n g > $ a c l n a z e v N´ a zev pˇr´ıs t u p o v ´e h o seznamu ( n ´ a z ev s o u b o r u ) ∗ @return <array> Pole o b s a h u j´ı c´ı pˇr´ı s t u p o v ´y seznam (ACL) , pokud j e zad´ an ∗ nezn´ a m´y n´ a zev , v r a c´ı n u l l . ∗/ p u b l i c f u n c t i o n getACL ( $ a c l n a z e v ) { i f ( i s s e t ( $ t h i s −> a c l l i s t s [ $ a c l n a z e v ] ) ) { r e t u r n $ t h i s −> a c l l i s t s [ $ a c l n a z e v ] ; } return null ; }
40
7.6.3
Uk´ azka navr´ acen´ı pole seznam˚ u ACL
Po zpracov´an´ı acl do pole (naˇcten´ım soubor˚ u) je nutn´e zajistit pˇred´an´ı jejich n´azv˚ u do aplikaˇcn´ı ˇc´asti, kde se pro uˇzivatele vygeneruje seznam dostupn´ ych pˇr´ıstupov´ ych seznam˚ u. /∗ ∗ ∗ Vrac´ı seznam vˇs e c h pˇr´ı s t u p o v ´y c h seznam˚ u , k t e r ´e j s o u d o s t u p n´e . ∗ @return <array> p o l e o b s a h u j´ı c´ı seznam pˇr´ı s t u p o v ´y c h seznam˚ u, ∗ pokud ˇz ´ a dn´y seznam nen´ı , v r a c´ı p r a ´ z d n´e p o l e . ∗/ p u b l i c f u n c t i o n getACLNames ( ) { $nazvy = array ( ) ; i f ( $ t h i s −> a c l l i s t s != n u l l ) { foreach ( $ t h i s −> a c l l i s t s a s $key => $ v a l u e ) { $nazvy [ ] = $key ; } r e t u r n $nazvy ; } else { r e t u r n array ( n u l l ) ; } }
41
7.7
Generov´ an´ı TCL pˇ r´ıkaz˚ u
Pokud jiˇz m´ame vygenerov´an pˇr´ıstupov´ y seznam, ˇcasov´ y interval platnosti seznamu a rozhran´ı (vlan), na kter´em bude seznam aplikov´an, je potˇrebn´e vytvoˇrit v´ ysledn´e pˇr´ıkazy, pomoc´ı kter´ ych se smˇerovaˇc nastav´ı. Pro jeho nastaven´ı se vyuˇz´ıv´a pr´avˇe jazyka tcl. 7.7.1
Tvorba v´ ysledn´ eho seznamu TCL pˇ r´ıkaz˚ u
/∗ ∗ ∗ V y g e n e r u j e v ´y s l e d n ´e TCL, k t e r ´e u s k l a d n´ı v l o k ´ a l n´ı promˇenn´e ∗/ p r i v a t e f u n c t i o n generujVysledneTCL ( ) { foreach ( $ t h i s −>t c l s a s $ t c l ) { foreach ( $ t c l a s $ p r i k a z y ) { $ t h i s −>finalTCL .= ’ i o s c o n f i g ’ ; foreach ( $ p r i k a z y a s $ p r i k a z ) { $ t h i s −>finalTCL .= ’ ” ’ . $ p r i k a z . ’ ” ’ ; } $ t h i s −>finalTCL .= ”\ r \n ” ; } } }
V testovac´ıch reˇzimech pˇri v´ yvoji aplikace jsem mˇel v acl pouze p´ar pˇr´ıkaz˚ u, kter´e nastavovaly pˇr´ıstupov´e seznamy. S t´ım probl´em nebyl. Bohuˇzel pˇri ˇreˇsen´ı fin´aln´ıch pˇr´ıstupov´ ych seznam˚ u, kter´e d´ıky tomu, ˇze mus´ı b´ yt zachov´any poskytovan´e sluˇzby jako dns, dhcp, ntp a dalˇs´ı, cel´ y pˇr´ıstupov´ y seznam r´azem nabobtn´av´a a st´av´a se delˇs´ım. Zde jsem narazil na dalˇs´ı omezen´ı Cisco zaˇr´ızen´ı. D´elka ˇra´dku, kter´ y obsahuje tcl pˇr´ıkaz, je omezena na nˇejakou velmi malou hodnotu (odhaduji hodnotu 255 znak˚ u), coˇz je nemyslitelnˇe m´alo, vzhledem k tomu, ˇze se cel´ y pˇr´ıkaz mus´ı zaslat na jednom ˇr´adku. T´ımto omezen´ım mi je vlastnˇe znemoˇznˇeno zad´av´an´ı cel´eho acl, dle mnou pˇredpokl´adan´eho syst´emu. Do t´eto mal´e hodnoty se se vˇsemi pravidly pˇr´ıstupov´eho seznamu nemohu vej´ıt. ˇ sen´ı tohoto probl´emu by bylo nejsp´ıˇse jedin´e. Daly by se zas´ılat pˇr´ımo Reˇ konfiguraˇcn´ı pˇr´ıkazy, jako by je psal s´am uˇzivatel do Cisco ios konzole. Probl´em tohoto ˇreˇsen´ı je, pokud se nˇekde v pr˚ ubˇehu objev´ı chyba, smˇerovaˇc z˚ ustane nastaven ˇca´steˇcnˇe, coˇz zp˚ usob´ı nekonzistenci dat v konfiguraci zaˇr´ızen´ı. M˚ uˇze doj´ıt k zastaven´ı“ bˇehu v nespecifikovan´em stavu, coˇz je neˇza´douc´ı. ”
42
7.8
Zabezpeˇ cen´ı chodu samotn´ eho smˇ erovaˇ ce
Z d˚ uvodu, ˇze by mohl aplikaˇcn´ı server vypadnout, mus´ı smˇerovaˇc obsahovat samoobnovovac´ı funkce. Tyto funkce zajist´ı v pˇr´ıpadˇe, ˇze aplikace aktivuje nˇejak´ y pˇr´ıstupov´ y profil, z´alohu p˚ uvodn´ıho profilu do souboru um´ıstˇen´eho pˇr´ımo na smˇerovaˇci. D´ale zajist´ı, ˇze po uplynut´ı doby platnosti profilu obnov´ı p˚ uvodn´ı nastaven´ı dan´eho portu (z dˇr´ıve vytvoˇren´eho souboru). Jak je vidˇet, pokud by router neobsahoval tyto samoobnovovac´ı funkce, mohla by nastat situace, kdy by pˇri v´ ypadku aplikaˇcn´ıho serveru jiˇz nedoˇslo k navr´acen´ı smˇerovaˇce do p˚ uvodn´ı podoby. T´ım by mohlo doj´ıt k zablokov´an´ı nˇekter´e z uˇceben v nespecifikovan´em stavu (dle pravidel nastaven´ ych v aktivovan´em pˇr´ıstupov´em seznamu a pravidel definovan´ ych jako standardn´ı na smˇerovaˇci). Zde mi zaˇcal vyvst´avat probl´em a zaˇcal jsem nar´aˇzet jiˇz na samotn´e hranice pouˇzit´ı, do t´e doby velice vhodn´eho protokolu sdm. N´aslednˇe jsem byl nucen ho zmˇenit. Vˇsechny jiˇz napsan´e kusy k´odu jsou zachov´any, jelikoˇz jsou dobˇre pouˇziteln´e, ovˇsem na omezenˇejˇs´ı programov´e vyuˇzit´ı. Protokol sdm totiˇz neumoˇzn ˇuje zavol´an´ı reˇzimu tclsh na smˇerovaˇci, ˇc´ımˇz mi neumoˇzn ˇuje spuˇstˇen´ı kontroln´ıho skriptu. Tento reˇzim je jedin´ y, kter´ y umoˇzn ˇuje zapnout lok´aln´ı proceduru nahranou pˇr´ımo v zaˇr´ızen´ı s poˇzadovan´ ymi parametry. Vol´an´ı funkce pˇr´ımo ve smˇerovaˇci je ned´ılnou souˇca´st´ı zachov´an´ı konzistence nastaven´ı, jak jsem jiˇz popsal v´ yˇse, smˇerovaˇc mus´ı dok´azat fungovat samostatnˇe, proto nen´ı moˇzn´e um´ıstit tuto tcl proceduru jinam. Jako parametry jsou pˇred´av´any doba, ve kter´e se m´a aktivovat obnoven´ı nastaven´ı p˚ uvodn´ıch parametr˚ u (p˚ uvodn´ı acl) portu, vlan (port na kter´em je profil aktivov´an), a n´azev souboru, do kter´eho se p˚ uvodn´ı konfigurace portu ukl´ad´a. Zde pro uk´azku uv´ad´ım zjednoduˇsenou verzi procedury: proc f i n a l { i n t e r f a c e f i l e n a m e doba } { set x ”show run i n t e r f a c e $ i n t e r f a c e | i n c l u d e i n t e r f a c e | a c c es s− g ro up | end ” lappend r e s [ exec $x ] set m y f i l e i d [ open ” $ f i l e n a m e ” w+] foreach o u t s $ r e s { puts $ m y f i l e i d $ o u t s } close $ m y f i l e i d i o s c o n f i g ”kron p o l i c y − l i s t $ f i l e n a m e ” ” c l i copy $ f i l e n a m e r u n n i n g − c o n f i g ” ” c l i d e l e t e $ f i l e n a m e ” i o s c o n f i g ”kron o c c u r r e n c e $ f i l e n a m e a t $doba o n e s h o t ” ”policy−list $filename ” }
43
Jak je vidˇet, jedn´a se o p´ar jednoduch´ ych pˇr´ıkaz˚ u, jejichˇz zprovoznˇen´ı pˇresto zabralo nemalou ˇca´st doby. Kaˇzd´ y ˇr´adek m˚ uˇze na smˇerovaˇci zahl´asit chybu, aniˇz by zobrazil ˇra´dek, na kter´em skript zkolaboval. Celkov´e ladˇen´ı tcl je v podstatˇe vˇec t´emˇeˇr nemoˇzn´a, proto napsat i nejjednoduˇsˇs´ı skript zabere ˇra´dovˇe nˇekolik hodin. Toto jiˇz nepovaˇzuji za trivi´aln´ı tcl skript. Z tohoto uk´azkov´eho k´odu teprve vych´az´ı v´ ysledn´ y s oˇsetˇren´ım nˇekter´ ych v´ yjimek, kter´e za bˇehu mohou vyvst´avat. Z d˚ uvodu omezen´ı sdm protokolu jsem se ve v´ yvoji vr´atil zpˇet k protokolu telnet a n´aslednˇe jsem zaˇcal s implementac´ı protokolu ssh. Zabezpeˇcen´ y protokol je pro mne bohuˇzel nepouˇziteln´ y, jelikoˇz jedin´ y funkˇcn´ı hotov´ y php modul je dostupn´ y pouze pod operaˇcn´ım syst´emem Linux, kter´ y neovl´ad´am na dostateˇcn´e u ´rovni, abych zprovoznil vˇse potˇrebn´e. V r´amci t´eto pr´ace jsem si nainstaloval ˇcist´ y syst´em Ubuntu 10.04 LTS, do nˇej dle n´avodu nainstaloval Apache, php a ostatn´ı nutn´e moduly a v r´amci nˇekolika hodin i zprovoznil ssh v php. Celkov´e ladˇen´ı a pr´ace pod OS Linux pro mne byla zcela nov´a zkuˇsenost. N´aslednˇe jsem byl nucen zprovoznˇen´ı ssh pro n´aroˇcnost a pˇr´ıpadn´e nedostatky v m´e implementaci zavrhnout. ssh spojen´ı by mˇelo b´ yt ˇca´steˇcnˇe implementovan´e, ovˇsem ne tak pouˇziteln´e, jako jiˇz dˇr´ıve pˇripraven´e metody spojen´ı sdm a telnet. Pod OS Windows jsem dlouho marnˇe sh´anˇel a snaˇzil ssh oˇzivit, vˇsechny pokusy vˇsak byly ne zcela zdaˇril´e, nebo bez oˇcek´avan´eho v´ ysledku. Aktu´aln´ı verze t´eto pr´ace tedy funguje ve fin´ale pouze s protokolem telnet a sdm aˇz do ˇca´sti, kdy by se mˇel spustit mechanismus pro navracen´ı p˚ uvodn´ı konfigurace na rozhran´ı.
44
8
Z´ avˇ er
V r´amci zv´ yˇsen´ı bezpeˇcnosti by bylo vhodn´e vyuˇz´ıt moˇznosti funkce routeru nastavit pro kaˇzd´ y pˇr´ıkaz zvl´aˇstn´ı privilege level, kde by se nastavila niˇzˇs´ı hodnota funkc´ım pro tvorbu acl a konfiguraci vlan˚ u. Vytvoˇren´ım uˇzivatele s t´ımto privilege levelem by se pak dos´ahlo toho, ˇze by t´emˇeˇr nikdo nemohl zneuˇz´ıt pravomoc´ı uˇzivatele k jin´ ym, neˇz dan´ ym u ´ˇcel˚ um. Nebezpeˇc´ı by mohlo nastat, pokud by u ´toˇcn´ık narazil na slabinu v php k´odu, ˇci odchytil pakety jdouc´ı z aplikace k routeru, nesouc´ı pˇrihlaˇsovac´ı u ´daje. V tomto pˇr´ıpadˇe by pˇri z´ısk´an´ı pˇr´ıstupu do routeru u ´toˇcn´ık pˇrevzal veˇskerou kontrolu nad cel´ ym zaˇr´ızen´ım, coˇz je neˇza´douc´ı. D´ıky tomu by mˇel pˇr´ıstup do centr´aln´ıho prvku s´ıtˇe a mohl tak v podstatˇe pˇrevz´ıt nad s´ıt´ı kontrolu. ˇ sen´ım tohoto probl´emu by bylo um´ıstit aplikaˇcn´ı server a vlastn´ı smˇerovaˇc Reˇ na takovou ˇca´st s´ıtˇe, kam by nemˇel u ´toˇcn´ık moˇznost se dostat. Jedn´ım z ˇreˇsen´ı by bylo oddˇelit smˇerovaˇc pomoc´ı dvou rozhran´ı, s jedn´ım konfiguraˇcn´ım na samostatn´e vlanˇe k routeru a druh´ ym rozhran´ım, pˇres kter´e by se pˇripojovali uˇzivatel´e na aplikaˇcn´ı server. T´ım by se zamezilo moˇznosti, ˇze by se kdokoliv mohl dostat k dat˚ um smˇeˇruj´ıc´ım na router. Toto ˇreˇsen´ı je naznaˇceno i v pr˚ ubˇehu pr´ace. V pr´aci jsem nakonec neimplementoval vˇse, co jsem mˇel v pl´anu. Bohuˇzel jej´ı n´aroˇcnost, jak ˇcasov´a, tak na znalost programovac´ıch a s´ıt’ov´ ych technik je znaˇcn´a a moje dovednosti, i pˇres veˇskerou snahu, omezen´e. V aktu´aln´ı f´azi je moˇzn´e pr´aci vyuˇz´ıt pro aktivaci pˇr´ıstupov´ ych seznam˚ u a za pomoci protokolu telnet (omezenˇe i sdm protokolu) vzd´alenˇe nakonfigurovat smˇerovaˇc. Ten si n´aslednˇe s´am ohl´ıd´a vˇsechny n´aleˇzitosti pro pˇr´ıpad, ˇze by doˇslo k v´ ypadku aplikaˇcn´ıho serveru, nebo ˇc´asti s´ıtˇe (smˇerovaˇc z˚ ust´av´a v konzistentn´ım stavu pro funkˇcnost s´ıtˇe). Zpracov´an´ım t´eto pr´ace jsem si odnesl nesˇcetn´e mnoˇzstv´ı poznatk˚ u o moˇznostech pokroˇcil´ ych technik konfigurace smˇerovaˇc˚ u, implementace r˚ uzn´ ych k´od˚ u v php o kter´ ych jsem do t´eto pr´ace nemˇel ponˇet´ı, ˇze php v˚ ubec umoˇzn ˇuje. Celkovˇe jsem si rozˇs´ıˇril znalost programovac´ıch technik (oop programov´an´ı v php), nauˇcil se podrobnˇeji jak funguj´ı nˇekter´e protokoly (telnet, sdm, ssh), kter´e jsem potˇreboval nastudovat pro implementaci a tak´e z´ıskal nˇejak´e nov´e zkuˇsenosti z prostˇred´ı syst´emu Linux.
45
Reference ˇ [1] BOUSKA, P.: Cisco IOS 5 - komunikace se switchem — SAMURAJ-cz.com. 16. 05. 2007, [Online; cit. 2010-04-12]. URL [2] Cisco Systems, I.: Cisco IOS Scripting with Tcl — Cisco Systems. July 2003, [Online; cit. 2010-04-10]. URL [3] Cisco Systems, I.: Cisco IOS Configuration Fundamentals Configuration Guide, Release 12.4. c1992-2010, [Online; cit. 2010-02-10]. URL [4] Cisco Systems, I.: Cisco IOS Scripting with Tcl — Cisco Systems. c19922010, [Online; cit. 2010-04-12]. URL [5] Cisco Systems, I.: Command Scheduler [Cisco IOS Software Releases 12.3 Mainline] — Cisco Systems. c1992-2010, [Online; cit. 2010-05-01]. URL [6] Cisco Systems, I.: Configuring DNS on Cisco Routers [IP Application Services] — Cisco Systems. c1992-2010, [Online; cit. 2010-05-01]. URL [7] Cisco Systems, I.: Configuring IP Access Lists — Cisco Systems. c1992-2010, [Online; cit. 2010-04-09]. URL [8] Hubicka, J.: TCL — Skolicka. c1995, [Online; cit. 2010-04-10]. URL
46
´ O.: DNSSEC ˇca´st prvn´ı aneb je potˇreba zaˇc´ıt od p´ıky. 8. 12. 2008, [9] SURY, [Online; cit. 2010-05-06]. URL [10] Wikipedia: Cisco IOS — Wikipedia, The Free Encyclopedia. 2010, [Online; accessed 8-April-2010]. URL [11] Wikipedia: Simple Network Management Protocol — Wikipedia, The Free Encyclopedia. 2010, [Online; accessed 8-April-2010]. URL [12] Wikipedie: Cisco IOS — Wikipedie: Otevˇren´a encyklopedie. 2010, [Online; navˇst´ıveno 7. 04. 2010]. URL
47
Pˇ r´ılohy Pˇr´ılohou k t´eto pr´aci je dvd m´edium, kter´e obsahuje praktickou ˇc´ast t´eto pr´ace, dokumentaci a tuto textovou ˇc´ast v elektronick´e podobˇe.
48