ˇ ´I TECHNICKE´ V BRNEˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
ˇ ´I SMEROVA ˇ POSKYTOVATELE ˇ PC JAKO HRANICN C ˇ SLUZEB INTERNETU
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2007
MICHAL NOWAK
ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
ˇ ´I SMEROVA ˇ POSKYTOVATELE ˇ PC JAKO HRANICN C ˇ SLUZEB INTERNETU PC AS A BORDER ROUTER OF AN INTERNET SERVICE PROVIDER
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE
MICHAL NOWAK
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2007
´ Mgr. MAREK RYCHLY
Abstrakt Pr´ace se snaˇz´ı zmapovat strukturu s´ıtˇe stˇrednˇe velk´eho poskytovatel pˇripojen´ı k internetu v okol´ı Rous´ınova a zjistit poˇzadavky poskytovatele na funkˇcnost smˇerovaˇce. Pr´ ace pˇredevˇs´ım diskutuje zvolenou distribuci operaˇcn´ıho syst´emu a v´ ybˇer sluˇzeb, pˇredevˇs´ım vzhledem k v´ ykonu poˇc´ıtaˇce, na kter´em se implementuje softwarov´ y smˇerovaˇc a stabilitˇe dan´ ych sluˇzeb. Pro smˇerovaˇc je implementov´ano pˇripojen´ı k internetu skrz protokol IPv6, pˇresto lze pˇredpokl´adat, ˇze naprost´a vˇetˇsina provozu p˚ ujde pˇres IPv4. Souˇc´ast´ı pr´ace je jednoduch´ a autentizace klient˚ u spojen´a s blokac´ı tˇech nezn´am´ ych, ˇr´ızen´ı ˇs´ıˇrky p´asma a pouˇzit´ı v´ıce WAN spojen´ı.
Kl´ıˇ cov´ a slova Linux, Debian, smˇerovaˇc, router, ISP, Rous´ınovsko.net, ˇr´ızen´ı ˇs´ıˇrky p´asma, transparentn´ı SMTP/POP3/IMAP proxy
Abstract This Bachelor Thesis tries to investigate structure of a network of medium size Internet Service Provider in Rous´ınov and surroundings, as well as tries to study demands of ISP that belongs to router’s functionality. Thesis discuss mainly choosen distribution of the Linux operating system and used system services with regard to computer and system services performace and stability. Anyway an absolute majority of bandwidth will belong to IPv4 traffic, Router is IPv6 capable throught Tunnel Broker. Another components of thesis are basic authentication, blocking of unknown clients, traffic shaping and basics of theory about WAN interfaces bonding.
Keywords Linux, Debian, router, ISP, Rousinovsko.net, traffic shaping, transparent SMTP/POP3/IMAP proxy
Citace Michal Nowak: PC jako hraniˇcn´ı smˇerovaˇc poskytovatele sluˇzeb Internetu, bakal´aˇrsk´a pr´ace, Brno, FIT VUT v Brnˇe, 2007
PC jako hraniˇ cn´ı smˇ erovaˇ c poskytovatele sluˇ zeb Internetu Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Mgr. Marka Rychl´eho ....................... Michal Nowak 13. kvˇetna 2007
Podˇ ekov´ an´ı R´ad bych podˇekoval panu Ing. Martinu Mol´akovi, z´astupci ISP Rous´ınovsko.net, za pomoc pˇri v´ ybˇeru vhodn´ ych sluˇzeb pro smˇerovaˇc a za pomoc pˇri nasazov´an´ı do testovac´ıho provozu.
c Michal Nowak, 2007.
Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
Obsah ´ 1 Uvod
5
2 Souˇ casn´ y stav s´ıtˇ e, volba hardware a distribuce operaˇ cn´ıho syst´ emu 2.1 Souˇcasn´ y stav s´ıtˇe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 V´ ybˇer datov´eho m´edia . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Volba souborov´eho syst´emu . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Realizace snahy o minim´aln´ı mnoˇzstv´ı z´apis˚ u na m´edium . . . . . . . . 2.5 Diskuze: specializovan´a vs. obecn´a distribuce . . . . . . . . . . . . . . . 2.5.1 V´ yhody z pohledu administr´atora . . . . . . . . . . . . . . . . . 2.5.2 Nev´ yhody z pohled administr´atora . . . . . . . . . . . . . . . . . 2.6 Volba distribuce operaˇcn´ıho syst´emu . . . . . . . . . . . . . . . . . . . . 2.6.1 F´aze prvn´ı: Gentoo Linux . . . . . . . . . . . . . . . . . . . . . . 2.6.2 F´aze druh´a: Debian GNU/Linux . . . . . . . . . . . . . . . . . . 2.6.3 Instalace operaˇcn´ıho syst´emu . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
6 6 7 7 8 8 9 9 9 10 10 11 11
3 V´ ybˇ er a nastaven´ı sluˇ zeb 3.1 PAT - Port Address Translation . . . . . . . . . . . . . . . . . . . . . 3.2 V´ ybˇer vhodn´ ych sluˇzeb . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 SSH server/klient . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Pl´anovaˇc u ´loh Cron . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Syslog, zaznamen´av´an´ı chodu syst´emu . . . . . . . . . . . . . 3.2.4 DNS cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.5 DHCP server . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.6 Transparentn´ı SMTP/POP3/IMAP proxy . . . . . . . . . . . 3.2.7 Antivirov´ y software . . . . . . . . . . . . . . . . . . . . . . . 3.2.8 Antispamov´ y software . . . . . . . . . . . . . . . . . . . . . . 3.2.9 Podpora IPv6 v operaˇcn´ım syst´emu a pˇridˇelov´an´ı IPv6 adres 3.2.10 Web server pro nenad´al´e situace . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
13 13 14 15 16 17 17 18 19 20 20 20 22
4 Autentizace klient˚ u, u ´ˇ ctov´ an´ı provozu a ˇ r´ızen´ı ˇ s´ıˇ rky p´ asma 4.1 Autentizace klient˚ u. . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Skript gen.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ ctov´an´ı provozu . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Uˇ 4.3.1 MRTG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Monitorov´an´ı syst´emov´ ych prostˇredk˚ u . . . . . . . . . . 4.3.3 Monitorov´an´ı provozu uˇzivatel˚ u s´ıtˇe . . . . . . . . . . . ˇ ızen´ı ˇs´ıˇrky p´asma . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 R´
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
24 24 25 25 25 25 26 27
1
. . . . . . .
. . . . . . .
. . . . . . .
4.5
4.4.1 Volby ovlivˇ nuj´ıc´ı ˇs´ıˇrku p´asma . . . . . . . . . . . . . . . . . 4.4.2 Znaˇckov´an´ı paket˚ u . . . . . . . . . . . . . . . . . . . . . . . 4.4.3 Dalˇs´ı metody ˇr´ızen´ı ˇs´ıˇrky p´asma . . . . . . . . . . . . . . . ˇ ızen´ı ˇs´ıˇrky p´asma na dle pouˇzit´eho aplikaˇcn´ıho protokolu . 4.4.4 R´ Vyuˇzit´ı v´ıce WAN spojen´ı – prevence v´ ypadku . . . . . . . . . . . 4.5.1 Parametry modulu bonding.ko . . . . . . . . . . . . . . . . 4.5.2 Praktick´e pouˇzit´ı . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
28 28 29 29 29 30 30
5 Z´ avˇ er
31
A Konfigurace dnscache
33
B Nastaven´ı sniˇ zuj´ıc´ı poˇ cet z´ apis˚ u na m´ edium B.1 Konfiguraˇcn´ı soubor /etc/fstab . . . . . . . . . . . . . . . . . . . . . . . . B.2 Skript /etc/init.d/copytoram . . . . . . . . . . . . . . . . . . . . . . . . . B.3 Skript /etc/init.d/writefromram . . . . . . . . . . . . . . . . . . . . . . .
34 34 34 35
C p3scan - kontrola email˚ u
36
D Popis skriptu gen.sh D.1 Funkce gen iptables rules . . . . . . . . . . . . . . . . . . . . . . . . . . D.2 Funkce gen tc rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.3 Funkce gen dhcp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38 38 38 39
2
Zad´ an´ı PC jako hraniˇ cn´ı smˇ erovaˇ c poskytovatele sluˇ zeb Internetu PC as a Border Router of an Internet Service Provider Vedouc´ı: Rychl´ y Marek, Mgr., UIFS FIT VUT Oponent: Oˇcen´aˇsek Pavel, Ing., UIFS FIT VUT Pˇ rihl´ aˇ sen: Nowak Michal Zad´ an´ı: 1. Seznamte se se strukturou poˇc´ıtaˇcov´e s´ıtˇe vybran´eho ISP a se SW a HW poˇzadavky na hraniˇcn´ı smˇerovaˇc pˇripojuj´ıc´ı s´ıt’ ISP do Internetu. 2. Zvolte vhodnou distribuci GNU/Linux a SW splˇ nuj´ıc´ı poˇzadovan´e funkce. Zvaˇzte omezen´ı dan´a HW smˇerovaˇce a s´ıt´ı ISP a diskutujte zvolen´e prostˇredky. 3. Nastudujte problematiku a navrhnˇete ˇreˇsen´ı pro pˇridˇelov´an´ı a smˇerov´an´ı priv´atn´ıch i veˇrejn´ ych IPv4 adres a pro pˇridˇelov´an´ı IPv6 adres a pˇripojen´ı do IPv6 Internetu pomoc´ı IPv4. 4. Nastudujte problematiku a navrhnˇete ˇreˇsen´ı pro autentizaci klient˚ u, u ´ˇctov´an´ı provozu a ˇr´ızen´ı ˇs´ıˇrky p´asma. 5. Seznamte se s problematikou vyuˇzit´ı v´ıce WAN rozhran´ı pro rozdˇelov´an´ı z´atˇeˇze a prevenci v´ ypadku spojen´ı. Navrhnˇete ˇreˇsen´ı. 6. Realizujte smˇerovaˇc na PC. Implementujte ˇreˇsen´ı z bodu 3 a alespoˇ n ˇc´asteˇcnˇe (napˇr. pro nemˇenn´e parametry) ˇreˇsen´ı z bodu 4. 7. Ovˇeˇrte ˇreˇsen´ı v testovac´ım provozu. Diskutujte v´ ysledky a navrhnˇete moˇzn´a vylepˇsen´ı. Kategorie: Poˇc´ıtaˇcov´e s´ıtˇe Operaˇ cn´ı syst´ em: GNU/Linux Literatura: • Hunt, Craig. Konfigurace a spr´ava s´ıt´ı TCP/IP. Vyd. 1. Computer Press, Praha. 1997. • Bert Hubert. Linux Advanced Routing & Traffic Control HOWTO. [http://lartc.org/howto/] • Leonardo Balliache. Network Traffic Control Network Modeling. [http://www.opalsoft.net/qos/] Koment´ aˇ r: Pr´ace vyˇzaduje kladn´ y vztah k operaˇcn´ımu syst´emu GNU/Linux a z´akladn´ı znalost poˇc´ıtaˇcov´ ych s´ıt´ı. Konzultantem pr´ace bude z´astupce stˇrednˇe velk´eho ISP se s´ıdlem v Rous´ınovˇe (preferuje se elektronick´a komunikace). Po domluvˇe bude studentovi zap˚ ujˇcen HW pro implementaci, vˇcetnˇe vysokorychlostn´ıho pˇripojen´ı v m´ıstˇe p˚ usobnosti ISP (pokud bude potˇreba). Moˇznost odmˇeny v pˇr´ıpadˇe kvalitnˇe odveden´e pr´ace s praktick´ ym uplatnˇen´ım. 3
Licence Licenˇcn´ı smlouva je uloˇzena v archivu Fakulty informaˇcn´ıch technologi´ı Vysok´eho uˇcen´ı technick´eho v Brnˇe.
4
Kapitola 1
´ Uvod Smyslem t´eto bakal´aˇrsk´e pr´ace je vytvoˇrit smˇerovaˇc pro stˇrednˇe velk´eho poskytovatele pˇripojen´ı k internetu (ISP) obˇcansk´e sdruˇzen´ı Rous´ınovsko.net. Smˇerovaˇc souˇcasn´ y nedosahuje v´ ykonu, kter´ y si nar˚ ustaj´ıc´ı poˇcet uˇzivatel˚ u ˇz´ad´a a neobsahuje sluˇzby, kter´e by zajistili uˇzivatel˚ um vˇetˇs´ı bezpeˇc´ı pˇri spojen´ı s internetem. N´avrh smˇerovaˇce byl konzultov´ an se z´astupcem ISP a je vytv´aˇren na z´akladˇe jeho pˇredstav o vylepˇsen´ı t´eto ˇc´asti s´ıt’ov´e infrastruktury s d˚ urazem na dostupnost, minim´aln´ı potˇrebu spr´avy a co nejˇsirˇs´ı uplatnˇen´ı svobodn´eho a otevˇren´eho softwaru. V prvn´ı ˇc´asti pr´ace se zaob´ır´am pˇredevˇs´ım v´ ybˇerem vhodn´e distribuce operaˇcn´ıho syst´emu a hardware, naˇcrt´av´am strukturu s´ıtˇe. Diskutuji zvolenou distribuci a porovn´av´ am jej´ı vhodnost pro pouˇzit´ı na smˇerovaˇci vzhledem k jin´ ym obecn´ ym distribuc´ım a specializovan´ ym distribuc´ım. Jednou ze stˇeˇzejn´ıch ˇc´ast´ı cel´e pr´ace je sekce “Realizace snahy o minim´aln´ı mnoˇzstv´ı z´apis˚ u na m´edium”, ve kter´e se snaˇz´ım nal´ezt teoretick´a i praktick´ a v´ ychodiska pro eliminaci z´apis˚ u na datov´e m´edium, kter´e jsem pro smˇerovaˇc zvolit, a to USB flash disk tvoˇren´ y z logick´ ych obvod˚ u typu NAND. Ve druh´e ˇc´asti popisuji pˇredevˇs´ım zvolen´e sluˇzby. Popisuji vybran´e implementace a porovn´av´am je s jejich moˇzn´ ymi n´ahradami. Nˇekter´a zvolen´a v´ ychodiska m˚ uˇzou b´ yt kontroverzn´ı a vˇeˇr´ım, ˇze mnoz´ı administr´atoˇri produkˇcn´ıch syst´em˚ u by se mnou nesouhlasili, konkr´etnˇe mluv´ım o sekci “DNS cache”, kde rozeb´ır´am, mimo jin´e, konflikt mezi filosofi´ı djbdns a BIND jakoˇzto nejpouˇz´ıvanˇejˇs´ıch DNS a DNS cache server˚ u. Tˇret´ı ˇc´ast je vˇenov´ana pˇredevˇs´ım autentizaci klient˚ u, ˇr´ızen´ı ˇs´ıˇrky p´asma a u ´ˇctov´ an´ı provozu. Autentizace prob´ıh´a na u ´rovni MAC adres a IP adres, pokud se snaˇz´ı do internetu pˇristoupit nˇekdo, jehoˇz dvojice MAC:IP adresa nen´ı registrov´ana, pˇr´ıstup je mu odepˇren. ´ ctov´an´ı provozu je realizov´ano pomoc´ı MRTG a statistiky uˇzivatel˚ Uˇ u jsou dostupn´e na web ˇ serveru, kter´ y je spuˇstˇen na smˇerovaˇci. S´ıˇrka p´asma je vˇsem klient˚ um poskytov´ana stejn´ a. V posledn´ı kapitole se snaˇz´ım zhodnotit sv˚ uj osobn´ı pˇr´ınos pro realizaci smˇerovaˇce, zhodnotit dalˇs´ı v´ yvoj jak smˇerovaˇce tak i cel´e s´ıtˇe a navrhnout zlepˇsen´ı a shrnout, co mi pr´ace na bakal´aˇrsk´e pr´aci dala.
5
Kapitola 2
Souˇ casn´ y stav s´ıtˇ e, volba hardware a distribuce operaˇ cn´ıho syst´ emu 2.1
Souˇ casn´ y stav s´ıtˇ e
Rous´ınovsko.net je stˇrednˇe velk´ y poskytovatel internetov´eho pˇripojen´ı v Rous´ınovˇe a pˇrilehl´ ych obc´ıch; expanze postupuje tak, jak dovoluj´ı finanˇcn´ı prostˇredky a jin´e promˇenn´e vlivy. V souˇcasn´e dobˇe jsou zahrnuty tyto obce [36] • Rous´ınov, • Habrovany, • Veleˇsovice, • V´ıtkovice, • Kov´alovice a • Komoˇrany. Pokryta jsou pˇredevˇs´ım nejhustˇeji obydlen´a m´ısta a d˚ uleˇzit´e veˇrejn´e prostory, jako napˇr´ıklad n´amˇest´ı. S´ıt’ je zaloˇzena na technologii IEEE 802.11g [35], zn´am´e t´eˇz jako Wi-Fi, neboli bezdr´atov´e pˇripojen´ı. V s´ıti jsou rozm´ıstˇeny pˇr´ıstupov´e body a z´akazn´ık se pˇripojuje k nejbliˇzˇs´ımu z nich, na kter´ y m´a pˇr´ımou viditelnost. Vzd´alenost mezi klientem a pˇr´ıstupov´ ym bodem je mezi 500-800 metr˚ u. Samotn´e spojen´ı je realizov´ano ant´enou spojenou koaxi´aln´ım kabelem s PCI kartou v poˇc´ıtaˇci. Jako pˇr´ıstupov´e body se pouˇz´ıvaj´ı pˇredevˇs´ım: Ovislink WL5460, USRobotics USR5450, Ovislink 1120 a m´ısty i jin´e typy. Pouˇzit´e pˇrep´ınaˇce: Edimax, Ovislink a TP-link. K zabezpeˇcen´ı se pouˇz´ıv´a vˇetˇsinou WEP, ˇctyˇri pˇr´ıstupov´e body podporuj´ı WPA, ale jenom softwarov´e, hardwarov´e neum´ı. Celkov´ y poˇcet uˇzivatel˚ u je 300, ale toto ˇc´ıslo se mˇen´ı s pˇripojov´an´ım dalˇs´ıch obc´ı do s´ıtˇe a reprezentuje sp´ıˇse poˇcet pˇripojen´ ych dom´acnost´ı. Pˇripojen´ı do vnˇejˇs´ıho internetu je realizov´ano spojem na 10 GHz pˇri ˇs´ıˇrce p´asma 10/10 ˇ odezvy ICMP paketu (round trip time) pˇres program ping z uˇzivatelsk´e stanice MBit/s. Cas na smˇerovaˇc poskytovatele pˇripojen´ı je asi 20 ms z toho tˇri ˇctvrtiny tvoˇr´ı latence uvnitˇr s´ıtˇe.
6
Obr´azek 2.1: Sch´ema s´ıtˇe Rous´ınovsko.net
2.2
Hardware
Souˇcasn´ ym smˇerovaˇcem je PC s procesorem AMD Sempron 2600+ (1,4 GHz, 64-bitov´ a ’ ’ varianta), operaˇcn´ı pamˇet 256 MB DDR RAM, s´ıt ov´e karty firmy RealTek. Protoˇze nen´ı u ´plnˇe jednoduch´e implementovat smˇerovaˇc na smˇerovaˇci jiˇz bˇeˇz´ıc´ım, dostal jsem starˇs´ı osobn´ı poˇc´ıtaˇc, kter´ y dˇr´ıve slouˇzil jako hern´ı stanice. Jeho souˇcasn´a konfigurace je n´asleduj´ıc´ı • AMD Athlon XP 3200+ (2,2 GHz, 32-bitov´a varianta), • operaˇcn´ı pamˇet’ 768 MB RAM, • s´ıt’ov´e karty RealTek a nvidia. M´ısto karet RealTek RTL8139 jsem mˇel moˇznost zvolit karty 3COM, ale vybral jsem je, protoˇze ovladaˇce pro RealTek jsou v j´adˇre velmi dlouhou dobu, firma sama k nim dod´ av´ a technickou dokumentaci, pˇr´ıpadnˇe plat´ı v´ yvoj otevˇren´ ych ovladaˇc˚ u a v neposledn´ı ˇradˇe tyto karty/ˇcipy vyr´ab´ı v milionov´ ych n´akladech, a proto vˇeˇr´ım v jejich odladˇenost [45], pˇrestoˇze na jejich adresu jsou i negativn´ı kritiky, kter´e ˇr´ıkaj´ı, ˇze i kdyˇz ˇcipov´a sada 8139 podporuje bus-master DMA, m´a tak ˇspatnˇe udˇelan´e rozhran´ı, ˇze vˇsechen v´ ykonnostn´ı zisk plynouc´ı z DMA je t´ımto ztracen [48].
2.2.1
V´ ybˇ er datov´ eho m´ edia
Jako datov´e m´edium jsem pouˇzil 4 GB USB 2.0 flash disk. Poˇc´ıtaˇc sice disponoval pevn´ ym diskem, ale ten jsem zavrhl, protoˇze obsahuje mechanicky se pohybuj´ıc´ı ˇc´asti a ty nemaj´ı tak dlouhou ˇzivotnost jako napˇr´ıklad flash disky, compact flash karty a jin´a nerotuj´ıc´ı nevolatiln´ı m´edia. Za nev´ yhodou flash disk˚ u povaˇzuji to, ˇze m˚ uˇzou b´ yt snadno zniˇceny mechanick´ ym z´asahem, napˇr´ıklad neopatrnou manipulac´ı vyrv´any z USB portu, pˇr´ıpadnˇe zniˇceny elektrick´ ym proudem, kter´ y by mohl vzniknout u neznaˇckov´eho poˇc´ıtaˇce. Relativn´ı nev´ yhodou je tak´e maxim´aln´ı poˇcet z´apis˚ u do jednoho bloku - tato hodnota se u bˇeˇznˇe prod´avan´ ych model˚ u pohybuje ve stovk´ach tis´ıc˚ u pr˚ upis˚ u [47]. Vˇetˇsinˇe sluˇzeb bˇeˇz´ıc´ıch na pozad´ı by trvalo 7
des´ıtky let, neˇz by blok zniˇcila (v t´eto chv´ıli pˇredpokl´ad´am, ˇze je pouˇzit souborov´ y syst´em, kter´ y nepouˇz´ıv´a rozprostˇren´ y z´apis a z´apis prob´ıh´a do stejn´ ych blok˚ u), avˇsak nˇekter´ ym, jako napˇr´ıklad syslogu, by to mohlo trvat p´ar dn´ı.
2.3
Volba souborov´ eho syst´ emu
Pravdˇepodobnˇe nejvhodnˇejˇs´ım souborov´ ym syst´emem na flash m´edium je JFFS2 [20], kter´e nepouˇz´ıv´a, tak jako starˇs´ı, souborov´e syst´emy na flash disky, pˇrekladovou vrstvu na flash disku k emulaci funkce pevn´eho disku, ale umist’uje souborov´ y syst´em pˇr´ımo na ˇcip. Na rozd´ıl od JFFS, kter´e podporovalo pouze NOR flash pamˇeti, JFFS2 podporuje i NAND flash disky, kter´e maj´ı pouze sekvenˇcn´ı V/V rozhran´ı a nemohou b´ yt mapov´any do pamˇeti [4]. Souborov´ y syst´em podporuje kompresi tˇremi algoritmy: zlib, rubin a rtime a obsahuje Garbage Collector, kter´ y nahrazuje kruhov´ y z´aznam v JFFS. I kdyˇz je JFFS2 dobr´ ym kandid´atem na vyuˇzit´ı ve smˇerovaˇci m´a nˇekter´e nev´ yhody, kter´e rozhodly v jeho neprospˇech. Nev´ yhodou rodiny JFFS souborov´ ych syst´emu je nutnost kontroly vˇsech uzl˚ u v dobˇe pˇripojen´ı souborov´eho syst´emu, coˇz je by byl u 4GB flash disku velk´ y ˇcasov´ y probl´em [21]. Jako v´aˇzn´ y probl´em pˇri nasazen´ı JFFS2 se uk´azala neexistence uˇzivatelsk´e dokumentace, kter´a by popisovala filosofii vytv´aˇren´ı a provozu souborov´eho syst´emu v praxi. Druhou volbou byl syst´em ReiserFS, kter´ y m´am na desktopu, ale ten se uk´azal nepouˇziteln´ y. Z nezn´am´eho d˚ uvodu na nˇem z´apis trval ne´ umˇernˇe dlouhou dobu. Nakonec byl vyuˇzit l´ety provˇeˇren´ y souborov´ y syst´em ext3 s vypnut´ ym noatime [19], kter´e zaruˇc´ı, ˇze se nebudou aktualizovat pˇr´ıstupov´e ˇcasy k uzl˚ um typu i (inode), coˇz zajist´ı rychlejˇs´ı pˇr´ıstup k m´ediu a tak´e jeho delˇs´ı ˇzivotnost.
2.4
Realizace snahy o minim´ aln´ı mnoˇ zstv´ı z´ apis˚ u na m´ edium
Protoˇze jsem se rozhodl pouˇz´ıt “klasick´ y” souborov´ y syst´em a ne takov´ y, kter´ y pro z´apis pouˇz´ıv´a cel´ y prostor m´edia, mus´ım zajistit, aby se na flash disk zapisovalo co nejm´enˇe. D´ıky dobr´e koncepci adres´aˇrov´e struktury v Debianu, jsou soubory, do kter´ ych se zapisuje bez pˇriˇcinˇen´ı uˇzivatele, v adres´aˇri /var. Koˇrenov´ y adres´aˇr je uloˇzen na svazku, kter´ y je pˇripojen pouze pro ˇcten´ı; adres´aˇri /rw/var je pˇripojen jako tmpfs, tedy je alokov´an do pamˇeti (jeho velikost je omezena pouze velikost´ı virtu´aln´ı pamˇeti), do tohoto adres´aˇre je pˇri startu operaˇcn´ıho syst´emu skriptem /etc/init.d/copytoram nakop´ırov´an obsah /var, ten je tak v pamˇeti a pot´e je pˇr´ıkazem mount --bind /rw/var /var pˇripojen pˇres “fyzicky” /var. Vˇsechny z´apisy pot´e prob´ıhaj´ı do pamˇeti. Pˇri ukonˇcov´an´ı bˇehu operaˇcn´ıho syst´emu se spust´ı skript /etc/init.d/writefromram a ten zajist´ı zpˇetn´e pˇrekop´ırov´an´ı zmˇenˇen´ ych soubor˚ u zp´atky na disk a odpoj´ı nepouˇz´ıvan´e svazky v pamˇeti. Tyto jednoduch´e skripty jsou souˇc´ast´ı dodatku B. Tato operace se ukazuje nˇekdy jako ˇcasovˇe n´aroˇcn´a, trv´a aˇz 15 minut, ale nepˇredpokl´ad´ a se, ˇze by restart syst´emu byl pˇr´ıliˇs ˇcast´ y, proto m˚ uˇzeme tuto nedokonalost povaˇzovat za nepˇr´ıliˇs z´avaˇznou. Druhou vlastnost´ı toho syst´emu naˇc´ıt´an´ı cel´ ych adres´aˇrov´ ych struktur do operaˇcn´ı pamˇeti je to, ˇze pˇri v´ ypadku elektrick´eho nap´ajen´ı budou tato data ztracena, a protoˇze bˇeh syst´emu bez restartu, a tedy i bez uloˇzen´ı zmˇenˇen´ ych dat, lze poˇc´ıtat na mˇes´ıce, m˚ uˇzeme po opˇetovn´em nastartov´an´ı poˇc´ıtaˇce dostat ˇc´asteˇcnˇe neaktu´aln´ı syst´em. Pravdˇepodobnˇe t´ım nejd˚ uleˇzitˇejˇs´ım, co by se mohlo ztratit, jsou emaily nedoruˇcen´e uˇzivatel˚ um,
8
nastaven´ı DNS cache a z´aznamy, kter´e jsou sice v adres´aˇri /var/log, ale nedostaly se tam skrz syslog daemona.
2.5
Diskuze: specializovan´ a vs. obecn´ a distribuce
Na st´avaj´ıc´ım smˇerovaˇci je “disketov´a” distribuce floppyFw verze 2.99.4 obsahuj´ıc´ı j´adro 2.4.29, zkompilovan´e gcc-3.4.3, iptables a HTB v3 k ˇr´ızen´ı ˇs´ıˇrky p´asma.
2.5.1
V´ yhody z pohledu administr´ atora
Za v´ yhodou toho ˇreˇsen´ı povaˇzuji snadnost jeho pouˇzit´ı pro danou situaci, tedy vytvoˇren´ı samostatnˇe stoj´ıc´ıho smˇerovaˇce internetov´eho provozu, minim´aln´ı n´aroky na administr´atora a sn´ıˇzen´ı n´arok˚ u na syst´emov´e zdroje, protoˇze distribuce obsahuje pouze software nutn´ y k bˇehu smˇerovaˇce a nic nav´ıc. Dalˇs´ı z´astupci v´ yvojov´eho smˇeru specializovan´ ych distribuc´ı [46] jsou • na operaˇ cn´ım syst´ emu Linux – Shurdix, ClarkConnect, Coyote Linux, Voyage Linux • a na operaˇ cn´ım syst´ emu FreeBSD – m0n0wall (FreeBSD 4.11)
2.5.2
Nev´ yhody z pohled administr´ atora
V´ ykon Podstatnou nev´ yhodou pro rozr˚ ustaj´ıc´ı se s´ıt’ je samotn´a koncepce t´eto mini distribuce. Minimalismus se objevuje na vˇsech vrstv´ach. J´adro verze 2.4 je menˇs´ı neˇz obdobn´e j´adro verze 2.6 [23], syst´emov´e n´astroje jsou kompilov´any oproti oproti uClibc, coˇz jde v duchu distribuce, poskytovat n´astroje s minim´aln´ımi pamˇet’ov´ ymi n´aroky, ale za cenu ztr´aty v´ ykonu [38]. Naproti tomu to, ˇze sestavov´an´ı prob´ıhalo kompil´atorem gcc-3.4.3 bylo uˇz v minulosti povaˇzov´ano za v´ yhodu. Koncem roku 2004 povaˇzovali v´ yvoj´aˇri Linuxov´eho j´adra gcc verze 2.95 lepˇs´ı co do rychlosti kompilace i produkovan´eho k´odu neˇz gcc verze 3.2 a pˇredverze ˇrady 4.0 [1]. Lze ale nam´ıtnout, ˇze modernˇejˇs´ı specializovan´e distribuce obsahuj´ı ˇcasto stejn´ y software jako distribuce obecn´e a nav´ıc nab´ızej´ı onu zm´ınˇenou minimalistiˇcnost. S t´ımto se vyrovn´avaj´ı n´asleduj´ıc´ı dva argumenty o rozˇsiˇritelnosti a bezpeˇcnosti. Rozˇ siˇ ritelnost Takovouto samostatnˇe stoj´ıc´ı (standalone) distribuci, je mnohem tˇeˇzˇs´ı rozˇs´ıˇrit o programov´e vybaven´ı, kter´e nen´ı jej´ı integr´aln´ı souˇc´ast´ı, neˇz distribuci obecnou jako napˇr´ıklad Gentoo, Debian nebo CentOS. Pˇrid´an´ı nov´eho programu, kter´ y tv˚ urci distribuce nepovaˇzovali za potˇrebn´ y, m˚ uˇze b´ yt sloˇzit´e, ˇci pˇr´ımo nemoˇzn´e v pˇr´ıpadˇe distribuc´ı na m´ediu pouze pro ˇcten´ı. Podobn´e probl´emy nast´avaj´ı i u uchov´av´an´ı konfigurace, kter´a se mus´ı ukl´adat na jin´em m´ediu. Bezpeˇ cnost Za velice odv´aˇzn´e, avˇsak z dlouhodob´e perspektivy nerozumn´e povaˇzuji zvolen´ı distribuce, o kterou se star´a jednotlivec, pˇr´ıpadnˇe mal´a skupina v´ yvoj´aˇr˚ u, ve sv´em voln´em ˇcase a 9
zadarmo. Pokud se nalezne bezpeˇcnostn´ı chyba v j´adˇre nebo sluˇzbˇe, je spr´avce syst´emu ˇcasto odk´az´an na sv´eho distributora, aˇz uveˇrejn´ı opravenou verzi. U velk´ ych komunitn´ıch distribuc´ı je reakˇcn´ı doba v ˇr´adu dn˚ u; pokud administr´ator syst´emu nesleduje obdobu bezpeˇcnostn´ı hl´aˇsen´ı CERT ve sv´e distribuci (DSA – Debian Security Advisories [5], GLSA – Gentoo Linux Security Advisories [15], . . . ), dozv´ı se o chybˇe i jej´ı opravˇe ve chv´ıli, kdy se pokus´ı aktualizovat syst´em. A podle m´eho n´azoru nen´ı d˚ uvod takov´eto aktualizace nedˇelat kaˇzd´ y den. Jak by ale administr´ator mˇel vyˇreˇsit ten sam´ y probl´em pˇri pouˇzit´ı mini distribuce, kdyˇz jej´ı spr´avce je doˇcasnˇe nedostupn´ y, pˇr´ıpadnˇe pˇrestal jevit o sv´e d´ılo z´ajem? Odpovˇed’ je nasnadˇe: bude muset pˇrej´ıt na jinou distribuci, nebo ponechat syst´em sv´emu osudu a doufat, ˇze je pro u ´toˇcn´ıka nezaj´ımav´ y. Je zˇrejm´e, ˇze tento pˇr´ıstup je nezodpovˇedn´ y a od˚ uvodniteln´ y snad jen v dom´ac´ım prostˇred´ı. Naˇstˇest´ı u nˇekter´ ych v´ yˇse zm´ınˇen´ ych specializovan´ ych distribuc´ı lze z´ıskat placenou podporu.
2.6
Volba distribuce operaˇ cn´ıho syst´ emu
Z argument˚ u v´ yˇse uveden´ ych vypl´ yv´a, ˇze inklinuji k pouˇzit´ı obecn´e distribuce a k jej´ı n´asledn´e specializaci.
2.6.1
F´ aze prvn´ı: Gentoo Linux
Protoˇze na desktopu m´am nainstalovan´ y Gentoo Linux, coˇz je meta distribuce zaloˇzen´a na kompilov´an´ı aplikac´ı podle dan´ ych pˇredpis˚ u [13], a jsem s jeho spr´avou i v´ ykonem spokojen, byl pro mˇe intuitivn´ı volbou. Od poskytovatele pˇripojen´ı byl do budoucna pˇrisl´ıben´ y poˇc´ıtaˇc, kter´ y v t´e chv´ıli fungoval jako smˇerovaˇc. Protoˇze jsem poˇc´ıtaˇc nemˇel fyzicky, moje pracovn´ı stanice je 32-bitov´a a sl´ıben´ y poˇc´ıtaˇc 64-bitov´ y, a nemˇel jsem zkuˇsenosti s instalac´ı a provozem Gentoo na 64-bitov´e platformnˇe, zkouˇsel jsem pokusn´e instalace vytv´aˇret v emulaˇcn´ım softwaru Qemu s pˇredpoklady, ˇze • instalace ve virtu´aln´ım stroji bude posl´eze pˇrenesena na stroj fyzick´ y, • programy nutn´e pro spr´avu syst´emu, pˇred dod´an´ım PC, budu cross-kompilovat [12]na stanici a n´aslednˇe pˇren´aˇset do virtu´aln´ıho stroje, • v re´aln´em provozu by nemuselo b´ yt moˇzn´e instalovat - tedy kompilovat - programy, proto by k tomu byl pouˇz´ıt jin´ y poˇc´ıtaˇc. Dva z v´ yˇse uveden´ ych pˇredpoklad˚ u se vˇsak nepodaˇrilo naplnit. Ne vˇsechny programy bylo moˇzn´e cross-kompilovat (napˇr´ıklad vim [40]) a do virtu´aln´ıho stroje se musely pˇren´est jejich 32-bitov´e varianty, ˇc´ımˇz se ztr´acel moˇzn´ y v´ ykonnostn´ı zisk vzhledem k 32-bitov´e platformˇe. Samotn´a kompilace ve virtu´aln´ım stroji je velice pomal´a. Dalˇs´ım nenaplnˇen´ ym pˇredpokladem byla existence druh´eho poˇc´ıtaˇce, kter´ y by poskytoval v´ ypoˇcetn´ı v´ ykon nutn´ y pˇri instalaci softwaru. Poˇc´ıtaˇc sice existuje, ale je na nˇem nainstalov´an operaˇcn´ı syst´em neunixov´eho typu a jeho pouˇzit´ı by vˇse d´ale ztˇeˇzovalo. Z komplikac´ı, kter´e se pˇri pokusu o um´ıstˇen´ı Gentoo Linuxu objevily , se zd´a pouˇzit´ı t´eto distribuce nevhodn´e pro pouˇzit´ı na smˇerovaˇci, pro kter´ y nen´ı dostupn´a kompilovac´ı farma, kter´a by odst´ınila explicitn´ı n´aroky distribuce zaloˇzen´e na kompilov´an´ı ze zdrojov´ ych k´od˚ u. Dalˇs´ım d˚ uvodem pro nenasazen´ı Gentoo Linuxu v prostˇred´ı, kde pravdˇepodobnˇe nebude vˇzdy pˇr´ıtomen administr´ator je to, ˇze v t´eto distribuci nen´ı dostupn´a v´ yvojov´e vˇetev, kter´ a 10
by se dala oznaˇcit za stabiln´ı. Stabiln´ı v tom smyslu, ˇze pokud se objev´ı chyba v nainstalovan´em programu, tak se ta chyba oprav´ı ve verzi programu, kter´a je nainstalov´ana. V Gentoo to ˇcasto funguje tak, ˇze pokud chce administr´ator odstranit bezpeˇcnostn´ı chybu, tak mus´ı nainstalovat nejnovˇejˇs´ı verzi programu, coˇz m˚ uˇze pˇrin´est komplikace, co se t´ yˇce zmˇeny konfiguraˇcn´ıch soubor˚ u, nutnosti aktualizov´an´ı i jin´ ych aplikac´ı a podobnˇe. Ale tento d˚ uvod jsem si uvˇedomil aˇz d´avno pot´e, co byl nainstalov´an Debina GNU/Linux.
2.6.2
F´ aze druh´ a: Debian GNU/Linux
Debian Linux je distribuce sloˇzen´a pˇredevˇs´ım ze svobodn´eho a otevˇren´eho softwaru [6] dostupn´a pro ˇsirok´e spektrum platforem. Vyznaˇcuje se stabilitou syst´emu, minim´aln´ımi zmˇenami v pr˚ ubˇehu ˇzivotn´ıho cyklu a ˇsirokou komunitou. Debian se vyskytuje v nˇekolika verz´ıch, v dobˇe psan´ı t´eto pr´ace jsou to tyto [41] • old stable – pˇredchoz´ı stabiln´ı – Debian 3.1 Sarge, • stable – souˇcasn´a stabiln´ı – Debian 4.0 Etch, • testing – testovac´ı/budouc´ı stabiln´ı – Debian Lenny, • unstable – nestabiln´ı – Debian Sid (nestabiln´ı verze se vˇzdy jmenuje Sid). Verze Debianu jsou pojmenov´av´any podle postaviˇcek z filmu Toy Story (ˇcesky: Pˇr´ıbˇeh hraˇcek) [42]. Sid (nestabiln´ı verze) je pojmenov´an podle emocion´alnˇe labiln´ıho chlapce, kter´ y pravidelnˇe niˇcil hraˇcky. Uˇz v dobˇe vyd´an´ı (2005) byl Debianu Sarge povaˇzov´an za zastaral´ y, co se t´ yˇce softwarov´e v´ ybavy, a ˇcasto se nedal nainstalovat na tehdejˇs´ı hardware. D´a se ˇr´ıct, ˇze to Debianu dost uˇskodilo, co se medi´aln´ıho obrazu t´ yˇce, a pˇredevˇs´ım ti, kteˇr´ı pˇreˇsli k Ubuntu, nad n´ım l´amali h˚ ul. Pˇresto byla tato verze stabiln´ı, a to, podle m´eho n´azoru, je d˚ uvod, proˇc si administr´atoˇri Debian vyb´ıraj´ı. Debian s k´odov´ ym oznaˇcen´ım Etch, kter´ y byl pl´anov´ an na prosinec 2006, a vyˇsel se zpoˇzdˇen´ım 8. dubna 2007, tato stigmata pˇrekon´av´a a v nˇem obsaˇzen´ y software je mnohdy aktu´alnˇejˇs´ı neˇz ten v Gentoo Linuxu, a pˇresto je stabiln´ı a jde bez probl´emu nainstalovat i na modern´ı hardware. Debian je dle m´eho n´azoru nejvhodnˇejˇs´ı distribuc´ı k implementaci smˇerovaˇce na operaˇcn´ım syst´emu Linux.
2.6.3
Instalace operaˇ cn´ıho syst´ emu
O instalaci Debianu koluje zvˇest, ˇze se d´a prov´est pomoc´ı pˇeti u ´der˚ u do kl´avesy Enter. V m´em pˇr´ıpadˇe byla o nˇeco sloˇzitˇejˇs´ı. K instalaci jsem se snaˇzil ze zaˇc´atku pouˇz´ıt tzv. netinstall ISO obraz, vedla mˇe k tomu snaha o co nejaktu´alnˇejˇs´ı syst´em hned po instalaci, ale protoˇze m˚ uj poskytovatel pˇripojen´ı k internetu nepˇridˇeluje IP adresu nezn´am´e MAC adrese a softwarov´a zmˇena t´eto adresy se mi v pˇr´ıkazov´em shellu, kter´ y je souˇc´ast´ı instal´atoru Debianu, busyboxu, z nezn´am´eho d˚ uvodu nepodaˇrila, pouˇzil jsem k instalaci prvn´ı CD ze sady instalaˇcn´ıch disk˚ u. Tento ISO obraz obsahuje vˇse, co je tˇreba k z´akladn´ı instalaci syst´emu, kterou jsem zvolil. Po instalaci je syst´em tvoˇren jen t´ım, co je nutn´e pro element´arn´ı funkˇcnost, zbytek bude nainstalov´ an oddˇelenˇe. Po instalaci st´ale jeˇstˇe testovac´ı verze je nutn´e syst´em co nejdˇr´ıve aktualizovat; protoˇze jsem poˇr´ad nemˇel pˇripojen´ı k internetu, “zmˇenil” jsem pomoc´ı programu ip z bal´ıku program˚ u iproute (zn´am´eho tak´e jako iproute2) MAC adresu s´ıt’ov´e karty,
11
ip link set eth0 address 00:0a:e4:53:92:61 poˇz´adal DHCP server o pˇridˇelen´ı IP adresy, /etc/init.d/networking restart a pomoc´ı aptitude update && aptitude -VD dist-upgrade pov´ yˇsil aplikace na opraven´e verze. Nˇekter´e programy byly nahrazeny verzemi novˇejˇs´ımi, protoˇze kdyˇz jsem syst´em instaloval, Debian Etch byl jeˇstˇe testovac´ı verz´ı, takov´e zmˇeny jsou v n´ı pˇr´ıpustn´e.
12
Kapitola 3
V´ ybˇ er a nastaven´ı sluˇ zeb 3.1
PAT - Port Address Translation
Poskytovatel pˇripojen´ı k internetu Rous´ınovsko.net nem´a pˇridˇeleno dostatek veˇrejn´ ych IPv4 adres, proto je k pˇripojen´ı tˇr´ı stovek klientsk´ ych poˇc´ıtaˇc˚ u nutn´e spustit pˇreklad adres a port˚ u (PAT) - ofici´alnˇe oznaˇcovan´ y jako symetrick´ y NAT a v Linuxov´e komunitˇe jako “maˇskar´ada” (MASQUERADE). Pˇreklad bude prov´adˇen technikou Full cone NAT - v textu d´ale naz´ yvanou jako PAT - definovanou v RFC 3489 [33]. Tento dokument definuje ˇctyˇri typy NAT a to: “Full cone NAT”, “restricted cone NAT”, “port restricted cone NAT” a “symmetric NAT”. Toto rozdˇelen´ı je ale diskutabiln´ı. Bylo definov´ano v dobˇe, kdy existovalo nˇekolik implementaci NAT/PAT, kter´e se v r˚ uzn´ ych ohledech liˇsily a tato standardizace nezp˚ usobila, ˇze by se k sobˇe pˇribl´ıˇzily. Druh´ ym d˚ uvodem je, ˇze toto vymezen´ı vzniklo, aˇz pˇri pˇr´ıpravˇe protokolu STUN, kter´ y mˇel umoˇznit zjiˇstˇen´ı existence a typu NATu a firewall˚ u mezi aplikac´ı a internetem. D´a se pˇredpokl´adat, ˇze dodavatel´e s´ıt’ov´eho infrastruktury, kteˇr´ı nepodporuj´ı STUN, ani neparticipuj´ı na IETF toto rozdˇelen´ı NAT˚ u nedodrˇzuj´ı. PAT u ´zce souvis´ı s NAT. NAT - Network Address Translation - definuje statick´e nebo dynamick´e pˇrekl´ad´an´ı vnitˇrn´ıch adres v s´ıti na adresy vnˇejˇs´ı, kter´e maj´ı pˇr´ıstup d´ale do jin´e ˇc´asti s´ıtˇe nebo do internetu. Pro pˇr´ıklad na vnitˇrn´ım rozhran´ı je s´ıt’ 192.168.1.0/24 a na vnˇejˇs´ım 10.10.10.0/8 ; pokud paket smˇeˇruje z vnitˇrn´ı s´ıtˇe ven, zmˇen´ı se zdrojov´a adresa v hlaviˇcce paketu z 192.168.1.X na 10.10.10.Y . Pokud c´ılov´e zaˇr´ızen´ı zachyt´ı tento paket, odpov´ı na adresu 10.10.10.Y, paket pˇrijde na smˇerovaˇc, kter´ y provedl pˇreklad, a ten podle NAT tabulky distribuuje paket d´al do vnitˇrn´ı s´ıtˇe. Nikdo kromˇe smˇerovaˇce, nev´ı, kdo je ve skuteˇcnosti odesilatelem dat – je to moˇzn´e br´at jako jistou formu zt´ıˇzen´ı pr´ace u ´toˇcn´ıkovi, ale v ˇz´adn´em pˇr´ıpadˇe ne jako bezpeˇcnostn´ı (security) z´aleˇzitost, ˇci ochranu pˇred u ´tokem [3]. NAT v naˇsem pˇr´ıpadˇe lze pouˇz´ıt pouze v pˇr´ıpadˇe, ˇze m´ame dostatek veˇrejn´ ych IP adres, na kter´a je tˇreba ty neveˇrejn´e pˇrekl´adat, coˇz nem´ame. PAT funguje stejnˇe jako NAT a nav´ıc pˇrekl´ad´a porty. Poˇc´ıtaˇc z lok´aln´ı s´ıtˇe odes´ıl´a paket, se svou zdrojovou adresou a portem, kter´ y pˇrijde na smˇerovaˇc, ten pˇriˇrad´ı novˇe vznikl´emu spojen´ı ˇc´ıslo portu z mnoˇziny dostupn´ ych port˚ u a vloˇz´ı tento port do pole zdrojov´ a adresa hlaviˇcky paketu. Smˇerovaˇc pot´e odeˇsle paket na v´ ystupn´ı rozhran´ı. Smˇerovaˇc si vytvoˇr´ı z´aznam v pˇrekladov´e tabulce, kter´ y obsahuje • vnitˇrn´ı IP adresu, • vnitˇrn´ı zdrojov´ y port a 13
• vnˇejˇs´ı port. N´ asleduj´ıc´ı pakety ve spojen´ı jsou uˇz pˇriˇrazov´any k tomuto z´aznamu. Vzd´alen´ y poˇc´ıtaˇc vloˇz´ı zdrojovou adresu a port do pol´ı v hlaviˇcce pro c´ılovou adresu a c´ılov´ y port. Smˇerovaˇc v lok´aln´ı s´ıti uˇz zajist´ı pˇreklad hlaviˇcky na u ´daje d´ale identifikuj´ıc´ı cestu ke klientovi. PAT: v´ yhody 1. Dovoluje pˇripojov´an´ı zaˇr´ızen´ı k internetu, i kdyˇz celosvˇetovˇe doch´az´ı k nedostatku voln´ ych veˇrejn´ ych IPv4 adres [43]. 2. Klienti ve vnitˇrn´ı s´ıti jsou jist´ ym zp˚ usobem “chr´anˇeni”, protoˇze jejich IP adresa je skryta. Existuje menˇs´ı nebezpeˇc´ı pˇr´ım´ ych u ´tok˚ u. PAT: nev´ yhody 1. Se zaˇr´ızen´ım za pˇrekladem port˚ u nen´ı moˇzn´e vytvoˇrit pˇr´ım´e spojen´ı, kter´e je nutn´e napˇr´ıklad pro FTP, SIP, H.323. Mus´ı se pouˇz´ıt tzv. connection tracking moduly v j´adˇre [44]. 2. Protokol UDP lze protunelovat za PAT pomoc´ı protokolu STUN (aplikace chownat), ale to nen´ı moˇzn´e u nejˇcastˇeji pouˇz´ıvan´eho symetrick´eho NAT/PAT. 3. PAT poruˇsuje pravidlo, na kter´em je postaven internet: Kaˇzd´e zaˇr´ızen´ı m´a moˇznost se spojit s jak´ ymkoliv jin´ ym zaˇr´ızen´ım. 4. PAT, a NAT obecnˇe, nefunguje s IPSec, protoˇze NAT modifikuje hlaviˇcku, coˇz nejde dohromady s kontrolami prov´adˇen´ ymi IPSecem. Jin´e tunelovac´ı protokoly se pot´ ykaj´ı s podobn´ ym probl´emem. 5. PAT zpomaluje n´astup IPv6, protoˇze z pohledu uˇzivatele internetu (tedy pˇredevˇs´ım webu) jej pˇripojen´ı skrz PAT neomezuje, a na druhou stranu internet nov´e generace nenab´ız´ı nic, co by v IPv4 internetu nebylo. Implementace v Netfilteru iptables -A FORWARD -i ${LAN_IFACE} -s 192.168.0.0/255.255.0.0 -j ACCEPT iptables -A FORWARD -i ${WAN_IFACE} -d 192.168.0.0/255.255.0.0 -j ACCEPT iptables -t nat -A POSTROUTING -o ${WAN_IFACE} -j MASQUERADE Smˇerov´an´ı klient˚ u, kteˇr´ı nejsou souˇc´ast´ı syst´emu PAT, maj´ı veˇrejnou IP adresu, prob´ıh´ a nastaven´ım pravidla ve firewallu, kdy se povol´ı jej´ıch pˇresmˇerov´an´ı a z´aroveˇ n se pˇridaj´ı informace o klientech do smˇerovac´ı tabulky.
3.2
V´ ybˇ er vhodn´ ych sluˇ zeb
Z n´asleduj´ıc´ıch krit´eri´ı lze dovodit, jak´e programy lze naj´ıt v z´akladn´ı instalaci Debianu a obecnˇe v jeho repozit´aˇr´ıch [7]. Programy • maj´ı dobrou historii, co se t´ yˇce bezpeˇcnostn´ıch chyb, 14
• jsou ˇsiroce pouˇz´ıvan´e, • jsou podporovan´e a d´ale vyv´ıjen´e sv´ ymi autory (tzv. upstream) a • svobodn´e dle krit´eri´ı Debianu. Proto napˇr´ıklad sendmail, kter´ y mˇel velice ˇspatnou bezpeˇcnostn´ı historii [2], nen´ı souˇc´ast´ı v´ ychoz´ı instalace, ale je nahrazen programem Exim, kter´ y je ale m´enˇe pouˇz´ıvan´ y. Podobn´a krit´eria, spolu se snadnou a jasnou konfigurovatelnost´ı, jsem si dal i j´a. Snaˇzil jsem se pouˇz´ıvat bal´ıˇcky obsaˇzen´e v samotn´e distribuci, ale v´ yjimeˇcnˇe jsem vybral i ty, kter´e jsem si musel zkompilovat s´am.
3.2.1
SSH server/klient
SSH server je sluˇzba umoˇzn ˇuj´ıc´ı vzd´alen´e pˇripojen´ı a n´asledn´e spuˇstˇen´ı zabezpeˇcen´eho (ˇsifrovan´eho) shellu skrz nezabezpeˇcenou s´ıt’ (napˇr´ıklad internet nebo LAN). Tato sluˇzba nahrazuje nezabezpeˇcenou sluˇzbu rshd. K v´ ybˇeru jsou tˇri ˇreˇsen´ı implementuj´ıc´ı protokol SSH v2 • lsh, • SSH Tectia (zn´am´ y t´eˇz jako “SSH.com”), • OpenSSH. lsh je GNU GPL implementuj´ıc´ı SSH protokol v2, posledn´ı verze - 2.0.3 - vyˇsla 9. kvˇetna 2006. Je tˇeˇzk´e zjistit, zda ho nˇekdo pouˇz´ıv´a na tak exponovan´em m´ıstˇe, jako bezesporu smˇerovaˇc internetov´eho provozu je, v popisku u Debian´ıho bal´ıˇcku s touto serverovou i klientskou aplikac´ı je zd˚ uraznˇeno, ˇze m˚ uˇze m´ıt probl´emy s bezpeˇcnost´ı. Aplikace server/klient SSH Tectia, produkovan´a spoleˇcnost´ı SSH Communications Security, nen´ı svobodn´ ym softwarem a ani jsem o n´ı neuvaˇzoval - uv´ad´ım ji pouze pro u ´plnost. Jednoznaˇcnˇe nejpouˇz´ıvanˇejˇs´ı implementac´ı v1 a v2 protokolu SSH je OpenSSH od komunity kolem operaˇcn´ıho syst´emu OpenBSD. Tato sluˇzba je dostupn´a pro ˇsirokou paletu operaˇcn´ıch syst´emu od Linuxu, pˇres varianty BSD aˇz po ty komerˇcn´ı. V z´akladn´ı konfiguraci nen´ı tˇreba nic mˇenit, pouze pokud bychom chtˇeli podporovat X protokol a napˇr´ıklad dovolovat spouˇstˇen´ı X aplikac´ı na serveru s jejich n´asledn´ ym zobrazen´ım na stranˇe klienta, povol´ıme v konfiguraˇcn´ım souboru /etc/ssh/sshd_config n´asleduj´ıc´ı volbu X11Forwarding yes Klientsk´ ymi aplikacemi jsou v pˇr´ıpadˇe OpenSSH programy ssh, scp a sftp a nahrazuj´ı telnet, rlogin, rcp a jin´e. Pouˇzit´ı ssh k pˇripojen´ı k vzd´alen´emu serveru je bˇeˇznˇejˇs´ı neˇz alternativou putty, zn´amou pˇredevˇs´ım na nesvobodn´ ych operaˇcn´ıch syst´emech. Zmˇenou voleb ForwardX11 yes ForwardX11Trusted yes v konfiguraˇcn´ım souboru /etc/ssh/ssh_config doc´ıl´ıme v´ yˇse zm´ınˇen´eho spouˇstˇen´ı X aplikac´ı na klientsk´e ploˇse.
15
3.2.2
Pl´ anovaˇ cu ´ loh Cron
Cron je daemon, kter´ y spouˇst´ı napl´anovan´e u ´lohy, kter´e z´ısk´av´a pomoc´ı programu crontab, v dan´em ˇcase, napˇr´ıklad: kaˇzdou minutu, hodinu, den, t´ yden, mˇes´ıc nebo v urˇcit´ y ˇcas. Dosahuje toho tak, ˇze se spust´ı kaˇzdou minutu, provede napl´anovan´e u ´lohy a ukonˇc´ı se [14]. Na Debianu jsou k u ´kolov´an´ı cronu pouˇz´ıv´any n´asleduj´ıc´ı soubory a adres´aˇre • uˇzivatelsk´e u ´lohy (soubory) – /var/spool/cron/crontabs/{user1, root} • syst´emov´e u ´lohy (adres´aˇre) – periodick´e – /etc/cron.{daily, weekly, monthly}/ – definovan´e/t´ematick´e – /etc/cron.d/ Dillon’s Cron Nejjednoduˇsˇs´ı z cron˚ u; snaˇz´ı se b´ yt bezpeˇcnou implementac´ı cronu, bez m´alo pouˇz´ıvan´ ych funkc´ı. Napˇr´ıklad nepodporuje definici promˇenn´ ych v tˇele souboru crontab. Vˇsechny u ´lohy jsou spuˇstˇeny ze shellu /bin/sh. Fcron Nejpokroˇcilejˇs´ı ze vˇsech cron˚ u, obsahuje nejv´ıce funkc´ı. Je vhodn´ y pro syst´emy, kter´e nebˇeˇz´ı soustavnˇe, protoˇze serializuje nesplnˇen´e u ´lohy a v nejbliˇzˇs´ım moˇzn´em okamˇziku je spust´ı. Podporuje nastavov´an´ı promˇenn´ ych, kaˇzd´ y uˇzivatel m˚ uˇze m´ıt sv˚ uj vlastn´ı crontab. Pˇr´ıstup ke cronu je ˇr´ızen skrz soubory /etc/cron.allow a /etc/cron.deny. Fcron se nad´ ale vyv´ıj´ı. Anacron Anacron je vhodn´ y pro syst´emy, kter´e nebˇeˇz´ı kontinu´alnˇe. Z´avis´ı na jednom z cron˚ u, kter´ y by mˇel Anacron jednou dennˇe spustit, a ten pak provede “pˇreskoˇcen´e” u ´lohy (kdyˇz byl syst´em vypnut´ y). De facto se nejedn´a o cron. Vixie cron Vixie cron je implementac´ı SysV cronu. Kaˇzd´ y uˇzivatel m´a sv˚ uj crontab, definice promˇenn´ ych je povolena. Na rozd´ıl od ostatn´ıch cron˚ u podporuje SELinux a PAM. Je to “stˇredn´ı cesta” mezi Dcronem a Fcronem. Vybral jsem si ho, protoˇze je na Debianu v z´akladn´ı instalaci, m´am s n´ım zkuˇsenosti z desktopu a vˇetˇsina aplikac´ı, kter´e instaluj´ı sv´e vlastn´ı u ´lohy do crontabu, vyuˇz´ıv´a jeho vlastnost´ı. Pr´ ace s cronem Pl´anov´an´ı uˇzivatelsk´ ych u ´loh provedeme pˇr´ıkazem crontab -e v shellu dan´eho uˇzivatele. Pokud by chtˇel administr´ator implantovat uˇzivateli newman u ´lohu, zad´a v administr´atorsk´em shellu: contab -e -u newman , ˇc´ımˇz se mu otevˇre editor definovan´ y promˇennou EDITOR, nebo VISUAL, pokud takov´e promˇenn´e definovan´e nejsou, pouˇzije se program /usr/bin/editor [17]. N´asleduj´ıc´ı syntaxi lze pouˇz´ıt jak v souboru crontab, tak i souborech v adres´aˇri /etc/cron.d/, kde jsou “t´ematick´e crontaby”. Napˇr´ıklad v souboru mrtg budou pravidla pro spuˇstˇen´ı tvorby grafu pˇres program MRTG. N´asleduj´ı pˇr´ıklady syntaxe: 16
#Minuty 0 30 *
3.2.3
Hodiny 3 16 *
Dny 1 * *
Mˇ es´ ıce 1 1,2 1-12/2
Den v t´ ydnu Pˇ r´ ıkaz * /bin/false * /bin/true * /bin/who am i
Syslog, zaznamen´ av´ an´ı chodu syst´ emu
Syslog je program, kter´ y pˇrepos´ıl´a zpr´avy v IP s´ıti. K tomu obsad´ı port 514/UDP, ˇcte zpr´avy, kter´e mu pˇrich´azej´ı, tˇr´ıd´ı je podle pravidel v konfiguraˇcn´ım souboru a ukl´ad´a do adres´aˇre /var/log/a tak´e odes´ıl´a na logovac´ı server pro pˇr´ıpad, ˇze by smˇerovaˇc byl obsazen u ´toˇcn´ıkem, kter´ y by urˇcitˇe jako jednu z prvn´ıch vˇec´ı v naˇsem syst´emu vypnul logovac´ıho daemona. Jako syslog je ˇcasto oznaˇcov´an jednak server sb´ıraj´ıc´ı zpr´avy a pak tak´e vlastn´ı protokol, kter´ y je k tomuto pos´ıl´an [18]. Nejˇcastˇeji pouˇz´ıvan´ı syslog daemoni • metalog – ˇsiroce konfigurovateln´ y logovac´ı daemon, s´am prov´ad´ı rotaci log˚ u (podobnˇe jako samostatn´ y program logrotate, kter´ y pouˇz´ıvaj´ı ostatn´ı daemoni). Jeho nev´ yhodou je, ˇze neum´ı pos´ılat z´aznamy aktivity na jin´e stroje, ani je neum´ı pˇrij´ımat. • syslog-ng – asi nejˇcastˇeji pouˇz´ıvan´ y logovac´ı daemon, neprov´ad´ı rotaci z´aznam˚ u. Je dobˇre konfigurovateln´ y a um´ı odes´ılat z´aznamy na jin´e stroje, ale tato vlastnost se mi nepovedla nakonfigurovat, a proto jsem pouˇzil program n´asleduj´ıc´ı. • sysklogd – nejstarˇs´ı, pˇresto st´ale vyv´ıjen´ y, z dnes pouˇz´ıvan´ ych logovac´ıch daemon˚ u, neprov´ad´ı rotaci. Umoˇzn ˇuje odes´ıl´an´ı z´aznam˚ u na jin´e stroje. Tento syslog daemon jsem si vybral.
3.2.4
DNS cache
Na smˇerovaˇci jsem povaˇzoval za nutn´e spustit DNS cache, kter´a by sb´ırala dvojice rekurzivn´ı DNS poˇzadavek (dom´enov´e jm´eno) — IP adresa. Od klient˚ u v m´ıstn´ı s´ıti jako napˇr´ıklad od webov´eho prohl´ıˇzeˇce nebo od emailov´eho klienta z´ısk´a dotaz na dom´enov´e jm´eno a od vzd´alen´eho DNS serveru z´ısk´a IP adresu jakoˇzto odpovˇed’. Samotn´a cache urychl´ı pˇr´ıˇst´ı pˇreklad dom´enov´eho jm´ena na IP adresu t´ım, ˇze se neprovede dotaz na vzd´alen´ y DNS server, ale pouˇzij´ı se data z cache. Pro samotnou DNS cache nen´ı nutn´e pouˇz´ıt tak rozs´ahl´ y program jako je bind, staˇc´ı aplikace, kter´a dˇel´a pouze onu cache nebo DNS software, kter´ y je modul´arn´ı. Jako nejvhodnˇejˇs´ı ˇreˇsen´ı povaˇzuji dnscache z bal´ıku djbdns Daniela Bernsteina. Djbdns vznikl z frustrace zp˚ usoben´e bezpeˇcnostn´ımi probl´emy a nerespektov´an´ım standard˚ u ze strany bal´ıku bind, pˇredevˇs´ım verze 4 a 8. Djbdns je naproti tomu, stejnˇe jako vˇsechny programy profesora D. J. Bernsteina, vytv´aˇren s d˚ urazem na bezpeˇcnost (bˇeh v chroot u, oddˇelen´ı cache a DNS serveru, bˇeh pod nerootovsk´ ym uˇzivatelem, . . . ) a tradiˇcn´ı UNIXovou modularitu (kaˇzd´ y u ´kon, kter´ y je nutn´e v r´amci DNS syst´emu udˇelat, ˇreˇs´ı samostatn´ y program, kter´ y je snadno nahraditeln´ y programem jin´ ym) [10]. Nev´ yhodou jeho program˚ u je jejich licence, tedy sp´ıˇse to, ˇze licenci nemaj´ı (pouˇz´ıv´a se pro nˇe oznaˇcen´ı license-free software) [8]. Pamˇet’ovou n´aroˇcnost lze ovlivnit promˇennou CACHESIZE, asi 5 % z cache zab´ır´a tabulka s rozpt´ ylen´ ymi poloˇzkami. Pokud dojde v syst´emu pamˇet’, zahod´ı se nejstarˇs´ı z´aznam a odpovˇed’ na aktu´aln´ı poˇzadavek se zaznamen´a. V´ ychoz´ı nastaven´ı po instalaci je CACHESIZE = 1 MB [9]. 17
Pˇr´ıklad experiment´aln´ıho nastaven´ı na velikost 10 MB, # velikost cache echo 10000000 > /service/dnscache/env/CACHESIZE # maxim´ aln´ ı datov´ y limit echo 10485760 > /service/dnscache/env/DATALIMIT # restart sluˇ zby ‘dnscache’ svc -t /service/dnscache kter´e zbyteˇcnˇe neomezuje d´elku platnosti z´aznam˚ u. Postup konfigurace dnscache viz dodatek A.
3.2.5
DHCP server
Dynamic Host Configuration Protocol je protokol pouˇz´ıvan´ y s´ıt’ov´ ymi zaˇr´ızen´ımi k z´ısk´ an´ı IP adresy a obvykle i jin´ ych u ´daj˚ u pro plnohodnotnou pr´aci v s´ıti. Protokol je typu server/klient. Server je obvykle jeden na segmentu s´ıtˇe a rozdˇeluje IP adresy ze zadan´eho rozsahu. Komunikace serveru a kliente vypad´a takto 1. DHCP DISCOVERY — klient poˇsle na broadcastu UDP paket na adresu 255.255.255.255; t´ım poˇz´ad´a vˇsechny dostupn´e DHCP servery o poskytnut´ı adresy 2. DHCP OFFER — server odpov´ı na unicastu pˇr´ımo klientovi a nab´ıdne mu IP adresu ze sv´eho rozsahu 3. DHCP REQUEST — klient pˇrijme adresu a odpov´ı serveru na broadcastu, aby ostatn´ı DHCP servery vˇedˇely, ˇze jejich nab´ıdka nebyla klientem pˇrijata 4. DHCP ACKNOWLEDGEMENT — server na unicastu klientovi odpov´ı a dod´ a mu dalˇs´ı poˇzadovan´e informace (v´ ychoz´ı br´ana, s´ıt’ov´a maska, DNS servery, . . . ) Implementac´ı DHCP serveru je v Debianu v´ıce, nˇekter´e z nich kr´atce pˇredstav´ım. udhcp Je DHCP server/klient vhodn´ y pˇredevˇs´ım pro vestavˇen´e syst´emy, a pokud je kompilov´ an proti uClibc, serverov´ y i klientsk´ y bin´arn´ı soubor m˚ uˇze m´ıt dohromady jenom 36 kB. Tento bal´ık nen´ı vhodn´ y pro nasazen´ı v s´ıti poskytovatele pˇripojen´ı, protoˇze mu chyb´ı nˇekter´e vlastnosti a pˇredevˇs´ım uˇz nen´ı nˇekolik let vyv´ıjen´ y [39]. dnsmasq Jednoduch´ y DHCP a DNS server vhodn´ y v´ yhradnˇe pro dom´ac´ı pouˇzit´ı. ISC DHCP server/klient ISC DHCP server/klient jsem si zvolil, protoˇze, je aktivnˇe vyv´ıjen´ y a m´a ˇsirok´e moˇznosti konfigurace. Pˇr´ıklad konfigurace DHCP serveru - pˇridˇelov´an´ı IP adres
18
# definice pods´ ıtˇ e subnet 192.168.0.0 netmask 255.255.0.0 { pool { # rozsah pˇ ridˇ elovan´ ych adres range 192.168.1.0 192.168.255.254; # nepˇ ridˇ el´ ı adresu nezn´ am´ emu klientovi deny unknown-clients; # definice klientsk´ eho zaˇ r´ ızen´ ı host user1 { # adresa HW rozhran´ ı (MAC adresa) hardware ethernet 00:11:22:33:44:55; # pˇ ridˇ el´ ı vˇ zdy fixn´ ı IP adresu fixed-address 192.168.1.1; } # host } # pool } # subnet Alternativa: Zeroconf Alternativou k syst´emu DHCP je Zeroconf, coˇz je souhrnn´ y n´azev pro sadu technik, kter´ a automaticky vytvoˇr´ı pouˇzitelnou s´ıt’ na technologii IP bez toho, aby byla nutn´a konfigurace zaˇr´ızen´ı ˇci specializovan´e servery. Zeroconf m˚ uˇze usnadnit netechnick´ ym uˇzivatel˚ um nastaven´ı menˇs´ı s´ıtˇe, kter´a m˚ uˇze obsahovat klientsk´e poˇc´ıtaˇce, tisk´arny a jin´a zaˇr´ızen´ı od kter´ ych se d´a ˇcekat automatick´e nakonfigurov´an´ı. Zeroconf m˚ uˇze zastoupit funkci DHCP a DNS server˚ u [49] [29]. Zeroconf automaticky ˇreˇs´ı tyto probl´emy: v´ ybˇer s´ıt’ov´ ych adres pro zaˇr´ızen´ı, jm´ena ’ konkr´etn´ıch zaˇr´ızen´ı, zjiˇst ov´an´ı dostupn´ ych sluˇzeb v s´ıti. Hlavn´ı implementace: Apple Bonjour, Avahi a implementace Zeroconf ve Windows CE 5.0 . Rozˇs´ıˇren´ı Zeroconfu je pomal´ y a nikdy jsem se s n´ım nesetkal, jedn´ım z d˚ uvod˚ u m˚ uˇze b´ yt autokonfigurace IP adresy v protokolech IPv4 a IPv6 tzv. link-local. Je pravdˇepodobn´e, ˇze pro tak velkou s´ıt’ jako je Rous´ınovsko.net by se ani nehodil.
3.2.6
Transparentn´ı SMTP/POP3/IMAP proxy
Na smˇerovaˇci jsem nasadil transparentn´ı SMTP/POP3/IMAP proxy p3scan. Idea je takov´ a, ˇze porty 25 (SMTP), 110 (POP3) a 143 (IMAP) jsou pˇresmˇerov´any pomoc´ı iptables na port 8110, na kter´em poslouch´a p3scan a kontroluje obsah email˚ u na viry a spam. Pokud je pˇri pˇrij´ım´an´ı emailu jeden z tˇechto neˇz´adouc´ıch element˚ u nalezen, je uloˇzen do “karant´eny” a adres´at je uvˇedomˇen v tom smyslu, ˇze zpr´ava pro nˇej byla z´avadn´ a, a pokud m´a pochybnosti o spr´avnosti jej´ıho pˇresunu do karant´eny, a tedy nedoruˇcen´ı, m˚ uˇze kontaktovat administr´atora, sdˇelit mu k´od, pod jak´ ym byla uloˇzena, a ten zpr´avu zkontroluje ruˇcnˇe. Je-li pos´ıl´an spam nebo zavirovan´ y email z vnitˇrn´ı s´ıtˇe, je ze strany p3scanu zruˇseno spojen´ı se vzd´alen´ ym SMTP serverem a zpr´ava nedoruˇcena. p3scan umoˇzn ˇuje definovat program nebo skript, kter´emu bude pˇri “pr˚ uchodu” emailu smˇerovaˇcem pˇredloˇzen soubor s emailem. Vytvoˇril jsem skript, kter´ y otestuje zpr´avu antivirov´ ym programem na pˇr´ıtomnost vir˚ u a antispamov´ ym softwarem na pˇr´ıtomnost spamu, 19
a pokud oba dva testy skonˇc´ı negativn´ım v´ ysledkem, je email zhodnocen jako pˇr´ıpustn´ ya pouze v tomto pˇr´ıpadˇe je odesl´an ˇci pˇrijat. Skript je souˇc´ast´ı dodatku C. S programem p3scan byla mal´a pot´ıˇz. V repozit´aˇri Debianu byla pouze star´a verze, kter´a nepodporovala protokol SMTP, proto jsem si st´ahl v´ yvojovou verzi a tu zkompiloval. Pˇrestoˇze je to verze v´ yvojov´a, nenarazil jsem pˇri jej´ım pouˇz´ıv´an´ı na ˇz´adn´e probl´emy.
3.2.7
Antivirov´ y software
Jako antivirov´ y software byl zvolen svobodn´ y Clam AntiVirus, kter´ y je periodicky aktualizov´an sluˇzbou clamav-freshclam. ClamAV jsem nastavil jako server/klient architekturu, jej´ı pouˇzit´ı je doporuˇcov´ano jako v´ ykonnˇejˇs´ı neˇz samostatnˇe stoj´ıc´ı ˇreˇsen´ı. Sluˇzba clamd poslouch´a na portu 3310 a ˇcek´a na pˇr´ıchoz´ı spojen´ı. Program, kter´ y takov´eto spojen´ı obvykle iniciuje, je clamdscan. Ten pˇred´a serveru soubor a ˇcek´a na rozhodnut´ı, zda je email zavirov´an ˇci ne.
Obr´azek 3.1: “Obarven´ y” z´aznam ˇcinnosti sluˇzby aktualizuj´ıc´ı virov´e definice
3.2.8
Antispamov´ y software
Za nejvhodnˇejˇs´ı ˇreˇsen´ı na zjiˇst’ov´an´ı spamu jsem zvolil SpamAssassin. Stejnˇe jako u antivirov´eho ˇreˇsen´ı jsem dal pˇrednost architektuˇre server/klient. Server spamd naslouch´a na portu 783, klientskou aplikac´ı je spamc, kter´ y je na rozd´ıl od programu spamassassin [Perl] naprogramovan´ y v jazyce C. Aby SpamAssassin s co nejvˇetˇs´ı pravdˇepodobnost´ı rozeznal spam (nevyˇz´adan´a poˇsta) a ham (vyˇz´adan´a poˇsta), je tˇreba ho doslova “nauˇcit”, co je spam a co ham. Z webov´eho archivu jsem si st´ahl nˇekolik tis´ıc email˚ u, kter´e jsou povaˇzov´any za spam, a nechal jsem je aplikac´ı sa-learn nauˇcit. To sam´e jsem udˇelal asi se stovkami email˚ u, kter´e m´am ve sv´e osobn´ı schr´ance, a oznaˇcil je za ham.
3.2.9
Podpora IPv6 v operaˇ cn´ım syst´ emu a pˇ ridˇ elov´ an´ı IPv6 adres
Aby se klientsk´a stanice mohla pˇripojit do IPv6 internetu, mus´ı pro tento internet nov´e generace obsahovat podporu. Podpora v r´amci operaˇcn´ıho syst´emu se dˇel´ı na dvˇe ˇc´asti • j´ adro operaˇ cn´ıho syst´ emu – podporu pro IPv6 poskytuje jadern´ y modul ipv6.ko. Nejlepˇs´ı podpora IPv6 je v j´adˇre ˇrady 2.6, v ˇradˇe 2.4 uˇz nejsou pˇrid´av´any nov´e funkce, kter´e by pokr´ yvaly nejnovˇejˇs´ı RFC dokumenty. • uˇ zivatelsk´ e aplikace – Sendmail, Exim, Qmail, BIND, VLC/VLS, Quake, SSH, Apache, Mozilla Firefox, lynx, elinks, Squid, wget, mplayer a dalˇs´ı.
20
Ve vˇsech modern´ıch distribuc´ıch je dnes IPv6 podpora implicitnˇe zapnuta jak v j´adˇre, tak v uˇzivatelsk´ ych aplikac´ıch. Z´aleˇz´ı na dodateˇcn´e konfiguraci jednotliv´ ych sluˇzeb a program˚ u, zda budou pˇripojen´ı skrz internet nov´e generace preferovat a protokol IP verze ˇctvrt´e pouˇzij´ı pouze jako z´aloˇzn´ı moˇznost. Pokud n´aˇs poskytovatel pˇripojen´ı k internetu neposkytuje IPv6 konektivitu, mus´ıme si ji zaˇr´ıdit sv´epomoc´ı skrz tak zvan´eho “Tunnel Brokera”. Tunnel Broker je organizace, kter´ a z´ıskala komerˇcn´ı adresn´ı rozsah a poskytuje ho sv´ ym z´akazn´ık˚ um. Obvykl´ y rozsah, kter´ y je poskytnut z´akazn´ıkovi, je /64 (takzvan´ y prefix a ten n´am dovol´ı pˇripojit 2(128−64) zaˇr´ızen´ı, coˇz je 4 294 967 296 dneˇsn´ıch internet˚ u. Pˇ ridˇ elov´ an´ı IPv6 adres Jsou dostupn´e dvˇe metody automatick´eho pˇridˇelov´an´ı IPv6 adres, bezstavov´e ([30] a [31]) a stavov´e ([32]). 1. Bezstavov´e pˇridˇelov´an´ı IPv6 adres, smˇerovaˇcem, klient˚ um je ˇreˇseno skrz Router Advertisement Daemona radvd, kter´ y je definov´an v RFC 2461. Tento daemon oˇcek´ av´ a router solicitations (ˇz´adost smˇerovaˇce) a odpov´ıd´a pomoc´ı router advertisement (hl´ aˇsen´ı smˇerovaˇce), kter´e, v z´avislosti na nastaven´ı v souboru /etc/radvd.conf , obsahuje prefix s´ıtˇe, MTU linky a dalˇs´ı. Tˇechto nˇekolik m´alo informac´ı staˇc´ı klientovi, aby svou IPv6 adresu tzv. autokonfiguroval. Z MAC adresy klienta 00:11:22:33:44:55 vytvoˇr´ıme adresu ve form´atu EUI-64 tak, ˇze doprostˇred vloˇz´ıme sekvenci FFFE a znegujeme sedm´ y bit zleva. V´ ysledkem budiˇz 02:11:22:FF:FE:33:44:55. Spojen´ım prefixu z´ıskan´eho od Tunnel Brokera Hurricane Electric, 2001:470:1F00:3740::/64 a EUI-64 adresy, z´ısk´ame veˇrejnou IPv6 adresu 2001:470:1f00:3740:211:22ff:fe33:4455/64 , se kterou m˚ uˇzeme pˇristupovat do IPv6 internetu. 2. Stavov´e pˇridˇelov´an´ı adres je ˇreˇseno pˇres DHCPv6. Aˇckoliv protokol IPv6 byl navrˇzen tak, aby pouˇzit´ı DHCP serveru nebylo nutn´e, pˇresto bylo pozdˇeji zahrnuto do tˇr´ı dokument˚ u IETF: RFC ˇc´ıslo 3315, 3633 a 3646. Skrz DHCPv6 mohou b´ yt ˇs´ıˇreny informace, kter´e by se nedaly zjistit z jin´ ych zdroj˚ u – napˇr´ıklad DNS server. Pouˇz´ıvaj´ı se dvˇe implementace DHCPv6 • wide-dhcpv6 – Implementace navazuj´ıc´ı na projekty KAME a WIDE, posledn´ı verze vyˇsla 16. ˇr´ıjna 2006. Projekt se zd´a b´ yt v´ıce ˇci m´enˇe mrtv´ y. • dibbler – Aktivnˇe vyv´ıjen´ y projekt, kter´ y byl pˇred vyd´an´ım verze 0.6 otestov´ an, zda spolupracuje se sedmi r˚ uzn´ ymi, otevˇren´ ymi i uzavˇren´ ymi, platformami (z´ısk´av´an´ı a poskytov´an´ı adres zaˇr´ızen´ım, relay sluˇzby, . . . ). Je implementov´an na GNU/Linuxu a pˇredpokl´ad´a se jeho portace na FreeBSD. Praktick´ e spojen´ı s Tunnel Brokerem Spojen´ı s Tunnel Brokerem a pˇr´ıstup na internet z´ısk´ame takto 1. naˇcteme jadern´ y modul ipv6.ko modprobe ipv6
21
2. vytvoˇr´ıme pojmenovan´ y tunel sixbone mezi veˇrejnou IPv4 adresou smˇerovaˇce (147.229.194.163) a IPv4 adresou Tunnel Brokera (64.71.128.82) ip tunnel add sixbone mode sit remote 64.71.128.82 local 147.229.194.163 ttl 255 3. aktivujeme tunel ip link set sixbone up 4. asociujeme IPv6 adresu z´ıskanou od Hurricane Electric s rozhran´ım sixbone ip addr add 2001:470:1F00:FFFF::1C71/127 dev sixbone 5. vˇsechen IPv6 provoz smˇerujeme skrz rozhran´ı sixbone ip route add ::/0 dev sixbone 6. vˇsechen provoz z adresn´ıho rozsahu 2001:470:1F00:3740::/64 poˇsleme na rozhran´ı eth1, kter´e smˇeˇruje do vnitˇrn´ı s´ıtˇe ip route add 2001:470:1F00:3740::/64 dev eth1 7. pˇr´ıkazem ip -f inet6 addr si m˚ uˇzeme zkontrolovat nastaven´ı rozhran´ı 1: lo:
mtu 16436 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 3: eth0: mtu 1500 qlen 1000 inet6 fe80::20a:e4ff:fe53:9261/64 scope link valid_lft forever preferred_lft forever 4: eth1: mtu 1500 qlen 1000 inet6 fe80::219:e0ff:fe0b:6930/64 scope link valid_lft forever preferred_lft forever 7: sixbone@NONE: mtu 1480 inet6 2001:470:1f00:ffff::1c71/127 scope global valid_lft forever preferred_lft forever inet6 fe80::c0a8:1/64 scope link valid_lft forever preferred_lft forever inet6 fe80::93e5:c2a3/64 scope link valid_lft forever preferred_lft forever
3.2.10
Web server pro nenad´ al´ e situace
Pro pˇr´ıpad, ˇze by smˇerovaˇc ztratil spojen´ı s vnˇejˇs´ım internetem, je nanejv´ yˇs vhodn´e, aby poskytovatel pˇripojen´ı sv´e z´akazn´ıky o tomto stavu uvˇedomil. D´a se pˇredpokl´adat, ˇze uˇzivatel´e v dobˇe v´ ypadku pouˇz´ıvaj´ı pˇredevˇs´ım sluˇzbu WWW, a pokud ne, tˇreba si do t´e doby vymˇen ˇovali zpr´avy pˇres XMPP/Jabber, pokus´ı se v pˇr´ıpadˇe probl´em˚ u na tuto sluˇzbu pˇripojit. Proto staˇc´ı pˇresmˇerovat vˇsechen odchoz´ı provoz smˇeˇruj´ıc´ı na port 80 na webov´ y server poskytovatele pˇripojen´ı, kde bude zpr´ava o nastal´e chybˇe a pˇredpokl´adan´e dobˇe do vyˇreˇsen´ı. Takov´ ymto serverem m˚ uˇze b´ yt i tento smˇerovaˇc. Za WWW/HTTP server jsem zvolil Lighttpd, protoˇze je snadno konfigurovateln´ y a zab´ır´a minimum syst´emov´ ych prostˇredk˚ u. Protoˇze tento server host´ı tak´e u ´ˇctov´an´ı provozu 22
jednotliv´ ych uˇzivatel˚ u, je dostupn´ y pouze s vnitˇrn´ı s´ıtˇe. Kv˚ uli vyˇsˇs´ı bezpeˇcnosti je spuˇstˇen v chrootu a pod nerootovsk´ ym u ´ˇctem. Tento pˇr´ıkaz zajist´ı v´ yˇse zmiˇ novan´e pˇresmˇerov´an´ı provozu na portu 80 iptable -t nat -A PREROUTING -p tcp -i eth1 --destination ! 192.168.0.0/16 --dport 80 -j DNAT --to 192.168.0.1:8080 Web server m˚ uˇze b´ yt pouˇzit potenci´alnˇe i pro jin´e u ´ˇcely, tˇreba kdyˇz uˇzivatel pˇrekroˇc´ı datov´ y limit pˇri stahov´an´ı, m˚ uˇze mu b´ yt na webu zobrazeno, ˇze je odpojen od vnˇejˇs´ıho internetu. Pˇr´ıpadnˇe by provozovatel s´ıtˇe mohl pˇri prvn´ım pˇr´ıstupu webu od pˇridˇeleni IP adresy pˇresmˇerovat z´akazn´ıka na str´anku s aktu´aln´ımi informacemi o s´ıti nebo s reklamami. Pˇredpokl´ad´am, ˇze tuto “vlastnost” by uˇzivatel´e nepˇrijali s nadˇsen´ım, proto jsem se j´ı nezab´ yval jinak, neˇz v u ´vahou v tomto odstavci.
23
Kapitola 4
Autentizace klient˚ u, u ´ˇ ctov´ an´ı provozu a ˇ r´ızen´ı ˇ s´ıˇ rky p´ asma 4.1
Autentizace klient˚ u
Ovˇeˇrov´an´ı klient˚ u je prov´adˇena na dvou u ´rovn´ıch 1. pomoc´ı jadern´eho frameworku netfilter, bˇeˇznˇe asociovan´eho s programem iptables a 2. pomoc´ı nastaven´ı DHCP serveru. Pomoc´ı iptables m˚ uˇzeme “sp´arovat” IP adresu s MAC adresou. Pokud si nˇekdo (staticky) nastav´ı IP adresu na jinou, neˇz je registrov´ana na smˇerovaˇci, a bude cht´ıt pˇristoupit do internetu, bude j´ım poslan´ y paket zahozen bez upozornˇen´ı. Abych toto nemusel dˇelat ruˇcnˇe vytvoˇril jsem si k tomu shellov´ y skript gen.sh. Uk´azky viz dodatek D, kter´ y pomoc´ı pˇrednastaven´ ych promˇenn´ ych zajist´ı vygenerov´an´ı pravidel pro firewall, ˇr´ızen´ı ˇs´ıˇrky p´asma a DHCP server, vzhledem k poˇctu uˇzivatel˚ u. GRP + HOST MAC
- urˇ cuj´ ı IP adresu (jsou z´ avisl´ e na poˇ ctu klient˚ u v s´ ıti) - MAC adresa klienta
iptables -A FORWARD -s 192.168.${GRP}.${HOST} -m mac --mac-source ! ${MAC} -j DROP Logika pˇr´ıkazu je takov´ato: “Pokud se paket snaˇz´ı j´ıt skrz smˇerovaˇc do internetu a jeho IP adresa je 192.168.1.1 a MAC adresa nen´ı 00:11:22:33:44:55, zahod’ paket bez upozornˇen´ı.” Druhou “lini´ı obrany” je pˇridˇelov´an´ı IP adres DHCP serverem jenom tˇem klient˚ um, kteˇr´ı jsou definov´ani v konfiguraˇcn´ım souboru /etc/dhcp/dhcpd.conf range 192.168.1.0 192.168.255.254; deny unknown-clients; host user1 { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.1.1; } Ostatn´ım klient˚ um nebude IP adresa prop˚ ujˇcena d´ıky volbˇe deny unknown-clients . 24
4.2
Skript gen.sh
Nastaven´ım promˇenn´ ych GARANCE1, MAXIMUM, BURST, BAND DOWN, BAND UP, WAN IFACE a LAN IFACE dod´ame skriptu “pˇredstavu” o naˇs´ı s´ıti pˇredevˇs´ım co se t´ yˇce rozhran´ı smˇerem do internetu a do vnitˇrn´ı s´ıtˇe a tak´e o tom, jakou propustnost budou m´ıt jednotliv´ı uˇzivatel´e k dispozici. Poˇcet uˇzivatel˚ u obsahuje promˇenn´a USERS, kter´a je naplnˇena pˇr´ıkazem wc -l mac.list | awk ’ print $1 ’. V souboru mac.list jsou uloˇzeny MAC adresy uˇzivatel˚ u s´ıtˇe, jedna na ˇr´adek. Skript obsahuje tˇri funkce. Popis v dodatku D nen´ı u ´pln´ y, pro ucelen´e informace viz skript samotn´ y v adres´aˇri /root/ibp/scripts/ na odevzdan´em datov´em m´ediu.
´ ctov´ Uˇ an´ı provozu
4.3
Aby bylo moˇzn´e zjistit, kolik dat uˇzivatel´e stahuj´ı z internetu, a t´ım pˇr´ıpadnˇe poruˇsuj´ı pravidla s´ıtˇe, je na smˇerovaˇci zavedeno u ´ˇctov´an´ı provozu jednotliv´ ym uˇzivatel˚ um. Ke kaˇzd´e klientsk´e IP adrese je je pˇriˇrazeno speci´aln´ı pravidlo ve firewallu netfilter iptables -I FORWARD --destination 192.168.1.1 -j ACCEPT kter´e zajist´ı, ˇze kaˇzd´ y paket, kter´ y pˇrijde klientovi s IP adresou 192.168.1.1, bude zapoˇc´ıt´an. Pot´e si m˚ uˇzeme pˇr´ıkazem iptables -L FORWARD -v -n -Z zjistit, kolik bajt˚ u jiˇz ke klientovi pˇriˇslo. Tento u ´daj je potˇrebn´ y pro n´astroj MRTG, kter´ y si ho kaˇzd´ ych pˇet minut pˇreˇcte a podle nˇej dopln´ı u ´daje do grafu.
4.3.1
MRTG
MRTG je software pro monitorov´an´ı zat´ıˇzen´ı s´ıt’ov´ ych linek pomoc´ı vygenerovan´ ych graf˚ u. MRTG je napsan´ y v Perlu a tak´e d´ıky tomu je multiplatformn´ı, funguje na Linuxu, variant´ach BSD, Novel Netware a jin´ ych; ˇs´ıˇren´ y je pod GNU GPL 2 [27]. P˚ uvodnˇe byl vytvoˇren k monitorov´an´ı smˇerovaˇc˚ u, ale ˇcasem se vyvinul k obecn´emu monitorov´an´ı syst´emu skrz SNMP. MRTG pos´ıl´a zaˇr´ızen´ı pomoc´ı SNMP poˇzadavek s dvˇema identifik´atory objekt˚ u (OID). Zaˇr´ızen´ı, kter´e mus´ı podporovat SNMP, obsahuje management information base (MIB), ve kter´em dohled´a specifikovan´e identifik´atory (OID) a vr´at´ı data. MRTG si pot´e zaznamen´ a data do logu (z´aznamu) na klientovi a spoleˇcnˇe s uˇz dˇr´ıve sesb´ıran´ ymi u ´daji vytvoˇr´ı HTML soubor a vygeneruje grafy vztahuj´ıc´ı se k dan´emu zaˇr´ızen´ı. Protoˇze smˇerovaˇc de facto poskytuje informace s´am sobˇe, je z´akladn´ı podm´ınkou, aby na smˇerovaˇci bˇeˇzel SNMP daemon, kter´ y bude poskytovat informace a data klientovi v naˇsem pˇr´ıpadˇe MRTG.
4.3.2
Monitorov´ an´ı syst´ emov´ ych prostˇ redk˚ u
Pomoc´ı MRTG se d´a nejen sledovat mnoˇzstv´ı pˇrenesen´ ych dat, ale tak´e jak´ekoliv jin´e u ´daje dosaˇziteln´e pˇres SNMP v MIB. N´asleduje komentovan´ y pˇr´ıklad • WorkDir: /var/www/mrtg Nastav´ı pracovn´ı adres´aˇr, do nˇej bude generovat v´ ysledky (datab´aze, grafy)
25
Obr´azek 4.1: Vyuˇzit´ı operaˇcn´ı pamˇeti • LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt Naˇcten´ı MIB datab´aze • Target[router01.cpu]:ssCpuRawUser.0&ssCpuRawUser.0:publicrouter01+ ssCpuRawSystem.0&ssCpuRawSystem.0:publicrouter01+ ssCpuRawNice.0&ssCpuRawNice.0:publicrouter01 ˇ ezec urˇcuj´ıc´ı, kter´a data budou z datab´aze vyb´ır´ana. Retˇ • RouterUptime[router01.cpu]: public@router01 Na smˇerovaˇci router01 zjist´ı, kolik ˇcasu uplynulo od posledn´ıho spuˇstˇen´ı. • MaxBytes[router01.cpu]: 100 Maxim´aln´ı hodnota na stupnici, vˇse, co je vˇetˇs´ı, je zahozeno jako chybn´a data. Dalˇs´ı poloˇzky v konfiguraˇcn´ım souboru jsou v´ıce m´enˇe nepovinn´e a zlepˇsuj´ı ˇcitelnost a orientaci ve v´ ysledn´e str´ance i grafech.
4.3.3
Monitorov´ an´ı provozu uˇ zivatel˚ u s´ıtˇ e
Vytvoˇ ren´ı nov´ eho kontrolovan´ eho uˇ zivatele Skript mkusertraffic.sh pˇrid´a uˇzivatele se zadanou IP adresou do seznamu kontrolovan´ ych uˇzivatel˚ u tak, ˇze vytvoˇr´ı soubor s konfigurac´ı pro MRTG, ne nepodobn´ y t´e v´ yˇse uveden´e.
Obr´azek 4.2: “Vyuˇzit´ı” ˇs´ıˇrky p´asma klientem
26
Z´ısk´ an´ı u ´ daj˚ u o pˇ renesen´ ych datech Pomoc´ı skriptu getusertraffic.sh vr´at´ı poˇcet pˇrenesen´ ych dat smˇerem k uˇzivateli s danou IP v Bytech. Vygenerov´ an´ı graf˚ u uˇ zivateli Skript runusertraffic.sh zjist´ı IP adresy vˇsech kontrolovan´ ych uˇzivatel˚ u a spust´ı na jejich konfiguraˇcn´ıch souborech MRTG. Po skonˇcen´ı tohoto skriptu jsou vˇsechny grafy pro uˇzivatele vygenerov´any a ˇretˇezec FORWARD, ze kter´eho jsou br´ana data, vynulov´an. Automatizace cronem Pomoc´ı cron daemonu m˚ uˇzeme periodicky napl´anovat u ´lohy, kter´a zajist´ı automatick´e aktualizov´an´ı graf˚ u. Pravidlem */5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg/cpu.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg/cpu.cfg >> /var/log/mrtg/mrtg.log 2>&1; fi automatizujeme sb´ır´an´ı dat o vyt´ıˇzen´ı procesoru a pravidlem */5 * * * * root /etc/mrtg/runusertraffic.sh zajist´ıme generov´an´ı graf˚ u pro vˇsechny uˇzivatele. Publikace graf˚ u MRTG generuje HTML str´anky a obrazov´e grafy do adres´aˇre /var/www/ , coˇz je tak´e rootovsk´ y adres´aˇr pro server. Pˇr´ıstup k HTTP serveru je omezen na vnitˇrn´ı s´ıt’ z d˚ uvodu priv´atnosti dat.
4.4
ˇ ızen´ı ˇ R´ s´ıˇ rky p´ asma
ˇ adn´a s´ıt’ nem´a neomezen´e prostˇredky, co se t´ Z´ yˇce propustnosti, chce-li uˇzivatel˚ um nab´ıdnout maximum ze sv´e konektivity, mus´ı klient˚ um garantovat minim´aln´ı propustnost, kter´a bude vˇzdy dostupn´a, a maxim´aln´ı propustnost nastavit bl´ızko rychlosti spojen´ı do internetu. Pokud je o ˇs´ıˇrku p´asma vˇetˇs´ı z´ajem, neˇz jsme schopni zajistit, pˇrich´az´ı na ˇradu omezov´ an´ı uˇzivatel˚ u. K omezov´an´ı potˇreb uˇzivatel˚ u n´am pom˚ uˇze classfull qdisc ([qdisc = queueing discipline] volnˇe pˇreloˇzeno “ˇrad´ıc´ı discipl´ına obsahuj´ıc´ı tˇr´ıdy”) a konkr´etnˇe jeho HTB v3 (Hierarchical Token Bucket) implementace v j´adˇre novˇejˇs´ım neˇz 2.4.20 [16]. Pˇredevˇs´ım je d˚ uleˇzit´e si uvˇedomit, ˇze nem˚ uˇzeme pˇr´ımo urˇcovat, kolik dat k n´am pˇrich´ az´ı - m˚ uˇzeme to ale ˇc´asteˇcnˇe ovlivnit. V obvykl´em pˇr´ıpadˇe, pokud n´am vzd´alen´ y server pos´ıl´ a data rychleji, neˇz jsme schopni pˇrij´ımat, data jsou po cestˇe k n´am zahozena, nebo nedoruˇcena, a pokud server nen´ı informov´an o doruˇcen´ı, sn´ıˇz´ı rychlost (konkr´etn´ı algoritmus ˇıˇrku p´asma m˚ zmˇeny pos´ıl´an´ı dat je z´avisl´ y na implementaci TCP/IP z´asobn´ıku). S´ uˇzeme ovlivˇ novat pouze smˇerem ven z naˇs´ı s´ıtˇe a tuto kontrolu je nejlepˇs´ı dˇelat a rozhran´ı smˇerem do naˇs´ı s´ıtˇe. Pokud bychom ˇs´ıˇrku p´asma ˇr´ıdili na vnˇejˇs´ım rozhran´ı, kde je napˇr´ıklad 256 MBit 27
ADSL router, tak by k nˇemu mohlo pˇrich´azet v´ıce dat, neˇz je schopen odes´ılat, a v tom pˇr´ıpadˇe by ˇs´ıˇrku p´asma ˇr´ıdil on. Stav se pokus´ıme “umˇele” navodit pomoc´ı n´astroj˚ u k ˇr´ızen´ı ˇs´ıˇrky p´asma [22]. D´ale je nutn´e m´ıt na pamˇeti, ˇze ˇs´ıˇrku p´asma m˚ uˇzeme ˇr´ıdit pouze u protokolu TCP, ne tak uˇz u UDP, kter´e nem´a ˇz´adn´ y potvrzovac´ı mechanismus, a nem˚ uˇze proto “zrychlovat” ani “zpomalovat”. Pravidla jsou j´adru pˇred´av´ana programem tc (Traffic Control) z bal´ıku iproute. Struktura pravidel je hierarchick´a, m´a jeden pojmenovan´ y koˇrenov´ y uzel a proch´az´ı se rekurzivnˇe. Pˇri zad´avan´ı nov´ ych pravidel ˇr´ızen´ı ˇs´ıˇrky p´asma je dobr´e vˇsechny pˇredchoz´ı ˇrad´ıc´ı discipl´ıny vymazat a pot´e vloˇzit novou – typu HTB. Na tento koˇrenov´ y uzel, obvykle znaˇcen´ y 1:0, “povˇes´ıme” dalˇs´ı uzel, kter´ y bude m´ıt ˇs´ıˇrku p´asma stejnou nebo o nˇeco menˇs´ı, neˇz je konektivita do internetu. Pojmenujeme ho 1:1 a povˇes´ıme na nˇeho dalˇs´ı uzly, kter´e uˇz budou reprezentovat ˇs´ıˇrku p´asma rezervovanou pro klienty. tc class add dev eth1 parent 1:0 classid 1:1 htb rate 256kbit tc class add dev eth1 parent 1:1 classid 1:11 htb rate 64kbit ceil 256kbit ˇ adek prvn´ı vytvoˇr´ı zmiˇ ˇ adek druh´ R´ novan´ y koˇrenov´ y uzel. R´ y pˇripoj´ı uzel 1:11 na uzel 1:1 a definuje pro nˇej, ˇze 1. garantovan´a propustnost bude 64 kbit/s a 2. maxim´aln´ı propustnost bude 256 kbit/s (aniˇz by byli omezeni ostatn´ı uˇzivatel´e).
4.4.1
Volby ovlivˇ nuj´ıc´ı ˇ s´ıˇ rku p´ asma
• rate – maxim´aln´ı propustnost, kterou m´a dan´a tˇr´ıda a jej´ı potomci garantovanou • ceil – maxim´aln´ı propustnost, kter´e m˚ uˇze tˇr´ıda dos´ahnout, pokud tˇr´ıda pˇredch˚ udce nˇeco uspoˇrila. Pokud nen´ı tato volba explicitnˇe zad´ana, pouˇzije se m´ısto n´ı implicitnˇe hodnota rate. Coˇz znamen´a ˇze, ˇz´adn´e “v´ yp˚ ujˇcky” u nadˇrazen´e tˇr´ıdy se prov´adˇet nebudou. • burst – mnoˇzstv´ı, o kter´e m˚ uˇze m˚ uˇze b´ yt hodnota ceil pˇrekroˇcena pˇri nevyuˇzit´ı propustnosti z rate. U n´asledn´ıka by mˇela b´ yt alespoˇ n tak velk´a, jako nejvyˇsˇs´ı z tˇechto hodnot u potomk˚ u.
4.4.2
Znaˇ ckov´ an´ı paket˚ u
Aby bylo moˇzn´e pakety propouˇstˇet, ˇci zahazovat, je nutn´e si je poznaˇcit: iptables -t mangle -A POSTROUTING -d 192.168.1.1 -j MARK --set-mark 1 iptables -t mangle -A POSTROUTING -d 192.168.1.2 -j MARK --set-mark 2 iptables -t mangle -A POSTROUTING -d 192.168.1.3 -j MARK --set-mark 3 Pakety jsou oznaˇceny ˇc´ısly (1,3), kaˇzd´ y z nich smˇeˇruje na jinou c´ılovou stanici [34]. N´asleduj´ıc´ımi filtrovac´ımi pravidly jsou pˇriˇrazeny do spr´avn´e “ˇskatulky” tc filter add dev eth1 parent 1:0 protocol ip handle 1 fw flowid 1:11 tc filter add dev eth1 parent 1:0 protocol ip handle 2 fw flowid 1:12 tc filter add dev eth1 parent 1:0 protocol ip handle 3 fw flowid 1:13 a m˚ uˇzou b´ yt ˇr´ızeny, co se t´ yˇce ˇs´ıˇrky p´asma. 28
4.4.3
Dalˇ s´ı metody ˇ r´ızen´ı ˇ s´ıˇ rky p´ asma
Pouˇzit´a implementace ˇr´ızen´ı ˇs´ıˇrky p´asma nen´ı pˇrirozenˇe jedinou, kter´a se d´a pouˇz´ıt. Moˇznou alternativou jsou: • CBQ - Je stejnˇe v´ ykonn´e jako HTB, ale je povaˇzov´ano za obt´ıˇznˇeji nastaviteln´e. • IMQ - D´av´a pravdˇepodobnˇe nejsilnˇejˇs´ı moˇznosti k ˇr´ızen´ı ˇs´ıˇrky p´asma, ale nikdy nebyl, a nikdy nebude, zaˇrazen do hlavn´ı vˇetve linuxov´eho j´adra, protoˇze, podle nˇekter´ ych v´ yvoj´aˇr˚ u j´adra, nen´ı korektnˇe naprogramov´an, a to, co dˇel´a, je teoreticky ˇspatnˇe [11]. Jeho pouˇzit´ı na produkˇcn´ım stroji je diskutabiln´ı a distribuc´ıch, ve kter´ ych k pro nˇeho nen´ı pˇr´ım´a podpora, jako napˇr´ıklad v Debianu, velmi sloˇzit´e. • IFB - Je n´asledn´ık IMQ, aˇz doned´avna k nˇemu nebyla ˇz´adn´a dokumentace, mˇelo by nab´ızet ˇsirˇs´ı moˇznosti neˇz HTB, ale dosud nen´ı pravdˇepodobnˇe tak stabiln´ı [25].
4.4.4
ˇ ızen´ı ˇ R´ s´ıˇ rky p´ asma na dle pouˇ zit´ eho aplikaˇ cn´ıho protokolu
Vˇsechny doposud zm´ınˇen´e zp˚ usoby ˇr´ızen´ı ˇs´ıˇrky p´asma neanalyzovaly, jak´a data pˇres smˇerovaˇc proud´ı. Pˇritom pro provozovatele m˚ uˇze b´ yt v´ yhodn´e omezit uˇzivatele, kteˇr´ı stahuj´ı audiovizu´aln´ı materi´aly pˇres BitTorrent nebo DC++, a d´at uˇsetˇrenou ˇs´ıˇrku p´asma k dispozici uˇzivatel˚ um webu. Jedno z moˇzn´ ych ˇreˇsen´ı je l7-filter, kter´ y se skl´ad´a ze tˇr´ı ˇc´ast´ı: jadern´ ych modul˚ u pro inspekci proch´azej´ıc´ıch dat, z definic rozpozn´avaj´ıc´ıch pouˇzit´ y protokol v datech a z program˚ u v uˇzivatelsk´em prostoru, kter´e spolupracuj´ı s netfilterem (iptables). Druhou moˇznost´ı filtrovat data na aplikaˇcn´ı u ´rovni je IPP2P, ale ta neproch´az´ı aktivn´ı v´ yvojem a nem´a takov´e moˇznosti jako sada l7-filter. Filtry na aplikaˇcn´ı u ´rovni jsem nepouˇzil protoˇze poskytovatel pˇripojen´ı takovou sluˇzbu nem´a z´ajem vyuˇz´ıvat, filtry m˚ uˇzou b´ yt potenci´alnˇe n´aroˇcn´e na v´ ykon a od smˇerovaˇce se pˇredpokl´ad´a pˇredevˇs´ım rychl´e a spolehliv´e doruˇcov´an´ı a odes´ıl´an´ı paket˚ u. Pokud by ovˇsem nˇekdy pouˇzity byly, pak na sp´ıˇse na dedikovan´em stroji, pˇres kter´ y by proch´azela vˇsechen pr˚ uchoz´ı tok dat.
4.5
Vyuˇ zit´ı v´ıce WAN spojen´ı – prevence v´ ypadku
Pokud vypadne linka spojuj´ıc´ı n´as s internetem, naˇse s´ıt’ ztrat´ı spojen´ı s vnˇejˇs´ım svˇetem a budeme muset poˇckat, aˇz n´aˇs poskytovatel pˇripojen´ı chybu odstran´ı. Tomuto stavu se m˚ uˇzeme vyhnout pouˇzit´ım z´aloˇzn´ı linky veden´e u jin´eho poskytovatele. Z´aloˇzn´ı linku m˚ uˇzeme bud’ pouˇz´ıvat spoleˇcnˇe s linkou hlavn´ı, a t´ım zv´ yˇsit ˇs´ıˇrku p´asma anebo ji pouˇz´ıvat jen pˇri v´ ypadku [24]. Pokud chceme pouˇz´ıt jednu linku jako hlavn´ı a druhou jako z´aloˇzn´ı, nab´ız´ı se dva zp˚ usoby ˇreˇsen´ı. Ten prvn´ı je nakonfigurovat fyzick´a zaˇr´ızen´ı pro spojen´ı s internetem a pak nastavit jednotliv´ ym cest´am (route), asociovan´ ym s fyzick´ ym zaˇr´ızen´ım, vhodn´e metriky, a t´ım urˇcit, kter´a z nich bude pouˇzita pˇrednostnˇe pˇri vyb´ır´an´ı cesty protokolem RIP nebo OSPF, ale v t´eto variantˇe by musela b´ yt podpora smˇerovac´ıho protokolu na obou stran´ach spoje [26]. Druhou moˇznost´ı je tzv. bonding, kdy vytvoˇr´ıme logick´e zaˇr´ızen´ı bond0 a na nˇej pˇripoj´ıme z´ avisl´ a fyzick´a zaˇr´ızen´ı - v naˇsem pˇr´ıpadˇe by to byly ethernetov´e s´ıt’ov´e karty ethX. V´ yhodou tohoto spojen´ı je rozmanitost vyuˇzit´ı tohoto spojen´ı v z´avislosti na pouˇzit´em m´odu. Obecnˇe: 29
1. m˚ uˇzeme z´ıskat bud’ vyˇsˇs´ı rychlost (rychlosti zaˇr´ızen´ı se sˇc´ıtaj´ı), nebo 2. z´ıskat syst´em hlavn´ı linka/z´ aloˇzn´ı linka - takto vznikl´ y syst´em by mohl b´ yt vysoce dostupn´y (High Availability), protoˇze lze nastavit kr´atk´e intervaly testov´an´ı dostupnosti linek a pˇr´ıpadnˇe mezi nimi automaticky pˇrepnout. Bonding zaˇr´ızen´ı v Linuxu poskytuje modul bonding.ko.
4.5.1
Parametry modulu bonding.ko
• mode – Specifikuje metodu bondov´an´ı. V´ ychoz´ı je balance-rr (round robin). – balance-rr nebo 0 – Pˇrenos paket˚ u je v sekvenˇcn´ım poˇrad´ı od prvn´ıho z´avisl´eho zaˇr´ızen´ı k posledn´ımu. Tento m´od umoˇzn ˇuje rozdˇelov´an´ı z´atˇeˇze a prevenci proti v´ ypadku spojen´ı. – active-backup nebo 1 – Jenom jedno z´avisl´e zaˇr´ızen´ı je aktivn´ı, ostatn´ı z´avisl´ a zaˇr´ızen´ı jsou aktivov´ana pouze pˇri v´ ypadku aktivn´ıho. – balance-xor nebo 2 – Pˇrenos je z´avisl´ y na zvolen´e hashovac´ı funkci. Jako v´ ychoz´ı je zvolena tato: (zdroj +cil)%nzavislych . Moˇzno zmˇenit pomoc´ı nastaven´ı parametru xmit hash policy. – broadcast nebo 3 – Vys´ıl´a vˇse na vˇsechna z´avisl´a zaˇr´ızen´ı. M´od poskytuje ochranu pˇred v´ ypadkem spojen´ı. – 802.3ad nebo 4 – Definov´ano standardem IEEE 802.3ad. Vytv´aˇr´ı agregaˇcn´ı skupiny, kter´e sd´ılej´ı stejnou rychlost a duplexitu linky - vyuˇz´ıv´a vˇsechna z´avisl´ a zaˇr´ızen´ı ve skupinˇe najednou. Hashovac´ı funkce, kter´a vyb´ır´a agregaˇcn´ı skupinu, je z´avisl´a na obsahu volby xmit hash policy - ne vˇsechny existuj´ıc´ı funkce jsou 802.3ad - kompatibiln´ı. – balance-tlb nebo 5 – Odchoz´ı mnoˇzstv´ı dat je distribuov´ano relativnˇe k rychlosti dan´ ych zaˇr´ızen´ı. Pˇr´ıchoz´ı data pˇrich´azej´ı na aktu´aln´ı z´avisl´e zaˇr´ızen´ı, pokud to selˇze, jin´e z´avisl´e zaˇr´ızen´ı si pˇrivlastn´ı jeho MAC adresu a nahrad´ı ho. – balance-alb nebo 6 – Podobn´e jako balance-tlb, ale obsahuje nav´ıc vyvaˇzov´ an´ı z´atˇeˇze pro IPv4 provoz. • miimon – Specifikuje frekvenci v milisekund´ach, kter´a urˇcuje, jak ˇcasto je linka kontrolov´ana na selh´an´ı. Nula znamen´a “neprov´adˇej kontrolu”, hodnota 100 je obecnˇe povaˇzov´ana za dobrou hodnotu pro vˇetˇsinu linek. • downdelay – Ud´av´a ˇcas, za jak dlouho, v milisekund´ach, po zjiˇstˇen´ı chyby bude linka vypnuta.
4.5.2
Praktick´ e pouˇ zit´ı
modprobe bonding mode=balance-alb miimon=100 modprobe e100 ip addr add 192.168.44.1/24 dev bond0 ip link set dev bond0 up ifenslave bond0 eth0 ifenslave bond0 eth1
30
Kapitola 5
Z´ avˇ er Prac´ı na bakal´aˇrsk´e pr´aci jsem si mˇel moˇznost zjistit poˇzadavky, kter´e maj´ı poskytovatel´e pˇripojen´ı na smˇerovaˇc, z´ıskal jsem n´ahled do struktury s´ıtˇe a dovolila mi spojit m˚ uj vlastn´ı z´ajem o operaˇcn´ı syst´em Linux se znalostmi z oboru s´ıt´ı z´ıskan´ ymi v povinn´ ych, ale pˇredevˇs´ım ve voliteln´ ych pˇredmˇetech na Fakultˇe informaˇcn´ıch technologi´ı. Za zvl´aˇstˇe zaj´ımav´e povaˇzuji to, ˇze jsem jednak mˇel moˇznost vyzkouˇset si a sestavit konkr´etn´ı smˇerovaˇc, a pˇredevˇs´ım to, ˇze smˇerovaˇc bude v re´alu pouˇzit a pr´ace na nˇem odveden´a nebude samo´ uˇceln´ a. D˚ uleˇzit´a je pro mˇe zpˇetn´a vazba, kterou jsem mˇel po dobu tvorby smˇerovaˇce od z´astupce ISP Rous´ınovsko.net a tak´e pˇredpokl´adan´a zpˇetn´a vazba pˇri nasazov´an´ı do ostr´eho provozu od uˇzivatel˚ u s´ıtˇe. Z obecn´eho hlediska lze za nejpˇr´ınosnˇejˇs´ı ˇc´asti odveden´e pr´ace povaˇzovat, odstranˇen´ı pevn´eho disku a t´ım sn´ıˇzen´ı pravdˇepodobnosti odst´avky syst´emu, implementaci transparentn´ı SMTP/POP3/IMAP proxy, kter´a spolupracuje s antivirem a nastaven´ ym antispamov´ ym filtrem, jenˇz pravdˇepodobnˇe napom˚ uˇze poskytovateli pˇripojen´ı k odstranˇen´ı sv´e dom´eny ze seznamu “ˇsiˇritel˚ u spamu”, na kterou se dostal kv˚ uli ˇcasto napaden´ ym klientsk´ ym poˇc´ıtaˇc˚ um, a t´ım i k pln´emu vyuˇzit´ı jeho MX z´aznamu. Za, pˇredevˇs´ım do budoucna, uˇziteˇcnou ˇc´ast povaˇzuji implementaci protokolu IPv6, jako protokolu, kter´ ym se lze pˇripojit do IPv6 internetu. Dalˇs´ı d˚ uleˇzit´e ˇc´asti z hlediska ISP jsou bezpochyby ˇr´ızen´ı ˇs´ıˇrky p´asma a prevence v´ ypadku spojen´ı pouˇzit´ım v´ıce WAN spojen´ı. V pr˚ ubˇehu pr´ace jsem se musel vypoˇr´adat s probl´emy pˇredevˇs´ım pˇri instalaci z´akladn´ıho syst´emu, pops´ano v kapitole 2.6.3, neexistenc´ı aktu´aln´ı verze transparentn´ı proxy p3scan v Debianu, volbou vhodn´e distribuce Linuxu, kapitola 2.6.1 a 2.6.2 a m´ısty i s probl´emy drobnˇejˇs´ıho r´azu. Protoˇze jsem zvolil svobodnou distribuci Linuxu s komunitn´ım v´ yvojem, povaˇzoval jsem za samozˇrejm´e, ˇze sluˇzby, kter´e bude syst´em zajiˇst’ovat, budou realizov´any pomoc´ı softwaru, kter´ y je bud’ 1. svobodn´ y (free), 2. otevˇren´ y (open) nebo 3. bez licence, ale s dostupn´ ymi zdrojov´ ymi k´ody (license-free). Smˇerovaˇc jsem mˇel moˇznost nasadit do testovac´ıho provozu jenom jednou a to v dobˇe, kdy v mˇela s´ıt’ov´a infrastruktura Rous´ınovsko.net probl´emy s kolizn´ımi r´amci, kdy se klienti na smˇerovaˇci objevovali pod stejnou, t´emˇeˇr uˇcebnicovou, MAC adresou 00:11:22:33:44:55. V obˇe testu se podaˇrilo odzkouˇset z´akladn´ı konektivitu do internetu a vnitˇrn´ı s´ıtˇe, NAT a u ´ˇctov´an´ı provozu pˇres MRTG. Pˇri dalˇs´ıch testov´an´ı je nutn´e provˇeˇrit pˇredevˇs´ım ˇr´ızen´ı 31
ˇs´ıˇrky p´asma, transparentn´ı SMTP/POP3/IMAP proxy a blokov´an´ı uˇzivatel˚ u, kteˇr´ı nejsou ˇcleny s´ıtˇe. Do budoucna chci odladit smˇerovaˇc na stejnou u ´roveˇ n spolehlivosti jako smˇerovaˇc st´avaj´ıc´ı a nastavit ho tak, aby splˇ noval poˇzadavky poskytovatele pˇripojen´ı a t´ım naplnil jeden z c´ıl˚ u bakal´aˇrsk´e pr´ace. D´a se pˇredpokl´adat, ˇze do doby obhajoby by smˇerovaˇc mohl b´ yt plnˇe funkˇcn´ı. D´ale lze pˇrem´ yˇslet nad celkov´ ym rozvojem s´ıtˇe jako celku. S´ıt’ Rous´ınovsko.net m´a plochou strukturu bez smˇerovaˇc˚ u, vˇsichni uˇzivatel´e jsou v jedn´e LAN s´ıti. S´ıt’ je podle informac´ı od poskytovatele pˇripojen´ı zaplavena ARP dotazy. Situaci by vyˇreˇsilo pˇrid´an´ı smˇerovaˇc˚ u a pˇrep´ınaˇc˚ u s podporou VLAN (IEEE 802.1Q), coˇz by si ale pravdˇepodobnˇe vyˇz´adalo investice do administrace a nov´eho hardware. Spr´avce s´ıtˇe by uv´ıtal webov´e administraˇcn´ı n´astroje ke spr´avˇe s´ıtˇe, ty ˇreˇs´ı paraleln´ı bakal´aˇrsk´a pr´ace Spr´ ava hraniˇcn´ıho smˇerovaˇce poskytovatele sluˇzeb Internetu. Pouˇzit´e pˇrep´ınaˇce a pˇr´ıstupov´e body jsou ty z levnˇejˇs´ıch typ˚ u, kter´e ˇcasto obsahuj´ı nekvalitnˇe naprogramovan´ y firmware a pˇrehˇr´ıvaj´ı se; vylepˇsen´ı s´ıtˇe by mˇelo zas´ahnout i tuto oblast. Celkovˇe si dovol´ım konstatovat, ˇze navrˇzen´e ˇreˇsen´ı bude obecnˇe vyhovovat poskytovatel˚ um pˇripojen´ı stˇrednˇe velk´eho rozsahu o ˇr´adovˇe stovk´ach klient˚ u. U vˇetˇs´ıch poskytovatel˚ u by bylo radno vymˇenit nˇekter´e hardwarov´e, pˇredevˇs´ım s´ıt’ov´e karty, a softwarov´e, p3scan nen´ı testov´an na vˇetˇs´ı zat´ıˇzen´ı neˇz des´ıtky paraleln´ıch spojen´ı, komponenty.
32
Dodatek A
Konfigurace dnscache 1. Zjist´ıme, zda jsme pˇripojeni k internetu dnsq a www.aol.com 192.203.230.10. 2. Vytvoˇr´ıme uˇzivatele dnscache, pod kter´ ym bude bˇeˇzet cache a dnslog, pod kter´ ym bude bˇeˇzet (samostatn´a) logovac´ı sluˇzba. 3. Spust´ıme pˇr´ıkaz dnscache-conf dnscache dnslog /var/lib/dnscache 192.168.0.1 posledn´ı argument je adresa, ze kter´e bude n´aˇse cache dostupn´a. 4. Sluˇzbˇe svscan, kter´a kontroluje bˇeˇz´ıc´ı procesy v r´amci program˚ u djbdns, sdˇel´ıme, ˇze pˇribyla nov´a sluˇzba ln -s /var/lib/dnscache /service && sleep 5 && svstat /service/dnscache && svstat /service/dnscache/log. 5. Vytvoˇr´ıme soubor, kter´ y urˇc´ı adresy autorizovan´e k pˇr´ıstupu ke cachei touch /var/lib/dnscache/root/ip/192.168. 6. Do konfiguraˇcn´ıho souboru DHCP serveru nebo do souboru /etc/resolv.conf, kter´ y mus´ı b´ yt rezistentn´ı v˚ uˇci vlivu zmˇeny konfigurace z DHCP serveru nameserver 192.168.0.1. 7. Pomoc´ı pˇr´ıkazu dnsip www.fsf.org zjist´ıme, jestli cache funguje.
33
Dodatek B
Nastaven´ı sniˇ zuj´ıc´ı poˇ cet z´ apis˚ u na m´ edium B.1
Konfiguraˇ cn´ı soubor /etc/fstab
# /etc/fstab: static file system information. # # <mount point>
<pass>
# pseudo souborovy system, uzivatelsky dosazitelny proc /proc proc defaults
0
0
1
2
0
1
# zavadeci oddil na externim flash mediu pripojenem na IDE kanal /dev/hdc1 /boot ext3 defaults,noatime,ro # korenovy oddil na USB flash mediu /dev/sda1 / ext3 defaults,noatime,ro
# odkladaci prostor v RAM tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 # drzi obsah adresare s casto menenymi soubory operacni pameti tmpfs /rw/var tmpfs defaults,noatime 0 # CD mechanika 1 /dev/hda /media/cdrom0 # CD mechanika 2 /dev/hdb /media/cdrom1
B.2
0 0
udf,iso9660 user,noauto
0
0
udf,iso9660 user,noauto
0
0
Skript /etc/init.d/copytoram
Inspiraci pro tyto skripty jsem nasel zde [37]. #!/bin/sh case ‘‘$1’’ in start) 34
echo -n ’Kopiruju obsah adresaru urcenych pro zapis do RAM... ’ cp --preserve=all -P -r /var /rw echo -n ’/var’ echo ’hotovo’ echo ’pripojuji tmpfs na /var’ mount --bind /rw/var /var ;; stop) ;; esac
B.3
Skript /etc/init.d/writefromram
#!/bin/sh case ‘‘$1’’ in start) ;; stop) echo ’Ukoncuji programy drzici si soubory ve /var...’ kill ‘lsof | grep /var | awk ’{print $2}’ | uniq‘ sleep 1 kill -9 ‘lsof | grep /var | awk ’{print $2}’ | uniq‘ echo ’hotovo’ sleep 2 echo -n ’Odpojuji adresare typu tmpfs... ’ umount /var mount -o remount,rw / echo ’hotovo’ echo -n ’Kopiruji aktualizovane soubory zpatky na flash disk...’ cp -r -u --preserve=all /rw/var / mount -o remount,ro / sync echo ’hotovo’ ;; esac
35
Dodatek C
p3scan - kontrola email˚ u OUTPUT=‘‘/tmp/p3scan.test’’ THISPGM=$0 FILENAME=$1 MAILFROM=$2 MAILTO=$3 USERNAME=$4 SUBJECT=$5 MAILDATE=$6 SERVERIP=$7 SERVERPORT=$8 CLIENTIP=$9 CLIENTPORT=${10} PROTOCOL=${11} # P3Scan PROGNAME=${12} # P3Scan version VERSION=${13} # Virus info? VDINFO=${14} # hlavicka antiviroveho programu HEADER=${15} echo echo echo echo echo echo echo echo echo echo echo echo
1 $THISPGM > $OUTPUT 2 $FILENAME >> $OUTPUT 3 $MAILFROM >> $OUTPUT 4 $MAILTO >> $OUTPUT 5 $USERNAME >> $OUTPUT 6 $SUBJECT >> $OUTPUT 7 $MAILDATE >> $OUTPUT 8 $SERVERIP >> $OUTPUT 9 $SERVERPORT >> $OUTPUT 10 $CLIENTIP >> $OUTPUT 11 $CLIENTPORT >> $OUTPUT 12 $PROTOCOL >> $OUTPUT 36
echo echo echo echo
13 14 15 16
$PROGNAME $VERSION $VDINFO $HEADER
>> >> >> >>
$OUTPUT $OUTPUT $OUTPUT $OUTPUT
# volame antivirovy program /usr/bin/clamdscan ${FILENAME} CLAMSCAN=$? echo ’ClamAV respoded: ’${CLAMSCAN} >> $OUTPUT if [[ ${CLAMSCAN} == ’0’ ]]; then /usr/bin/spamc -c < ${FILENAME} >> $OUTPUT SPAMSCAN=$? echo ’spamc respoded: ’${SPAMSCAN} >> $OUTPUT fi if [[ ${CLAMSCAN} == ’0’ && ${SPAMSCAN} == ’0’ ]]; then P3SCAN=0; else P3SCAN=1; fi echo ’P3SCAN respoded: ’${P3SCAN} >> $OUTPUT exit ${P3SCAN}
37
Dodatek D
Popis skriptu gen.sh D.1
Funkce gen iptables rules
Obsahuje vytvoˇren´ı NATu, ochranu proti spoofingu a zahazov´an´ı paket˚ u na portu pouˇz´ıvan´em pro sd´ılen´ı ve Windows. iptables iptables iptables iptables
-F -t nat -F -I INPUT 1 -i ${WAN_IFACE} -j ACCEPT -I INPUT 1 -i ${LO} -j ACCEPT
# NAT/PAT iptables -A FORWARD -i ${LAN_IFACE} -s 192.168.0.0/255.255.0.0 -j ACCEPT iptables -A FORWARD -i ${WAN_IFACE} -d 192.168.0.0/255.255.0.0 -j ACCEPT iptables -t nat -A POSTROUTING -o ${WAN_IFACE} -j MASQUERADE # povoleni preposilni paketu skrz smerovac echo 1 > /proc/sys/net/ipv4/ip_forward # zapne ochranu proti spoofingu for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f done # zahazuje vschny pakety, ktere prochazeji skrz smerovac a smeruji # do nebo z portu, ktery je pouzit pro sdileni souboru ve Windows iptables -A FORWARD --dport 445 -j DROP iptables -A FORWARD --sport 445 -j DROP
D.2
Funkce gen tc rules
Vygeneruje z´akladn´ı strukturu pro ˇr´ızen´ı ˇs´ıˇrky p´asma. # smaze qdisk tc qdisc del dev $LAN_IFACE root >/dev/null # vytvori qdisk typu HTB 38
tc qdisc add dev $LAN_IFACE root handle 1:0 htb default 1 # na qdisk ‘‘povesi’’ korenovy uzel urcujici maximalni propustnost linky tc class add dev $LAN_IFACE parent 1:0 classid 1:1 htb rate ${BAND_DOWN}Kbit burst $BURST
D.3
Funkce gen dhcp
Funkce pracuje v cyklu, kdy pro kaˇzd´ y z´aznam v souboru mac.list vygeneruje pravidlo pro • DHCP server do soubory /etc/dhcp3/dhcpd.conf, kter´e zajist´ı, ˇze klient s MAC adresou $MAC dostane vˇzdy stejnou IP adresu: host user${CNT} { hardware ethernet ${MAC} fixed-address 192.168.${GRP}.${HOST} } • ˇ r´ızen´ı ˇ s´ıˇ rky p´ asma # tˇ r´ ıda s garantovanou propustnosti ${RATE} tc class add dev ${LAN_IFACE} parent 1:1 classid 1:1${CNT} htb rate ${RATE}Kbit ceil ${MAXIMUM} burst ${BURST} # prida na konec vetve SFQ qdisc s prepocitavanim kazdych 5 minut tc qdisc add dev ${LAN_IFACE} parent 1:1${CNT} handle 1${CNT}:0 sfq perturb ${PERTURB} # znackovaci pravidlo do firewallu iptables -t mangle -A POSTROUTING -o ${LAN_IFACE} -d 192.168.${GRP}.${HOST} -j MARK --set-mark ${CNT} # filtrovani paketu, pokud ma paket znacku ${CNT} (defacto # poradove cislo), tak je poslan na konecnou vetev 1:1${CNT} tc filter add dev ${LAN_IFACE} parent 1:0 protocol ip handle ${CNT} fw flowid 1:1${CNT} SFQ patˇr´ı do rodiny ˇrad´ıc´ıch discipl´ın, kter´e jsou zaloˇzen´e na fair-queue algoritmu v´ıce informac´ı viz [28]. • sv´ az´ an´ı IP adresy s klientskou MAC adresou iptables -A FORWARD -s 192.168.${GRP}.${HOST} -m mac --mac-source ! ${MAC} -j DROP
39
Literatura [1] WWW str´anky. Abclinuxu: Jadern´e noviny 285. http://www.abclinuxu.cz/clanky/jaderne-noviny/jaderne-noviny-285. ISSN 1214-1267. [2] WWW str´anky. Cert: Sendmail vulnerability notes. http://search.cert.org/query.html?col=vulnotes&qt=sendmail&charset=iso-8859-1. [3] WWW str´anky. Cisco: How nat works. http://www.cisco.com/warp/public/556/nat-cisco.shtml. [4] WWW str´anky. Commsdesign: An introduction to nand flash. http://www.commsdesign.com/showArticle.jhtml?articleID=183700957. [5] WWW str´anky. Debian security advisories. http://www.debian.org/security/#DSAS. [6] WWW str´anky. Debian: Spoleˇcensk´a smlouva. http://www.debian.org/social contract. [7] WWW str´anky. Debian: What do you mean by free software? http://www.debian.org/intro/free. [8] WWW str´anky. The djb way: djb and copyright. http://www.thedjbway.org/license free.html. [9] WWW str´anky. D. j. bernstein: djbdns - how to adjust the cache size. http://cr.yp.to/djbdns/cachesize.html. [10] WWW str´anky. D. j. bernstein: djbdns - security. http://cr.yp.to/djbdns/blurb/security.html. [11] WWW str´anky. Frequently asked questions about imq. http://wiki.nix.hu/cgi-bin/twiki/view/IMQ/ImqFaq. [12] WWW str´anky. Gentoo cross development guide. http://www.gentoo.org/proj/en/base/embedded/cross-development.xml. [13] WWW str´anky. Gentoo linux: About. http://www.gentoo.org/main/en/about.xml. [14] WWW str´anky. Gentoo linux cron guide. http://www.gentoo.org/doc/en/cron-guide.xml.
40
[15] WWW str´anky. Gentoo linux security advisories. http://www.gentoo.org/security/en/glsa/. [16] WWW str´anky. Htb linux queuing discipline manual - user guide. http://luxik.cdi.cz/ devik/qos/htb/manual/userg.htm. [17] WWW str´anky. Indiana university: Unix systems support group - automating tasks with cron services. http://www.uwsg.iu.edu/usail/automation/cron.html. [18] WWW str´anky. Ingate firewall: Definitions of terms. http://www.ingate.com/files/422/fwmanual-en/xa11944.html. [19] WWW str´anky. Internet faq archives: The atime and noatime attribute. http://www.faqs.org/docs/securing/chap6sec73.html. [20] WWW str´anky. Jffs : The journalling flash file system. http://sources.redhat.com/jffs2/jffs2-html/node3.html. [21] WWW str´anky. Jffs : The journalling flash file system#mounting. http://sources.redhat.com/jffs2/jffs2-html/node3.html#SECTION00035000000000000000. [22] WWW str´anky. Linux Advanced Routing & Traffic Control HOWTO. [23] WWW str´anky. Linux-kernel archive: Kernel 2.6 size increase. http://www.uwsg.iu.edu/hypermail/linux/kernel/0307.2/2279.html. [24] WWW str´anky. Linuxnet bonding. http://linux-net.osdl.org/index.php/Bonding. [25] WWW str´anky. Linuxnet ifb. http://linux-net.osdl.org/index.php/IFB. [26] WWW str´anky. man 8 route. http://www.die.net/doc/linux/man/man8/route.8.html. [27] WWW str´anky. Mrtg: About. http://www.mrtg.cz/doc/mrtg.en.html. [28] WWW str´anky. Network Traffic Control Network Modeling. [29] WWW str´anky. O’reilly: Understanding zeroconf and multicast dns. http://www.oreillynet.com/pub/a/wireless/2002/12/20/zeroconf.html. [30] WWW str´anky. Rfc 2461: Ipv6 stateless address autoconfiguration. http://www.ietf.org/rfc/rfc2461.txt. [31] WWW str´anky. Rfc 2462: Ipv6 stateless address autoconfiguration. http://www.ietf.org/rfc/rfc2462.txt. [32] WWW str´anky. Rfc 3315: Dynamic host configuration protocol for ipv6 (dhcpv6). http://tools.ietf.org/html/rfc3315. [33] WWW str´anky. Rfc 3489: Stun - simple traversal of user datagram protocol (udp) through network address translators (nats). http://www.ietf.org/rfc/rfc3489.txt.
41
[34] WWW str´anky. Root: Htb - jemn´ yu ´vod. http://www.root.cz/clanky/htb-jemny-uvod/. [35] WWW str´anky. Rous´ınovsko: Faq. http://www.rousinov.com/new/faq.php. [36] WWW str´anky. Rous´ınovsko: Mapa pokryt´ı. http://www.rousinov.com/new/mapa.php. [37] WWW str´anky. Signal lost: Installing debian unstable on a wrap board with a ro cf disk. https://signal-lost.homeip.net/projects/wrap/. [38] WWW str´anky. uclibc: A c library for embedded linux. http://www.uclibc.org/about.html. [39] WWW str´anky. udhcp server/client package. http://udhcp.busybox.net/. [40] WWW str´anky. Vim cross compile patch. http://linuxfromscratch.org/pipermail/patches/2006-June/003055.html. [41] WWW str´anky. Wikipedia: Debian#debian releases. http://en.wikipedia.org/wiki/Debian#Debian releases. [42] WWW str´anky. Wikipedia: List of toy story characters#etch. http://en.wikipedia.org/wiki/List of Toy Story characters#Etch. [43] WWW str´anky. Wikipedia: Nat#benefits. http://en.wikipedia.org/wiki/Network address translation#Benefits. [44] WWW str´anky. Wikipedia: Nat#drawbacks. http://en.wikipedia.org/wiki/Network address translation#Drawbacks. [45] WWW str´anky. Wikipedia: Realtek#criticism. http://en.wikipedia.org/wiki/Realtek#Criticism. [46] WWW str´anky. Wikipedia: Softwarov´e smˇerovaˇce (informativn´ı seznam). http://en.wikipedia.org/wiki/Router#.22Software.22 routers. [47] WWW str´anky. Wikipedia: Usb flash drive#strengths and weaknesses. http://en.wikipedia.org/wiki/USB flash drive#Strengths and weaknesses. [48] WWW str´anky. Zdrojov´e k´ody freebsd ovladaˇce k ˇcip˚ um ˇrady 8129/8139. http://fxr.watson.org/fxr/source/pci/if rl.c. [49] WWW str´anky. Zero configuration networking (zeroconf). http://www.zeroconf.org/.
42