Bankovní institut vysoká škola Praha
Příspěvek k realizaci internetového serveru Bakalářská práce
Jan Jaroš, DiS.
Červen, 2009
Bankovní institut vysoká škola Praha Katedra informačních technologií a elektronického obchodování
Příspěvek k realizaci internetového serveru Bakalářská práce
Autor:
Jan Jaroš, DiS. Informační technologie, Manaţer projektů
Vedoucí práce:
Praha
Mgr. Miroslav Široký, DiS.
Červen, 2009
Prohlášení: Prohlašuji, ţe jsem bakalářskou práci zpracoval samostatně a s pouţitím uvedené literatury.
V Praze dne 10. června 2009
Jan Jaroš, DiS.
Poděkování: Vřelé díky za pomoc a spolupráci Mgr. Miroslavu Širokému, DiS., panu doc. Ing. Bohumilu Minibergerovi, CSc. za poskytnutí materiálů. Dále pak Bc. Janu Doušovi za konzultaci k zadávání projektů.
Anotace práce: Práce je zaměřena na projektové rozvrţení výběru hardware pro linuxový server, instalaci operačního systému a instalaci sluţeb, které bude server poskytovat. Dále pak jejich konfiguraci, zadání projektu a jeho podrobnou realizaci. Práce obsahuje podrobný návod „step-by-step“ instalace a konfiguraci zabezpečení serveru proti neţádoucímu zneuţití. Dále je obsahem teoretické pojednání o souvisejících tématech. Klíčová slova: Linux, instalace, konfigurace, firewall, zabezpečení
Annotation: This bachelor´s thesis deals with the design layout of choice for Linux server hardware, installing operating system and installation services, which will be provided by the server. Furthermore, the configuration, enter the project and its detailed implementation. It contains detailed instructions “step-by-step” installation and configuration of the server security against unwanted abuse. The thesis also includes theoretical part of related topics. Key words: Linux, installation, configuration, firewall, security
Obsah Obsah ......................................................................................................................... 5 Osnova ....................................................................................................................... 8 Úvod .......................................................................................................................... 8 1
Harmonogram projektu ..................................................................................... 10
2
Výběr komponentů ............................................................................................ 10
3
2.1
Výběr značky ........................................................................................... 10
2.2
Nároky na sestavu.................................................................................... 11
2.3
Výběr serveru Sun Microsystem ............................................................. 11
Výběr distribuce ................................................................................................ 11 3.1
Distribuce ................................................................................................ 12
3.1.1 Seznam ................................................................................................. 12 3.1.2 Kriteria ................................................................................................. 12 3.2
Přehled distribucí ..................................................................................... 13
3.2.1 Debian GNU/Linux .............................................................................. 13 3.2.2 Mandriva .............................................................................................. 13 3.2.3 RedHat ................................................................................................. 14 3.2.4 Fedora................................................................................................... 14 3.2.5 Slackware ............................................................................................. 14 3.2.6 SuSE ..................................................................................................... 14 3.2.7 Gentoo .................................................................................................. 14 3.3
Shrnutí ..................................................................................................... 15
4
Slackware .......................................................................................................... 15
5
Samotná realizace – Instalace ........................................................................... 16 5.1
Bootování ................................................................................................ 16
5.1.1 Rozdělení disku .................................................................................... 16 5.2
Instalace systému ..................................................................................... 17
5.2.1 File systém ........................................................................................... 18 5.2.2 Výběr balíčků ....................................................................................... 19 5.3
Konfigurace po instalaci .......................................................................... 20
5.3.1 Nastavení sítě ....................................................................................... 21 5.4
Základní konfigurace ............................................................................... 22 5
6
Firewall ............................................................................................................. 24 6.1
Firewall – základní popis......................................................................... 24
6.2
Skladba TCP/IP ....................................................................................... 24
6.2.1 TCP/IP (Transmission Control Protocol/Internet Protocol)................. 24 6.2.2 Protokol IP (Internet Protocol) ............................................................. 25 6.3
Druhy firewallu ....................................................................................... 26
6.3.1 Paketové filtry ...................................................................................... 26 6.3.2 Aplikační brány .................................................................................... 26 6.3.3 Stavové paketové filtry ........................................................................ 28 6.3.4 Stavové paketové filtry s kontrolou protokolů a IDS .......................... 29 6.4
Paketový filtr ........................................................................................... 30
6.5
Paketové filtry s IPTABLES ................................................................... 32
6.5.1 IPTABLES ........................................................................................... 32 6.5.2 Nastavení firewallu .............................................................................. 33 6.5.3 Popis uţitého filtru ............................................................................... 34 7
8
Zabezpečení komunikace .................................................................................. 34 7.1
OpenSSL.................................................................................................. 34
7.2
Cetrifikát .................................................................................................. 35
7.3
Klíče ........................................................................................................ 35
Instalace, kompilace a konfigurace sluţeb ........................................................ 36 8.1
Staţení zdrojových kódů ......................................................................... 36
8.1.1 Checkinstall .......................................................................................... 36 8.1.2 OpenSSL 0.9.8k ................................................................................... 37 8.1.3 Apache 2.2.11 ...................................................................................... 38 8.1.4 MySQL 4.1.11...................................................................................... 40 8.1.5 PHP 5.2.9 ............................................................................................. 40 8.1.6 phpMyAdmin ....................................................................................... 42 8.1.7 SMTP ................................................................................................... 43 8.1.8 POP3d .................................................................................................. 44 9
Závěrečné testování ........................................................................................... 46
Závěr ........................................................................................................................ 47 Seznam pouţité literatury a zdrojů .......................................................................... 48 Software ................................................................................................................... 49 6
Přílohy...................................................................................................................... 51
7
Osnova Zadání projektu Harmonogram Hardware Software Samotná realizace Zabezpečení Konfigurace sluţeb Závěrečné testování
Úvod Cílem práce je zrealizovat internetový server poskytující webové a emailové funkce a jeho umístění na veřejné IP adresy do sítě internet. Práce bude spočívat v teoretickém návrhu projektu, jehoţ obsahem je výběr serveru, výběr distribuce operačního systému Linux, jeho základní konfigurace, instalace a spuštění zadaných sluţeb, včetně jejich nastavení. Jelikoţ bude server umístěn na síti internet s veřejným rozsahem, je nutné implementovat zabezpečení proti neţádoucímu vniknutí cizí osoby do systému. Instalované sluţby jsou: Firewall Apache MySQL PHP MyPHPadmin SMTP POP3 Realizací projektu získá firma snadný a rychlý přístup k internetovým sluţbám přímo na páteřní síti instituce, či podniku, kde bude nasazen, čímţ dojde k úsporám nejen času pracovních sil, při realizaci poţadavků, ale i k finančnímu efektu. Pokud firma nebude 8
muset platit zprostředkování sluţeb (server housing , webhosting, email services), muţe ušetřené finanční prostředky investovat do dalších rozvojových projektů společnosti. Získaný „step-by-step“ manuál, lze vyuţít při opakovaném zavádění sluţeb na jiných pobočkách podniku, nebo veřejnou publikací tohoto manuálu, rozšířit obecné informace o moţnosti implementace i širší, nejen technické, veřejnosti. Zajištění řízení kvality bude provedeno podrobným zápisem postupu v této práci, na jejíţ realizaci bude dohlíţeno v pravidelných intervalech 14 dnů. Při těchto kontrolách bude zjišťováno, zda jsou plněny poţadavky na internetový server popsaný v této práci.
9
1 Harmonogram projektu Kompletní doba realizace je odhadnuta na 1 měsíc v případě krizové cesty. 1
Příprava HW pro zajištění sluţby
5 dnů
2
Nákup HW, dodací doba
3
Instalace OS
1 den
4
Instalace SW
1 den
5
Konfigurace sluţeb
2 dny
6
Implementace Firewall
1 den
7
Testování
3 dny
2 týdny
Zobrazení probíhajícího procesu je zobrazeno v obrázku 1.
Obrázek 1 (harmonogram projektu)
2 Výběr komponentů 2.1 Výběr značky Na výběr serverových komponentů při stavbě, musíme klást velké nároky s ohledem na kvalitu vybíraných značek výrobců. Jedná se hlavně o plně kompatibilní 10
hardware, nejlépe s garanční podporou výrobce, jako je HP, IBM, Sun Microsystems. Tito výrobci jsou schopni na svoje komponenty vystavit garanční pokrytí na více neţ 5 let. Někteří výrobci dokonce nabízejí i moţnost rozšířit garanci na dobu delší neţ je morální ţivotnost hardware a to v současné době znamená, určitý počet měsíců či let. Záruku je nutné zvolit podle poţadavku na SLA (service level agreement – garantovaná dostupnost sluţeb). Vyskytne-li se hardware závada, výrobce garantuje, za jak dlouho bude server plně funkční. Proto je v projektu vybrán server značky Sun Microsystems. Server je nabízen se zárukou 3 roky, 4 hodiny odezva od servisního centra a 4 hodiny oprava.
2.2 Nároky na sestavu Server bude muset splňovat kladená kriteria, jako je například disková paměť, operační paměť a výpočetní výkon. Na tyto tři základní atributy bychom se měli zaměřit nejvíce. Zaměříme se na ně proto, ţe to jsou body systému, které nesmíme přehlédnout při budování internetového serveru. Disková paměť nám zaručí vcelku neomezené ukládání dat, jako jsou prezentace, multimediální soubory a podobně. Operační paměť zaručuje rychlé předávání dat uţivateli, popřípadě moţnost udrţení více informací a následně rychlé odbavení poţadavků. S vysokým výpočetním výkonem nebude problém, pokud na náš server bude přistupovat více uţivatelů (řádově stovky) v jednom okamţiku.
2.3 Výběr serveru Sun Microsystem Sun Fire X2200 M2 patří do skupiny entry level server (servery základní úrovně), a je postavený na platformě Intel. Jedná se o dvouprocesorový server v provedení 1U rack, vhodný pro menší a středně velké firmy. S rostoucími nároky jej lze dále rozšiřovat podle poţadavků zákazníka, a to jak co se týče paměti, diskové kapacity i rozšiřujících karet. Technické parametry viz příloha č. 1 – Technické parametry.
3 Výběr distribuce Jádro operačního systému Linux je pouze jedno. K tomu se přidává několik dalších základních systémových komponent a tisíce rozšiřovacích programů ve formě tzv. balíčků. Jednotlivý uţivatelé si mohou zvolit, jak bude distribuce vybavena, jak bude vypadat a z jakých komponentů/balíčků se bude skládat. Prakticky však nikdo nemá čas a ne kaţdý má znalosti sám tyto komponenty/balíčky instalovat postupně do podoby vlastního celku. 11
Zde jsou moţnosti vyuţití jednotlivých ucelených celků od producentů s názvem distribuce. Tito „distributoři“ vytvoří systém instalace, strom komponent a značku, pod kterou uvádějí distribuci na trh.
3.1 Distribuce Distributory můţeme rozdělit do dvou kategorií – komerční firmy a nezávislé, volné projekty. Do první kategorie patří například RedHat a SuSE, do druhé hlavně Debian, který je sám vyvíjen skupinou nadšenců. Komerční firmy většinou mají několik verzí své distribuce. Základní, která je dostupná zdarma na FTP serverech, a několik dalších na desktop, server či pro firemní účely. Za tyto verze si uţ výrobce (distributor) nechává zaplatit. [2]
3.1.1 Seznam V současné době jsou na světě jiţ stovky distribucí. Velmi často jsou vyvíjeny pro účely specifického charakteru, jako jsou domácí počítače typu desktop či notebook, nebo jsou praktického charakteru a vejdou se na flash paměť do USB a mohou fungovat jako síťový router nebo brána firewall. Seznam distribucí lze nalézt na internetové adrese http://old.lwn.net/Distributions/. Jako hlavní distribuce bych jmenoval Red Hat, Mandriva, Debian, SuSE, Gentoo, Fedora a Slackware.
3.1.2 Kriteria Pokud uvaţujeme o výběru distribuce, je nutné nastavit kriteria, která nám určí, kterou distribuci chceme vyuţít k danému projektu. Je velmi důleţité, nezvolit distribuci primárně určenou k vyuţití na počítači desktop pro serverové aplikace a opačně. Níţe uvedené, jsou vlastnosti, kterým dáváme důleţitost a vysokou váhu pro výběr té správné distribuce: Snadnost instalace Autodetekce a podpora hardwaru Snadnost pouţívání Snadnost údrţby Snadnost upgradu Bezpečnost Rychlost vydávání oprav Podpora češtiny 12
Počet softwarových balíčků Dokumentace Podpora [2]
3.2 Přehled distribucí 3.2.1 Debian GNU/Linux Debian GNU/Linux je nejstarší distribuce Linuxu fungující na mnoha platformách od i386 přes alpha, arm, sparc aţ amd64 a powerpc. Je šířen pod licencí Open Source a je zcela zdarma. Podobně jako linuxové jádro i on existuje v několika verzích lišících se stabilitou. Stabilní větev obsahuje časem prověřený software, nicméně obvykle poněkud zastaralý. Vývojová větev je rozumně aktuální a většina lidí volí ji. [2] Absolutní výhodou distribuce Debian je její „balíčkovací“ systém a obrovské mnoţství instalačního softwaru, který je moţno zdarma stahovat pomocí nástroje apt-get. Tento nástroj program nejenom stáhne, ale i nainstaluje. Je velmi vhodný pro nasazení jak na server, tak i na domácí či firemní desktopy, zde se však očekává vyšší znalost systému u uţivatelů a to hlavně proto, ţe systém je bez speciálních úprav, na rozdíl od ostatních distribucí. Debian GNU/Linux je však více neţ jen samotný operační systém. Obsahuje přes 25113 balíčků s (předkompilovanými) programy a dokumentací, připravených pro snadnou instalaci. [3]
3.2.2 Mandriva Mandriva
je
distribuce
vycházející
z distribuce
Mandrake
z Francouzské
společnosti Mandrakesoft, která se spojila s Brazilskou společností Conectiva a Lycoris. Mandriva momentálně spojuje takzvaně ţivé (live) CD a instalační CD v jednom. Jeho snadné pouţívání vede ke snadné a rychlé instalaci na desktopová PC a notebooky. Mandriva obsahuje velké mnoţství konfiguračních utilit a díky tomu můţe i velmi nezkušený uţivatel zvládnout základní konfiguraci a údrţbu systému. Zkušenějším uţivatelům se na této distribuci nelíbí, ţe nástrojů na správu je jiţ tolik, ţe se nepřehledností podobá tato distribuce systému Windows. Starší verze, dle zkušeností, mají problémy se stabilitou systému. 13
3.2.3 RedHat Asi nejznámější a největší distribuce. Kompromis mezi strohostí Debianu a třpytem Mandraku. Pouţívá se na desktopu i serveru. Často tlačí vývoj Linuxu dopředu pouţíváním nových zásadních komponent (glibc, gcc). [2] Tato distribuce přešla v roce 2003 na verzi komerční a to verzí Red Hat 9. Nekomerčně se šíří distribuce Fedora.
3.2.4 Fedora Fedora je volnou verzí distribuce RedHat. První stabilní verze vyšla jako Fedora 9 v roce 2008. Nyní je aktuální verzí Fedora 11. O této distribuci by se dalo říci, ţe je vhodná pro desktopy a malé firemní servery.
3.2.5 Slackware Patří mezi nejstarší distribuce, vhodná hlavně pro zkušené uţivatele. Díky chybějícímu nástroji „balíčků“ v pravém slova smyslu, je systém velmi čistý a jasný, coţ je vlastnost, která vyhovuje především administrátorům internetových serverů. „Balíček“ lze však připravit, kdyţ se do souboru typu .tgz (aplikace zabalena kompresním systémem tar a gz) přidá informace, kam se má archív rozbalit. Pokud se tak učiní, umí Slackware balíček i odinstalovat. Tyto archivy neřeší závislosti, jako je tomu u ostatních distribucí. Proto je určena především na serverovou platformu a zkušenějšímu administrátorovi.
3.2.6 SuSE První komerční distribuce s univerzální podporou hardwaru. Výhodou této distribuce je nástroj Yast2, který usnadňuje konfiguraci a podpora češtiny. Nedostupnost ISO obrazu zdarma, který navíc neobsahuje, v porovnání s volnými verzemi ostatních distribucí, tolik moţností, je velkou nevýhodnou. V případě, ţe se chceme o Linuxu něco dozvědět, a cena není překáţkou, mohu doporučit tuto distribuci především začátečníkům.
3.2.7 Gentoo Linuxová distribuce skládající se pouze z kernelu a kompilačních nástrojů. Administrátor musí veškeré balíčky zkompilovat ze zdrojových kódů. Tato distribuce patří dle mého názoru k jedněm z nejsloţitějších při instalaci, avšak jeho stabilita, díky všem balíčkům kompilovaných na míru, je značná. 14
3.3 Shrnutí V tomto přehledu jsem se snaţil objektivně charakterizovat hlavní distribuce. Za svou praxi, co pracuji s Linuxem, jsem si zvolil distribuci Slackware, nejen pro její volnou dostupnost, ale hlavně pro ovladatelnost.
4 Slackware V první řadě zmíním, proč (ne)instalovat právě Slackware. Jak jiţ bylo zmíněno, distribucí je mnoho a jsou uţivatelsky příjemné, mají grafické instalační rozhraní, různé konfigurační nástroje, coţ ve Slackware není. Navíc jiné distribuce (Red Hat, Mandriva, Debian) mají propracovaný systém balíčků se závislostmi, tj. není moţné nainstalovat program, kterému v systému chybí knihovny, na kterých závisí. Slackware také pouţívá systém balíčků, ten pracuje s archívy .tgz, bohuţel však jiţ neřeší závislosti a administrátor s právy uţivatele root (privilegovaný uţivatel), vţdy musí vědět, co činí, chce-li mít funkční a stabilní operační systém a tím pádem i přístup ke sluţbám, které server nabízí. Co tedy vede k instalaci právě této distribuce, která postrádá tyto funkce? Odpověď
pro
mnoho
administrátorů
zní:
„čistota
systému“,
případně
administrátorův pocit kontroly nad systémem. Ostatní distribuce se snaţí fungovat ve všech moţných konfiguracích automaticky, obsahují však mnoho různých skriptů a programů, které ošetřují nejrůznější moţné situace. Tyto skripty a programy se vykonávají při kaţdé vhodné příleţitosti, jako jsou start systému, spouštění sluţeb a zrovna tak i zastavení systému, a proto toto činnosti mohou být pomalejší a trvat déle, neţ by bylo nutné. Ve Slackwaru je naproti tomu zajištěná základní funkčnost, která pokud moţno neobsahuje některé vymoţenosti a od administrátora se očekává, ţe si dokáţe systém přizpůsobit. Odměnou za jednorázovou úplnou konfiguraci systému je server fungující bez zbytečných balíčků, které nepotřebujeme, přehlednost jednotlivých adresářů a konfiguračních souborů na jednom místě. Distribuce jako Mandriva nebo Fedora jsou určené spíše pro začátečníky a snaţí se jim vyjít maximálně vstříc. Obsahují grafické konfigurátory, pomocí kterých lze nastavit většinu moţností v systému. Administrátor v grafickém nástroji nastaví například vytáčené připojení k síti – dial-up. Pokud však chce změnit něco podrobnějšího, musí najít 15
konfigurační soubor a udělat změnu, kterou vyţaduje. Bohuţel, po následné úpravě v grafickém nástroji, bude soubor přepsán právě tímto nástrojem zpět. Pokud chceme mít systém, kde víme, kde co je a jak to funguje, myslím, ţe Slackware je tou pravou volbou.
5 Samotná realizace – Instalace 5.1 Bootování Po vloţení prvního instalačního CD do mechaniky se objeví prompt, tedy příkazová řádka, kde si můţeme vybrat, jaký kernel má nabootovat (příloha č. 2 obr. 2). Aby bylo moţné nainstalovat Slackware na různé počítače, je dodáno několik výchozích kernelů, z nichţ kaţdý má podporu některého zařízení navíc (SCSI, SATA atd.). Pokud instalujeme na domácí počítač, nebo předem připravený router, můţeme odklepnout klávesu [enter], a pokračujeme v bootování. Po chvíli bootování a zavádění se Slackware dotáţe otázkou, zda chceme zapnout podporu non-US (národně lokalizovanou), tuto volbu však necháváme prázdnou a pokračujeme klávesou [enter], protoţe při instalačním procesu nebudeme národní znaky potřebovat a tato volba se dá později změnit. Třetí ohlášení boot sekvence je jiţ login (příloha č. 2 obr. 3). Přihlásíme se tedy jako „root“ (privilegovaný uţivatel) a odklepneme klávesou [enter], při instalaci se nezobrazí ţádost o heslo a to z důvodu, protoţe bootujem z CD. Po přihlášení se na obrazovce vypíší následující kroky (příloha č. 2 obr. 4). Dva odstavce říkající nám o upgrade systému, coţ se nás netýká. Instalujeme totiţ nový systém z CD, a tedy potřebujeme udělat následující kroky: rozdělit disk a spustit setup.
5.1.1 Rozdělení disku Existují dva nástroje k rozdělení disku: fdisk a cfdisk. Není tu ţádný grafický nástroj a tento krok patří k nejproblematičtějším z celého instalačního procesu. Disk můţeme rozdělit na libovolné mnoţství částí a na kaţdou část přiřadit libovolná data, jako například na jednom oddílu mít uţivatelská data, na druhém mít log a na třetím systémovou oblast. Avšak při takovém návrhu si musíme dobře rozmyslet, jak velké jednotlivé oddíly vytvoříme. Takové rozdělení má význam například při důrazu na rychlost, nebo při systému s přepínanými distribucemi. Při pouţití jako server nám stačí disku přiřadit „/“ (kořenový adresář) a linux swap slouţící jako disková paměť. Velikost se 16
všeobecně doporučuje jako dvojnásobek operační paměti, přestoţe v dnešní době dostupnosti aţ 64 GB operační paměti se swap ne vţdy vyuţije, doporučuji ponechat alespoň základní velikost 2 GB. Partition, neboli rozdělení provedeme nástrojem cfdisk, který se spouští příkazem cfdisk /dev/hdx, za „x“ dosadíme písmeno našeho disku dle zapojení v počítači: primary master – /dev/hda primary slave – /dev/hdb secondary master – /dev/hdc secondary slave – /dev/hdd
V běţné situaci je disk připojen jako primární hlavní (primary master), spustíme tedy cfdisk /dev/hda. V příloze č. 2 na obr. 5 se lze podívat, ţe na disku není ţádný oddíl. Je zde pouze vidět volné místo, se kterým můţeme disponovat. Poloţkou New->Primary lze vytvořit nový oddíl (partition), jejíţ velikost se volí tak, aby zůstalo potřebné místo pro swap. Na swap necháme místo 2 493 MB, takţe velikost prvního oddílu bude okolo 76 746 MB. Tato nově vytvořená partition dostane status Bootable flag (označení partition, ze které operační systém startuje). Ze zbytku volného místa
můţeme vytvořit swap partition: New->Primary, odešleme velikost [enter] a změníme její Type (formát a moţnost vyuţití datové části disku) z 83 (Linux native – datová úloţná část)
na 82 (Linux swap – disková operační paměť). Zápis tabulky se potvrdí poloţkou WRITE a partition table zapíšeme na disk (příloha č. 2 obr. 6). Systém nás nyní poţádá o restart (příloha č. 2 obr. 7), který je důleţitý pro znovunačtení partition table. Restartujeme počítač příkazem reboot. Nyní máme diskové oddíly hdd1 (linuxová datová část) a hdd2 (linux swap).
5.2 Instalace systému Instalace
je
tvořena
přes
textově-grafické
prostředí,
spouští
se
setup
(příloha č. 2 obr. 8). Na výběr jsou poloţky, které instalátor postupně projde. Moţnost přečíst si nápovědu v anglickém jazyce je samozřejmostí, dále zvolit mapu kláves 17
(anglickou, českou). Instalace začíná na poloţce třetí a to poloţkou (ADDSWAP), kde se nastavuje swap. V následujícím kroku se instalátor zeptá, na jaký diskový oddíl budeme instalovat operační systém (příloha č. 2 obr. 9). Zde se zvolí nově vytvořený oddíl. Další dotaz od instalátoru bude, zda se má disk naformátovat (příloha č. 2 obr. 10). Pokud ještě disk není naformátovaný, vybereme poloţku Check, která kromě formátu, zkontroluje disk, abychom měli jistotu, ţe je disk v pořádku. Průvodce instalací se ještě zeptá, jaký file systém chceme pouţívat a jako výchozí nám nabídne ReiserFS (příloha č. 2 obr. 11).
5.2.1 File systém V této kapitole budeme hovořit o historicky prvním linuxovém souborovém systému, který podporuje ţurnálování. Hlavní osoba, která za tímto projektem stojí, je Hans Reiser, po kterém byl file systém pojmenován. Ovšem byl vyvíjen také ve spolupráci s mnoha dalšími spolupracovníky. [4] ReiserFS je zaloţen na rychlém balancovaném stromu. Je tak zrychlena práce např. s velkým mnoţstvím poloţek v adresáři. Uţ není ţádným problémem, aby adresář obsahoval například 100 000 souborů, ReiserFS s takto obsáhlým adresářem pracuje bez problémů. Dále například také obsahuje vlastnosti, jako zajištění datové konzistence při výpadku systému a rychlé obnovení, které ostatní file systémy nemají. Třetí a nejdůleţitější vlastností je jeho schopnost pracovat efektivně s místem na diskovém oddílu. ReiserFS neukládá data do bloků pevných velikostí. Pokud chceme uloţit několik souborů velkých například 100 B, uloţí jich ReiserFS file systém několik do jednoho bloku. Pouţitím tohoto souborového systému tedy šetříme nezanedbatelnou měrou prostor na našem záznamovém médiu. Stejně tak jsou do jednoho bloku ukládány konce souborů, které uţ nezabírají celý blok. Na druhou stranu tím však dochází, ke sníţení výkonnosti file systému, kvůli vyšší míře externí fragmentace. Problémem je přidání dalších dat na konec souboru. V tomto případě je na první pohled zřejmé, ţe se jedná o sloţitější problém, neţ např. u Ext2, kde přidání několika bytů je triviální záleţitostí. Jednoduše se pouţije nevyuţité místo v rámci bloku, který pouţívá soubor jen z části. Ovšem u ReiserFS musí dojít k přesouvání dat do jiných bloků, aby se tam přidávaná data vešla. Uchovávání malých souborů se hodí hlavně v případě databází. ReiserFS byl navrţen, aby umoţňoval ukládat malé záznamy na disku, tudíţ aby nebylo nutné pouţívat 18
nějaké způsoby shromaţďování dat do větších souborů. Tento přístup by měl nejen zvýšit výkon, ale také sníţit dobu vyvíjení aplikací tím, ţe programátoři nemusí vymýšlet způsoby, jak spojit několik malých bloků dat do jednoho velkého. Mohou je jednoduše na disk ukládat kaţdý zvlášť. K dalším výhodám souborového systému ReiserFS patří podpora ţurnálovacího souboru na odděleném diskovém oddílu a dynamické alokování inodů. Dále také moţnost online zvětšit file systém. Zajímavá je podpora detekce špatných bloků a pomocí externího patche i moţnost quot. [4] Po naformátovaní oddílu instalátor hledá všechny další diskové oddíly linuxu, pokud existují, dá nám k dispozici je připojit, například jako /home, /usr/local a podobně, protoţe nemáme další disky, pokračujeme dál. Po výběru, kam operační systém instalovat, musíme vybrat zdroj, odkud budou balíčky tgz aplikovány. Jelikoţ instalujeme z CD, myslím, ţe volba je jednoduchá (příloha č. 2 obr. 12). Vyhledání mechaniky spustíme autodetekcí.
5.2.2 Výběr balíčků V dalších dvou krocích budeme vybírat software, který bychom chtěli rozbalit na disk. Nejprve vybereme ze skupin balíčků (příloha č. 2 obr. 13). V zásadě platí, ţe pokud máme dostatek místa, můţeme vybrat všechno. Zrušíme však skupiny, které vysloveně nebudeme pro chod našeho systému potřebovat, jako jsou TeX – DTP editor s moţností práce s grafikou, GNU Emacs – textový editor, GNOME/KDE – kompletní balík desktopového grafického prostředí. Vybereme však sérii balíčků, které určitě potřebovat budeme, jako jsou: Základní balíčky operačního systému Volitelné aplikace nevyţadující GUI prostředí X (plně grafické prostředí) Vývojové programy Síťové programy Po výběru skupin balíčků, přejdeme ke způsobu výběru balíčků samotných (příloze č. 2 obr. 14). Pokud se chceme vyloţeně zaobírat, který balíček chceme a který ne, zvolíme moţnost expert, kde však riskujeme i vypnutí balíčku, který je nutný pro běh 19
systému, nebo menu, s jednořádkovým popisem. Volitelná moţnost Newbie je pro začátečníky, chceme-li se o jednotlivých balíčcích dozvědět více v zobrazovaném víceřádkovém popisu. Pokud nechceme na nějaký balíček zapomenout, zadáme moţnost full, tato volba nainstaluje vše, co se v jednotlivých skupinách balíčků nachází. Pro
jednoduchost tuto moţnost zvolíme. Moţnosti custom a tagpath pouţijeme v případě, ţe bychom měli v úmyslu, instalovat několik stejných počítačových systémů. Po tomto kroku následuje instalace balíčku z CD, v jehoţ průběhu si instalátor zaţádá o výměnu CD. Pokud provádíme instalaci z DVD, výzva se nezobrazí.
5.3 Konfigurace po instalaci Po instalaci balíčků se instalátor zeptá, jaký kernel (jádro systému) a odkud si kernel přejeme nahrát pro pouţití v nově nainstalovaném systému (příloha č. 2 obr. 15). Jelikoţ během instalace nevznikl ţádný problém, není jediný důvod nepouţít ten, který byl zvolen při prvním startu instalačního CD. Doporučuji tedy výchozí moţnost. (Viz příloha č. 2 obr. 16.) Nyní je moţnost vytvořit startovací disketu. Tuto sekvenci je moţné bez jakékoli starosti přeskočit, protoţe můţeme kdykoli bootovat z CD (příloha č. 2 obr. 17). Pokud
je
k
dispozici
modem,
můţe
být
následující
volba
zajímavá
(příloha č. 2 obr. 18). Zde si vybíráme link /dev/modem, který bude ukazovat na skutečné zařízení modemu. Pokud modem nemáme, jako je tomu v našem případě, volíme výchozí volbu no modem. Další moţnost, kterou instalátor nabídne je vypnout funkci hotplug, která umoţňuje pouţívání zařízení připojených za běhu (USB, fotoaparát, tiskárny) bez potřeby restartovat systém. Vypnout tuto funkci má smysl pouze tehdy, pokud způsobuje problémy. Například nestabilitu systému vlivem špatného ovladače pro dané zařízení. V následujícím menu (příloha č. 2 obr. 19) je moţnost instalovat Linux Loader, tedy LILO, díky této utilitě Slackware nastartuje. Preferujeme expertní nastavení, a proto pokračujeme tímto nastavením. Nejprve instalátor osloví s moţnostmi, z nichţ jsou důleţité pouze Begin, Linux a Install. Moţností begin první pole ponecháme volné, zde se vypisují parametry k bootu kernelu, v následujícím okně nastavíme rozlišení na standardní a v dalším okně nastavíme, kam LILO zapíšeme, zvolíme MBR u disku /dev/hda s dobou čekání 5 sekund. Následně otevřeme menu Linux a vypíšeme do řádky /dev/hda1 20
a v následujícím řádku pojmenujeme „linux“. Nyní LILO nainstalujeme tím, ţe zvolíme Install.
V nastavení myši (příloha č. 2 obr. 20) je důleţité vybrat správný skript, který bude myš ovládat. V dalším okně lze zatrhnout spuštění programu qpm umoţňující copy&paste v konzole.
5.3.1 Nastavení sítě Konfigurátor se postupně ptá na následující údaje: hostname, doménu, budeme-li adresy získávat z DHCP serveru, zda budeme pouţívat statické IP adresy, anebo počítač k ţádné síti připojený není a nastavíme jen loopback interface. Nyní zvolíme statické IP, protoţe počítač bude umístěn s pevnou veřejnou IP adresou. Potom zadáme údaje: IP adresa, netmask, gateway (brána – ip adresa routeru, k jehoţ síti bude server připojen). Nyní je nutné vyplnit veřejné (v internetové síti dostupné) DNS. Nejbliţší DNS se dá získat od poskytovatele připojení (ISP – Internet Service Provider). Zde v tomto formuláři lze zadat pouze jeden DNS server, pro přidání více DNS musíme editovat soubor /etc/resolv.conf ručně a vše potvrdíme (příloha č. 2 obr. 21).
Okno, které se zobrazí nyní, je výběrové okno, kde lze volit sluţby spouštěné při startu (příloha č. 2 obr. 22). Bind – dns server Apache – http server MySQL – databázový server Cups – printserver Inetd demon LPRprint server Atalk – apple print server IP_forward Bind je nutný při startu kvůli názvům DNS. Apache, Mysql zapínat není nutné, protoţe je nahradíme novými aktualizovanými balíčky, přesně pro naši potřebu. Cups, LPRprint a Atalk nezapneme, pokud není úkolem našeho serveru, aby poskytoval tiskové sluţby. Důleţitá sluţba je IP_forward, která umoţňuje předávání paketu mezi jednotlivými síťovými interface. Status spustitelnosti nevybraných sluţeb je moţno, v případě potřeby, jednoduše změnit v souboru /etc/rc.d/. Výběr konzolového fontu lze přeskočit. Můţeme si 21
také nastavit, zda budou hodiny nastavené dle UTC nebo lokálního časového pásma (příloha č. 2 obr. 23). Instalátor se na závěr zeptá, zda chceme nastavit heslo pro uţivatele „root“. Z hlediska bezpečnosti je změna nutná, uţivatel „root“ je administrátorem celého systému a jako jediný má práva přístupu ke všem adresářům a souborům. Změnu hesla stačí potvrdit stiskem [enter] (příloha č. 2 obr. 24) a zadat nové heslo do systému. Heslo by se mělo drţet určitých zásad: Ţádná prázdná hesla Ţádné číselné řady Ţádná odhadnutelná hesla (rodné čísla, telefon) Minimálně 8 znaků Kombinace velkých a malých písmen Diakritické symboly – tj. háčky a čárky nebo interpunkce – - , . ? Nyní je čerstvě a kompletně nainstalovaný operační systém Slackware připraven k prvnímu pouţití. Po zadání hesla systém vyzve k restartu serveru a sám vysune instalační CD z mechaniky. Restartovat lze známým CTRL+ALT+DEL a nebo příkazem reboot.
5.4 Základní konfigurace Nyní je nutné pohlédnout na konfiguraci základních systémových funkcí, abychom měli systém připravený k práci. Po prvním spuštění nás přivítá textový login. Přihlásíme se jako root. První kroky povedou k „počeštění“ systému. Toto lze dosáhnout, načtením klávesové mapy a fontů, spuštěním příkazu dle tabulky č. 1: Tabulka 1 (příkazy klávesové mapy a fontů) loadkeys cz-lat2 setfont lat2-16
Pro komunikaci konzoly v českém jazyce, vloţíme tyto příkazy také do souboru /etc/rc.d/rc.font a /etc/rc.d/rc.keymap, rc.font lze kopírovat ze souboru rc.font.new a soubor
22
rc.keymap je nutné vytvořit. Tyto soubory se spouští souborem /etc/rc.d/rc.M při startu multiuser (víceuţivatelského) reţimu. Kromě nastavení fontu a klávesnicové mapy je důleţité nastavit i prostředí, které se nastavuje v souboru /etc/profile.d/lang.sh zde zadáme hodnoty dle tabulky č. 2: Tabulka 2 (tabulka pro nastavení prostředí)
export LANG=C
#Jazyk prostředí příkazové řádky
export LC_CTYPE=cs_CZ
#Písmena a znaménka
export LANGUAGE=C
#Řeč oken
export LC_NAME=cs_CZ
#Jména
export LC_ADDRESS=cs_CZ
#Adresy
Toto nastavení zabezpečuje dostatečnou míru češtiny. Například chybová hlášení zůstávají v anglickém jazyce. Symbol „#” značí komentáře, které nejsou načítány při startu systému. Dalším krokem je nutnost v /etc/rc.d/rc.modules na začátku 46. řádku odstranit neboli „odkomentovat“ symbol #. Tímto krokem zapneme funkci apm (Advanced Power Management), řešící úplné vypnutí systému s ATX zdrojem. Nyní je nutné vytvořit uţivatelské konto. Je to důleţitý krok pro bezpečnost, protoţe chceme-li v systému pracovat, neměli bychom se přihlašovat jako root. Tento účet se pouţívá pouze pro administraci systému. Na vytvoření „user“ účtu pouţijeme příkaz adduser, který provede postupem jeho zaloţení a nastavení informací o uţivateli. Viz příloha č. 3 – Zaloţení uţivatele. V tuto chvíli je jiţ systém připraven na instalaci nadstaveb, jako jsou firewall a sluţby, které od serveru chceme. Je pravda, ţe je to jen pouhý výběr několika málo důleţitých základních nastavení. Další moţnosti závisí pouze na tom, jak jednotliví administrátoři budou chtít systém přizpůsobit.
23
6 Firewall 6.1 Firewall – základní popis Síťové firewally jsou zařízení nebo systémy, slouţící k zabezpečení síťových provozů a oddělují jednotlivé datové sítě prostřednictvím pravidel, kterým říkáme bezpečnostní politiky. Firewall je vlastně jakási ochranná hráz, skrze kterou procházejí všechny informace (rozumějte pakety), které si chceme mezi oddělenými sítěmi předat. Ve velké většině případů je firewall zmiňován právě v souvislostech propojení s Internetem a ve spojitosti s rodinou protokolů TCP/IP. Nicméně, firewally nejsou nutně závislé na Internetu a musí být schopny pracovat i s jinými protokoly. Internet je častý, nicméně ne jediný případ jejich vyuţití. Klasickým příkladem mohou být vnitropodnikové sítě, kdy jednotlivé pobočky jsou k centrále připojeny pomocí virtuálních privátních kanálů, VPN. Tyto kanály (např. přes WAN sítě) jsou rovněţ chráněny firewally, přestoţe v těchto větvích se nemusí nacházet jediná přípojka do Internetu. V době, kdy jsou „informace nad zlato“ se tak provozovatelé sítí snaţí předejít neoprávněným přístupům k zařízením (k informacím v těchto zařízeních uloţených), monitorovat provoz v těchto sítích, povolit jen vybrané síťové sluţby, omezit provoz na pronajatých linkách a podobně. [5]
6.2 Skladba TCP/IP 6.2.1 TCP/IP (Transmission Control Protocol/Internet Protocol) Problematika TCP/IP je poměrně obsáhlá a sloţitá. Základní dokumentací, ve které jsou protokoly z rodiny TCP/IP popsány, jsou tzv. RFC (Request for Comments) dokumenty, kterých je velké mnoţství. Můţeme je najít např. na www.faqs.org/rfcs. [6] Svou dnešní podobu získaly protokoly TCP/IP zhruba v letech 1977-79. V té době jiţ síť ARPANET existovala a jejím provozovatelem byla právě agentura DARPA. Ta přibliţně kolem roku 1980 začala převádět síť ARPANET na protokoly TCP/IP a připojovat k ní další vědeckovýzkumné sítě. Síť ARPANET se tak rychle stala zárodkem a současně i páteřní sítí celé soustavy sítí – vznikajícího Internetu. [7] Popis TCP/IP vychází z tzv. referenčního modelu ISO/OSI, který se skládá ze sedmi vrstev, a který si stručně popíšeme v tabulce 3 (od nejvyšší po nejniţší vrstvu). [6] 24
Tabulka 3 (Referenční model ISO/OSI)
Je nejvyšší vrstvou, na rozdíl od jiných nezajišťuje sluţby pro ţádnou jinou,
Aplikační
pomocí ní mohou uţivatelé či aplikace odesílat data po síti.
Prezentační
Zajišťuje obecný datový formát mezi různými platformami. Je zodpovědná za převod a překlad dat, kompresi a dekompresi, šifrování a dešifrování dat. Tato vrstva řídí a ustavuje datové přenosy mezi uzly na síti v podobě tzv. relací,
Relační
coţ je dialog mezi prezentačními vrstvami na dvou či více systémech. Zajišťuje přenos dat mezi komunikujícími procesy nebo programy spuštěnými na
Transportní
vzdálených počítačích. Protokoly této vrstvy jsou TCP a UDP. Pokud chceme dosáhnout spolehlivějšího přenosu dat, je vhodnější pouţít protokol TCP. Adresování dat je řešeno pomocí portů a jejich čísel.
Síťová
Je pro nás velmi zajímavá, neboť zajišťuje komunikaci mezi dvěma hostitelskými počítači, logické adresování, doručování paketů, ale hlavně směrování. Tato vrstva řídí přístup k vlastnímu přenosovému médiu, převádí pakety na rámce
Linková
a tak je připravuje k přenosu, přidává k rámcům hardwarové adresy výchozího i cílového počítače, počítá kontrolní součet. Na této úrovni pracují bridge a switche.
Fyzická
Jak uţ název napovídá, do této vrstvy patří vše, čeho se můţeme dotknout např. kabely, konektory atd.
6.2.2 Protokol IP (Internet Protocol) Patří mezi nejzatíţenější protokoly z rodiny TCP/IP. Všechny ostatní protokoly a aplikace běţí nad ním a vyuţívají ho pro logické adresování na úrovni síťové vrstvy. Tento protokol patří mezi tzv. nespojové, coţ znamená, ţe nezaručuje doručení datagramu na cílový počítač (o to se musí postarat protokoly vyšších vrstev, např. TCP). Jeho součástí je i protokol ICMP (Internet Control Message Protocol), který je popsán v dokumentu RFC 792, a slouţí jako servisní a diagnostický protokol. Má několik typů, z nichţ nejznámější je "ţádost o echo" (echo request), kterou pouţívá např. utilita ping.[6]
25
6.3 Druhy firewallu Firewall je místo bezpečnostně oddělující sítě a zkoumající provoz v nich na základě stanovených pravidel. První firewally zahrnovali identifikaci zdroje, jeho IP adresu a port, a cíle. V dnešní době je však nedostatečné takovéto firewally pouţívat. Dnes moderní firewall mají v podmínce zjišťovat informace o stavu spojení, znalost kontrolovaných protokolů a případně prvky IDS. Firewally se během svého vývoje řadily zhruba do následujících kategorií: Paketové filtry Aplikační brány Stavové paketové filtry Stavové paketové filtry s kontrolou známých protokolů a popř. kombinované s IDS [15]
6.3.1 Paketové filtry Nejjednodušší a nejstarší forma budování bezpečnosti firewallu spočívá v tom, ţe pravidla přesně uvádějí, z jaké adresy a portu na jakou adresu a port můţe být doručen procházející paket, tj. kontrola se provádí na třetí a čtvrté vrstvě modelu síťové komunikace OSI. Výhodou tohoto řešení je vysoká rychlost zpracování, proto se tyto firewally pouţívají i v dnešní době z hlediska rychlosti průtoku dat. Nevýhodou je však velmi nízká úroveň kontroly procházejících spojení, hlavně u sloţitějších protokolů jako je FTP, video/audio streaming a podobně. Zde je problém hlavně v nemoţné kontrole samotného spojení a v nutnosti otevřít porty a směry spojení, které mohou být vyuţívány i jinými protokoly neţ administrátor zamýšlel. Hlavní představitelé jsou: paketový filtr ACL (Access Control Lists) starší verze IOS na routerech Cisco starší varianty firewallu v linuxovém jádře (ipchains). [15]
6.3.2 Aplikační brány Dalším krokem v zabezpečení sítí jsou firewally aplikační, které úplně oddělují sítě, do kterých byly postaveny. Často je zveme Aplikační brány, nebo Proxy firewally. 26
Komunikace vţdy probíhá jako dvě spojení. První vţdy vyvolává klient, který se chce připojit. Následně aplikační brána data ve spojení zpracuje a vytvoří nové spojení do vnitřní sítě k serveru, nebo stanici, ke které je prvotní spojení iniciováno. Pro tento server nebo stanici se brána jeví jako iniciátor spojení. Zpracovaná data od serveru se vrací zpět na aplikační bránu. Brána data od serveru odešle klientovi v původním spojení. Kontrola paketů je prováděna na sedmé (aplikační) vrstvě síťového modelu ISO/OSI Tyto brány svou funkčností jsou také pouţívány jako nástroje překladu adres NAT (Network Address Translation), protoţe vlivem pouţití brány server není schopen zjistit klientovu IP adresu, který o spojení ţádal. Jako zdrojovou IP adresu server vyhodnotí vnitřní rozhraní aplikační brány. Je pravda, ţe tuto funkci můţe mít i většina paketových filtru s pravidlem NAT. Kladnou vlastností je vysoké zabezpečení, ale pouze známých protokolů. Zápornými vlastnostmi aplikačních bran jsou hlavně vysoká náročnost na hardware, jsou schopny zpracovat několikanásobně méně poţadavků na spojení, jejich rychlost tím výrazně klesá. Těmito vlastnostmi se výrazně zvyšuje latence oproti paketovému filtru. Pro kaţdý protokol musí být vyhrazen speciální proxy. Proto všechny aplikační brány jsou schopné kontrolovat jen velmi málo protokolů, v průměru do deseti typů. Další nevýhodou aplikační brány je fakt, ţe je nutné, aby klient byl schopen komunikovat s touto bránou. To způsobuje, ţe jsou schopny ochránit komunikaci, avšak nejsou
vhodné
pro
ochranu
svého
vlastního
operačního
systému.
Postupným
odstraňováním těchto poţadavků, bylo moţné dosáhnout autonomie. Po uvedení stavových paketových filtrů byly tyto aplikační brány nahrazeny a tím i jejich vývoj byl ukončen. S aplikačními branami se lze ještě dnes setkat, ale opravdu u velmi specializovaného pouţití, jako je vstup do sítě pouze pro jeden protokol, například FTP Hlavní představitelé jsou: The Firewall Toolkit Gauntlet [15]
27
6.3.3 Stavové paketové filtry Funkce stavových paketových filtrů je velmi podobná klasickým paketovým filtrům. Oproti klasickým filtrům si ukládají informace o jednotlivých povolených spojeních. Tyto informace pak vyuţívají k rozhodování, zda pakety, které právě procházejí filtrem, patří do povoleného spojení a mohou filtrem projít k cílovému zařízení či routeru, nebo zda musí filtr obnovit rozhodovací proces, který schválí nebo zamítne rozhodnutí o novém nebo probíhajícím spojení. Tento filtr má hned několik výhod a to, ţe se urychluje zpracování paketů ve spojeních, které jiţ byly povoleny. Dále lze v pravidlech firewallu uvézt jen směr povoleného spojení, které smí být navázáno a filtr automaticky povolí odpovědní pakety. U protokolů, které jsou známé i další spojení uţívané protokolem Příklad: Například pro FTP tedy stačí nastavit pravidlo, ve kterém povolíte klientu připojení na server pomocí FTP a protoţe se jedná o známý protokol, firewall sám povolí navázání řídícího spojení z klienta na port 21 serveru, odpovědi z portu 21 serveru na klientem pouţitý zdrojový port a po příkazu, který vyţaduje přenos dat, povolí navázání datového spojení z portu 20 serveru na klienta na port, který si klient se serverem dohodli v rámci řídícího spojení a pochopitelně i odpovědní pakety z klienta zpět na port 20 serveru. [15] Hlavní inovace je podpora virtuálních stavů vytvářené pro protokoly, které jsou bez stavové jako je například UDP a ICMP Velkou výhodou je vysoká rychlost vyřízení poţadavků, vysoká datová propustnost a konfigurovatelnost. Jelikoţ je velice jednoduché tyto filtry konfigurovat, patří tak k firewallům, kde je velmi omezena chyba nastavení administrátorem, na rozdíl od triviálních paketových filtrů nebo aplikačních bran. Tím vynikají velmi slušnou úrovní bezpečnosti, jak ze strany lidského faktoru, tak ze strany hrozby v síti. Přestoţe bezpečnost aplikační brány je na vyšší úrovni, pouţijeme tento typ firewallu z hlediska jeho rychlosti. Hotový stavový paketový filtr viz příloha č. 4 – Stavový filtr.
28
Hlavní představitelé jsou: FireWall-1 do verze 4.0 starší verze Cisco PIX, Cisco IOS Firewall starší verze firewallů Netscreen iptables v linuxovém jádře ipfw v BSD [15]
6.3.4 Stavové paketové filtry s kontrolou protokolů a IDS Současné stavové paketové firewally jsou schopny mimo čtení informace o stavu a dynamickém otevírání portů pro datová a řídící spojení známých protokolů, také vyuţít takzvaný „deep inspection“, coţ znamená schopnost firewallů kontrolovat spojení a data procházející uzlem. Umí rozpoznat i jednotlivé aplikace procházející přes port, který jím není příznačný. Znamená to tedy, ţe pokud spojení http port 80 bude obsahovat známky, ţe se nejedná o skutečný poţadavek WWW serveru, ale takzvané tunelování jiné sluţby nebo protokolu, například ICQ, torrent, a podobné P2P sítě, nebo pokud data v hlavičce mailu jsou v rozporu s RFC, firewall to pozná a komunikaci zastaví Novinkou sluţeb integrovaných do firewallů jsou in-line IDS (Intrusion Detection Systems) tj. systémy pro detekci útoků. Sluţba fungující podobně jako antivirové systémy v osobních počítačích. Pomocí databáze signatur a heuristické analýzy jsou schopny odhalit vzorce útoků i ve zdánlivě nesouvisejících pokusech o spojení, například skenování adresního rozsahu, rozsahu portů, známé signatury útoků uvnitř povolených spojení apod. [15] Vysoká úroveň bezpečnosti těchto filtrů při zachování relativně snadné ovladatelnosti při konfiguraci. Vysoká rychlost detekce v porovnání s aplikační bránou, bohuţel však aţ o 50 % zpomalení v porovnání s paketovými filtry. Hlavní nevýhodou tohoto typu firewallu z hlediska návrhu software a základních pravidel bezpečnosti, je tuto sluţbu udrţet co nejjednodušší a nejmenší. Protoţe IDS firewally integrují velké mnoţství funkcí, zvyšuje se zde pravděpodobnost zneuţití části kódu (chyby a tzv. zadní vrátka) a tím k destabilizaci bezpečnosti
29
Hlavní představitelé jsou: Check Point FireWall-1 od verze 4.1, nyní NGX Netscreen, ISG a SSG iptables v linuxovém jádře.
6.4 Paketový filtr Tvoří základní stupeň kaţdého firewallu a to mimo jiné i proto, ţe má na své straně dvě velké výhody, kterými jsou rychlost a přizpůsobitelnost. Paketový filtr můţe být pouţit v libovolné síti na libovolný typ protokolu. I to je důvod, proč jsou paketové filtry vyuţívány i na jiných zařízeních neţ firewallech, klasickým případem je směrovač (router). Paketové filtry však mají i řadu nevýhod: 1. Vzhledem k tomu, ţe nezkoumají (neumějí to) tzv. „upper layer data" (jinými slovy, vše co je nad 4. vrstvou OSI modelu (včetně tj. od Transportní vrstvy výše)), nemohou bránit specifickým útokům na slabiny operačních systémů nebo aplikací. Stručně řečeno, paketové filtry umějí sledovat hlavičky paketů, ne jejich vzájemné vazby nebo návaznost. 2. Mají omezené logovací moţnosti. Vlastní logování sniţuje výkonnost systému, na kterém je paketový filtr provozován. Pokud úroveň logování „přeţenete“, můţe dojít k přetíţení daného zařízení a k jeho následnému kolapsu. Klasickým příkladem můţe být například pokus o logování všech příchozích SYN paketů. U domácího stroje to asi vadit nebude, nicméně u serverového stroje, na který posíláme několik tisíc dotazů, nám pokus o logování všech SYN paketů na firewallu (např. do log souboru) můţe přivodit kolaps firewallu. Je vcelku jedno, jestli log soubor vytváříte na firewallu, nebo na jiném stroji. U paketových filtrů musíte pečlivě zváţit, které události budeme logovat a které nikoliv. Budeme muset vzít v potaz výkonnost stroje, propustnost všech jeho síťových rozhraní, stanovit mez, pod kterou nesmí klesnout výkon (např. 20 %). 3. Řada paketových filtrů nepodporuje autentizační mechanismy. 30
4. Paketové filtry jsou náchylné k útokům, které zneuţívají nedokonalosti TCP/IP protokolů (např. network layer address spoofing). Vzhledem ke své jednoduchosti nastavení vzniká řada chyb vlivem špatné konfigurace filtrů (na nepovolenou potřebnou sluţbu obvykle přijdete, ale na povolenou nepotřebnou sluţbu nemusíte přijít nikdy). Klasickým příkladem zařízení, které bude pouţívat pouze paketový filtr, je právě router provozující ACL (access list) pro kontrolu síťového provozu. Takovýto „přístupový“ router je označován jako Boundary router a jeho zapojení můţe vypadat dle obrázku č. 25: ISP (Internet) Boundary router (paketový filtr)
FireWall DMZ
Vnitřní síť
Obrázek 25 (boundary router zapojení)
Vidíme, ţe Boundary router vlastně tvoří jakýsi „první stupeň" firewallu. Můţeme na něm provozovat paketový filtr, který odfiltruje neţádoucí pakety a zbytek provozu předá firewallu, který pak můţe provádět kontrolu na vyšších vrstvách OSI modelu. [6]
31
6.5 Paketové filtry s IPTABLES 6.5.1 IPTABLES Paketové filtry – nástroj rozhodující se dle několika kritérií a to dle protokolu a jeho čísla portu, diagramu, zdrojové adresy a cílové adresy. Fungují na takzvaných chain, rules a policy. Chain (řetězec) je soubor pravidel (rules), které jsou na paket aplikovány ve chvíli, kdy paket daným chainem prochází. Základní (vestavěné) chainy jsou INPUT, OUTPUT a FORWARD. Můţeme si samozřejmě vytvářet a pojmenovávat vlastní. Vestavěné, narozdíl od těch vlastních, nemůţeme smazat (můţeme vymazat pouze jejich obsah). Další „vestavěné“, které se pouţívají při routování s NAT, jsou například PREROUTING a POSTROUTING. [8] Rules (pravidla) jsou vlastně věty, které se aplikují na příchozí paket, soubor těchto pravidel se nazývá chain. Tyto pravidla si určuje administrátor systému. Pokud nastane situace, kdy nelze na paket uplatnit jakékoliv pravidlo, automaticky se pouţije pravidlo nadřazené. Ty jsou uvedeny na začátku skriptů, jejichţ úloha je často paket odmítnou nebo povolit. Tomuto globálnímu pravidlu se říká policy. Jak vlastně paketový filtr iptables funguje je vidět na obrázku 26:
Obrázek 26 (iptables [8])
Ve chvíli, kdy do serveru dorazí paket (např. skrze ethernetovou síť či přes modem), jádro se nejdříve podívá na cílové určení paketu (coţ je routing). Jestliţe je cílovým místem náš stroj, pak paket putuje přes chain INPUT, pokud projde, je předán do příslušného procesu (aplikace), který běţí na našem počítači. Pokud není paket určen pro náš stroj, pak záleţí na tom, zda je v jádře povoleno forwardování (předávání) paketů [8] (a 32
to defaultně není, ale při instalaci našeho systému bylo povoleno). Pokud není nebo jádro neví, kam paket forwardovat, pak je zahozen a do chainu se vůbec nedostane. Pokud je paket určen pro náš stroj, projde a je odeslán dál. Poslední variantou je program běţící na našem stroji vysílající paket, který můţe být filtrován v chainu OUTPUT.[8] S chainy lze provádět několik operací a to vytvořit, smazat, změnit policy, zobrazit a smazat pravidla chainu a vynulovat počítadla paketů.
6.5.2 Nastavení firewallu Veškerá pravidla můţeme aplikovat dvěma způsoby a to rovnou do příkazového řádku, kde budou ihned funkční, avšak po restartu by se jiţ neprojevila. Nebo je zapisovat do konfiguračního souboru, který je umístěn /etc/rc.d/rc.fw. Důleţité je, aby po zápisu pravidel byl soubor firewallu nastaven jako spustitelný a zanesen na prvním místě, ihned po spuštění síťových adaptérů, do spouštěcího skriptu /etc/rc/rc.d/rc.local. Firewall bychom měli nastavovat jiţ od počátku a to velmi bezpečně, proto je doporučeno globálně „co není výslovně dovoleno, je přísně zakázáno“, opačná moţnost je vhodná maximálně pro testovací účely. Proto následné tři příkazy zakáţou veškerou komunikaci na síťových zařízeních, protoţe defaultní politika je nastavena na ACCEPT iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP
6.5.2.1 Logování Logování je nedílnou součástí firewallu. Přináší nám větší kontrolu nad pakety, které přijdou na vstupní interface do chainu INPUT a které neprojdou díky tomu, ţe je nastaven defaultně na DROP. Bohuţel, pokud bychom chtěli neustále vědět, které pakety odmítáme, potřebovali bychom na to velmi rychlý stroj a neomezený prostor na disku. Proto se takovéto logování pouţívá pouze na začátku, kdy firewall ověřujeme, nebo pokud nám nějaká sluţba kvůli firewallu nefunguje a snaţíme se najít chybu. Logování se určitě nevyplatí vypnout úplně, nevěděli bychom například, ţe na server někdo útočí nebo se ho doţaduje nějaká sluţba. Omezení logování lze vyřešit například pomocí limit -limit 15/h -j LOG
to znamená 15 paketů za hodinu.
33
iptables -A INPUT -m
6.5.3 Popis užitého filtru Při spouštění filtru nastavíme do proměnné $IPTABLES cestu k souboru /usr/sbin/iptables, následuje přiřazení IP adresy a rozhraní. Poté filtr vymaţe veškeré tabulky
pouţívané k filtrování. Navrţený filtr má implicitně nastavené všechny pravidla DROP. To znamená, ţe pokud bychom takto filtr zanechali, z vnější sítě by server vlastně neexistoval, při přístupu na jakoukoli sluţbu by filtr paket okamţitě zahodil. Proto byla přidána pravidla na zpřístupnění sluţeb. Následuje logování, které zahazujeme, nicméně je dobré k tomu, abychom měli přehled o kontaktování našeho serveru z venku, logovat se budou maximálně 5×3 pakety za hodinu. Další krok v našem skriptu je nastavení poţadavku o navázaní spojení SYM, to je příznak ţádosti paketu o spojení. Pokud by například někdo chtěl spojení zahltit nebo dokonce zkoušet typovat hesla nějakým programem, můţeme tímto dát pouze několik moţností. Nadefinujeme si skupiny sym-flood a zadáme, ţe sym paket je povolen maximálně 8× za sekundu, jinak zahodit. Druhá verze je sym-flood2, kde máme nastavenu vyšší hodnotu 32× za sekundu. Pouţití těchto tabulek máme v následujícím kroku. První dvě pravidla fungují tak, ţe zahodí paket, který není sym a spojení je ve stavu nové. Další pravidlo je pro vstup na port 22 s limitem 12× za hodinu, jinak zalogovat, následující řádky blokují icmp a sym dle sym-flood a sym dle sym-flood2. Hotový stavový filtr je v příloze 4.
7 Zabezpečení komunikace 7.1 OpenSSL OpenSSL
je
knihovna
související
s ověřováním
elektronické
totoţnosti
přistupujících osob či sluţeb, pouţití se uplatní hlavně u webových sluţeb https, neboli „http over SSL“ serverů. Další vyuţití je u aplikací při přenosu dat zabezpečenou šifrovanou formou, které zabezpečení sami neimplementují. Často se pouţívá ssl k přenosu poštovních protokolů „SMTP over SSL“, „IMAP over SSL“ a „POP3 over SSL“ Šifrované SSL spojení se vytvoří v principu tak, ţe hostitelé naváţí TCP spojení, poté se provede úvodní „potřesení rukou“, při kterém se případně ověří certifikáty a vymění se šifrovací klíče. Po spojení začnou proudit šifrovaná data zapisovaná a čtená aplikacemi a zašifrovaná OpenSSL. [9]
34
7.2 Cetrifikát Certifikát je speciálně vygenerovaný soubor systémem, který slouţí k ověření identity. Lze jej pouţít i pro identifikaci osob (jako například elektronický podpis) a primárně pouţívaný pro ověření autenticity serveru. Pravost certifikátu se v SSL řeší jeho podpisem. Moţnosti podpisu jsou dvě. 1. podepsán sám sebou (tzv. Self-signed Certificate), 2. podepsán jiným certifikátem, tzv. certifikační autoritou (Certificate Authority, CA). Pokud autorita, které uţivatel věří, podepsala nějaký certifikát, povaţuje se, certifikát za autentický (pravý, důvěryhodný). Certifikáty se mohou řetězit a to v podstatě znamená, ţe podepsaný certifikát důvěryhodným certifikátem se stává také důvěryhodný a tak dále. Takto se můţeme dostat aţ k původnímu certifikátu a serveru, který ho vydal. Common name udává, koho certifikát identifikuje, například jméno osoby či serveru. Platnost certifikátu je omezená. Vţdy platí od určitého data a vţdy má expiraci, neboli datum vypršení. Jméno, e-mail, adresa vlastníka jsou data uvedená v certifikátu, avšak SSL je nepotřebuje pro svou funkci. [9]
7.3 Klíče SSL pouţívá kryptografii s párem soukromý a veřejný klíč, které vţdy patří k sobě. Komunikující strany si při prvním kontaktu vymění své veřejné klíče. Od této chvíle se data šifrují veřejnými klíči protistrany. Ta data dešifruje svým soukromím (privátním) klíčem. Tento klíč se nikdy nesmí šířit, v takovém případě je ohroţena veškerá právě probíhající komunikace, ale i komunikace odposlechnutá a budoucí. Jako zabezpečení klíče lze pouţít ochranu privátního klíče heslem, bohuţel však je nutný zásah člověka, kdyţ se například http server musí restartovat, aby vloţil heslo. Tato moţnost je nevhodná v případě kolize, protoţe sám od sebe server není schopen nastartovat. [9]
35
8 Instalace, kompilace a konfigurace služeb 8.1 Stažení zdrojových kódů Z domovských internetových stránek, uvedených v seznamu zdrojů, jsme stáhli a připravili veškerý zdrojový kód ke sluţbám, které budeme instalovat (příloha č. 2 obr. 27). tj httpd, mysql, php, openssl, phpMyAdmin, a postfix. Tyto zdrojové balíčky, které jsme si stáhli z internetu, nakopírujeme do svých adresářů a postupně začneme procházet instalací.
8.1.1 Checkinstall 8.1.1.1 Popis Checkinstall je terminálová aplikace, která vytváří ze zkompilovaných zdrojů dat instalační balíček, který lze nainstalovat pomocí balíčkovacího manaţeru. Aplikace podporuje systém .rpm (Mandrake, Red Hat, Suse,..), .deb (Debian, Knoppix,..) i .tgz (Slackware). Protoţe mnoho programů se vydává jako zdrojový kód, je vhodné pouţít tuto aplikaci, abychom byli schopni ošetřit novou instalaci proti zanesení. Zanesením se rozumí problémy způsobené tím, ţe většina programů nemá ve svém makefilu cíl jejich deinstalace, tedy make uninstall. Toto nám můţe značně sníţit přehlednost instalací a deinstalací a hlavně aktuálnost a čistotu systému. Pro tuto kontrolu můţeme pouţít program checkinstall, staţený z internetové adresy http://checkinstall.izto.org. Program pouţijeme tak, ţe místo make install spustíme checkinstall s parametrem příkazu. Ten se zeptá na několik informací, jak má instalovat dokumenty, nebo jestli má vyloučit z instalace nějaké soubory a podobně. Checkinstall zobrazí hlášení, jaký balíček chceme vytvořit. Vţdy budeme vytvářet .tgz pro Slackware. Následně aplikace vykoná instalaci a nainstaluje program do dočasného adresáře. Potom daný program nainstaluje jako balíček, který je mezitím automaticky vytvořen. Tímto způsobem zůstane čistý systém a navíc vygenerovaný balíček pro aktuální systém. Pokud spravujeme více systémů, můţeme na následujícím počítači pouţít jen .tgz balíček.
36
8.1.1.2 Instalace Program instalujeme jako Slackwarový balíček, tedy příkazem installpkg checkinstall.tgz. Následně systém oznámí, ţe došlo k aktualizaci knihoven a checkinstall je
připraven k pouţití. 8.1.1.3 Konfigurace Konfigurace u tohoto programu není nutná, protoţe jde pouze o balíčkovací skript.
8.1.2 OpenSSL 0.9.8k 8.1.2.1 Popis Vrstva SSL (Secure Sockets Layer) řeší zabezpečení přenášených dat mezi klientem a serverem a je vloţena mezi aplikační protokol a protokol TCP. Přenášená data se pak tedy například mezi WWW serverem a prohlíţečem přenášejí šifrovaně pomocí šifrování veřejným a privátním klíčem. Klíče navíc obvykle obsahují autentifikační informaci od certifikační autority (CA). [10] 8.1.2.2 Instalace Instalaci OpenSSL musíme nainstalovat dříve neţ všechny ostatní sluţby, protoţe se v přípravě Apache (httpd) budeme odkazovat na jiţ nainstalované SSL. Instalaci začíná implicitním příkazem ./config --prefix=/usr/local --openssldir=/usr/local/openssl, který je uveden v souboru INSTALL, dle něhoţ postupujeme instalací. Tento příkaz předpřipraví soubor makefile s parametry, kam se má SSL zkopírovat po kompilaci. Následně příkazem make
začneme kompilaci. Operace můţe trvat i několik minut, protoţe systém překládá zdrojový kód a přizpůsobuje ho do binární podoby. Soubor INSTALL nyní doporučuje spustit make test, tento příkaz otestuje, zda je SSL funkční a je připraveno k instalaci. V Posledním
kroku, spouštíme místo příkazu make install příkaz checkinstall, o kterém je zmínka výše. Nyní máme nainstalované OpenSSL a vytvořený Slackwarový balíček. 8.1.2.3 Konfigurace OpenSSL jako takové se nekonfiguruje, je to jen přídavný modul pro Apache a další sluţby s ním spolupracující, při kompilaci a konfiguraci se OpenSSL zapne. Jediné co je nutné udělat, je vygenerovat privátní klíč. 37
Vygenerování privátního klíče do adresáře /usr/local/openssl: mkdir /usr/local/openssl cd /usr/local/openssl /usr/local/bin/openssl genrsa -des3 -rand soubor_1 : soubor_2 : / soubor_3 -out localhost.key 1024
Soubory 1, 2 a 3 jsou soubory větší velikosti kdekoliv ze systému. Jsou pouţívány na výpočet klíče. Následně budeme generovat klíč bez password-phrase, aby nás nezdrţoval při kaţdém startu, je to sice méně bezpečné, ale neomezí nás to v případě, ţe budeme chtít stroj restartovat na dálku: /usr/local/bin/openssl rsa -in localhost.key -out localhost.key.unsecure
Dále vytvoříme poţadavek na certifikační autoritu, která klíč autorizuje: /usr/local/bin/openssl req -new -key localhost.key -out localhost.key.csr
Klíče uloţíme do adresáře /usr/local/openssl/certs
8.1.3 Apache 2.2.11 8.1.3.1 Popis Původně byl Apache postaven na programu NCSA httpd a mnoha patchů. Je zdarma a open source, je schopen zpracovávat nejnovější protokoly, je vysoce konfigurovatelný, modulární (v tomto smyslu to znamená moţnost pouţití modulů, které lze do Apache zakompilovat později), je moţno psát vlastní moduly s pouţitím Apache API, který se stále vyvíjí. Další obrovskou výhodou Apache je, ţe existuje pro různé platformy (unix, windows). [11] 8.1.3.2 Instalace Instalaci webového serveru začneme příkazem ./configure s parametrem –help. Po odeslání se na obrazovce objeví mnoho parametrů a z nich je nutné vybrat alespoň ty nejzákladnější, jejichţ sluţby chceme implementovat do http serveru, jako jsou: --prefix=PREFIX
Prefix nahradíme cestou, kam chceme instalovat tedy /usr/local/apache2 38
--enable-ssl
Zapne nám funkci SSL
--enable-so
Zapne DSO potřebné pro php
Příkazem ./configure --prefix=/usr/local/apache2 --enable-ssl --enable-so odstartujeme přípravu makefile. Jakmile příkaz dokončí operaci, můţeme přistoupit k dalšímu kroku. Příkaz make, tato operace opět trvá několik minut. Po úspěšné kompilaci soubor INSTALL doporučuje spustit make install, opět nahrazujeme příkazem checkinstall, vytvoříme balíček a nainstalujeme aplikaci. Pokud chceme ověřit, zda apache funguje, spustíme ho příkazem /usr/local/apache2/bin/apachectl start, který umístíme do spouštěcího skriptu /etc/rc.d/rc.local, aby
docházelo ke spuštění webserveru při startu serveru.
8.1.3.3 Konfigurace Rovněţ
je
nutné
modifikovat
(doplnit)
konfigurační
soubor
Apache
/usr/local/apache2/conf/httpd.conf: DocumentRoot "/var/www"
Doplnit PHP 5, které bude instalováno jako modul Apache 2 serveru: LoadModule php5_module modules/libphp5.so DirectoryIndex index.html index.htm index.php AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
Pro pouţití SSL (na standardním portu 443) změníme soubor /usr/local/apache2/conf/ssl.conf celý na: Listen 443
ServerName localhost SSLEngine on SSLCertificateFile /usr/local/openssl/localhost.cert SSLCertificateKeyFile /usr/local/openssl/localhost.key.unsecure
39
8.1.4 MySQL 4.1.11 8.1.4.1 Popis MySQL je relační databázový systém typu DBMS (database managment system). Kaţdá databáze v MySQL je tvořena z jedné nebo více tabulek, které mají řádky a sloupce. V řádcích rozeznáváme jednotlivé záznamy (řádek=záznam) a sloupce (sloupec=pole). Jménem sloupců se uvozují datové typy jednotlivých polí záznamu. Práce s databázemi, tabulkami a daty se provádí pomocí příkazů, respektive dotazů, které vycházejí z programovacího jazyka SQL (Structured Query Language) systém MySQL je vyuţitelný v C, C++, Java, Perl, PHP a dalších. [12] 8.1.4.2 Instalace Instalace MySQL serveru je postup, který je zcela odlišný od instalace standardních balíčků, nebo zdrojových kódů. Zde se zasahuje do adresářové struktury, práv, uţivatelských účtů a podobně. První krok při instalaci MySQL je zaloţit pro sluţbu skupinu a uţivatele oprávněného tuto sluţbu spouštět jako server. Toho dosáhneme příkazy groupadd mysql, který zaloţí skupinu mysql a useradd -g mysql mysql, pro skupinu mysql zaloţí
uţivatele mysql. Nyní nastavíme práva pro adresář chown -R root , chown -R mysql data a chgrp R mysql. Další příkaz, který musí následovat u nové instalace MySQL, je zaloţení databáze
a to příkazem /scripts/mysql_install_db --user=mysql . Nyní jiţ spustíme bin/mysqld_safe -user=mysql & pro spuštění MySQL, zkopírujeme mysql.server do /etc/rc.d zeditujeme /etc/rc.d/rc.local a přidáme řádku ./mysql.server start. Tím je instalace MySQL hotová.
8.1.4.3 Konfigurace Soubor /etc/my.cnf můţe být pro malou zátěţ MySQL databáze konfigurován například jako v příloze 5 – Konfigurace MySQL (je pouţita defaultní konfiguraci dodávaná s archivem MySQL).
8.1.5 PHP 5.2.9 8.1.5.1 Popis Hypertext Preprocessor, interpretovaný programovací jazyk vyvinutý z C, Javy a Perlu. Je určen pro vytváření webových stránek vkládáním do HTML, XHTML kódu. Lze s ním vytvářet jak dynamické texty, tak Flash animace, PDF soubory a další typy souborů 40
pokud jsou nahrány příslušné moduly. PHP disponuje moţností připojení ke všem moţným databázím. [13] 8.1.5.2 Instalace PHP instalujeme opět přes ./configure s parametrem --help pro získání správných parametrů
k vytvoření
vhodného
makefilu
./configure
--prefix=/usr/local/php
--with-
apxs2=/usr/local/apache2/bin/apxs --with-openssl=/usr/local --with-mysql=/usr/local/mysql --enable-zendmultibyte kde :
--prefix=/usr/local/php
Prefix nahradíme cestou, kam chceme instalovat tedy /usr/local/php
--with-apxs2=/usr/local/apache2/bin/apxs
Zapne funkci připojení k Apache
--with-openssl=/usr/local
Zapne funkci OpenSSL a cestu ke knihovnám
--with-mysql=/usr/local/mysql
Zapne funkci MySQL a kde se nachází
--enable-zend-multibyte
Zapne multibytovou optimalizaci, která z efektivní výpočet php dotazů
Následně spustíme příkaz make a checkinstall a zkopírujeme defaultní konfigurační soubor příkazem cp php.ini-dist /usr/local/apache2/conf/php.ini 8.1.5.3 Konfigurace Nyní je potřeba upravit soubor /usr/local/apache2/conf/php.ini včetně základního zabezpečení: mysql.default_socket = /tmp/mysql.sock short_open_tag = Off register_globals = Off allow_url_fopen = Off
41
8.1.6 phpMyAdmin 8.1.6.1 Popis phpMyAdmin je nástroj napsán v PHP určený ke správě MySQL přes Webové rozhraní. Velmi přehledně a jednoduše podporuje nejuţívanější operace MySQL, jako jsou správa: databází tabulek polí indexů uţivatelů práv 8.1.6.2 Instalace Pokud je na serveru MySQL, pak stačí, kdyţ se staţený phpMyAdmin dekomprimuje a přenese do /var/www/php. 8.1.6.3 Konfigurace Nutné nastavení uţivatelský práva v konfiguračním souboru config.ini.php. $cfgServers[1]['host'] = 'localhost'; $cfgServers[1]['port'] = ''; $cfgServers[1]['adv_auth'] = false; $cfgServers[1]['user'] = 'user'; $cfgServers[1]['password'] = 'password'; $cfgServers[1]['only_db'] = 'mysql'; $cfgServers[1]['verbose'] = '';
#Označuje server, kde MySQL běţí #MySQL port – obvykle necháváme prázdné #Pouţíváme-li nadstandardní autentifikaci #uţivatelské jméno #uţivatelské heslo #omezení na jednu databázi #Slovní označení serveru – zanecháme prázdné
Jelikoţ na našem serveru je spuštěn httpd i MySQL, pak host vyplníme jako localhost, v opačném případě sem patří doména nebo IP adresa databázového serveru. Pokud
bychom chtěli prostřednictvím jednoho phpMyAdmina spravovat více databází, stačí tento blok příkazů napsat znovu, pouze číslo $cfgServers[1] se musí zvýšit vţdy pro kaţdý další server o jedničku (tedy druhý server bude $cfgServers[2]). Na MyPHPadmin přistupujeme ve webovém prohlíţeči na http://„ip adresu„/php.
42
8.1.7 SMTP 8.1.7.1 Popis Pro korektní fungování všech systémů elektronické pošty je nezbytné, aby se jejich jednotlivé části dokázaly mezi sebou správně domluvit. Jde přitom jak o komunikaci mezi poštovními servery a jejich klienty, tak i o komunikaci jednotlivých poštovních serverů mezi sebou (nutnou k tomu, aby si mohly mezi sebou předávat jednotlivé zprávy a tím je doručovat aţ na místo jejich určení). V konkrétním případě „internetové“ elektronické pošty je pro takovouto komunikaci mezi poštovními servery pouţíván protokol jménem SMTP (Simple Mail Transfer Protocol). Podle něj pak dostala své neformální označení i celá koncepce elektronické pošty, pouţívaná v Internetu. Říká se jí „SMTP pošta“. [14] 8.1.7.2 Instalace Server SMTP ke své funkci potřebuje zaloţení uţivatele, postfix a skupiny postfix a postdrop, které zaloţíme příkazy adduser postfix, groupadd postfix a groupadd postdrop, samotný zdrojový kód zkompilujeme příkazem make a balíček nainstalujeme checkinstall. 8.1.7.3 Konfigurace Konfigurační soubory se nalézají v /etc/postfix/ jedná se o main.cf a master.cf. V těchto souborech provedeme několik úprav a sluţbu spustíme. Nejprve zeditujeme main.cf, ve kterém nastavíme doménu v proměnné myhostname a mydomain, na kterou chceme přijímat e-mail: myhostname = mail.impaqsys.net mydomain = impaqsys.net.
Dále inet_interface s příznakem all, abychom mohli přijímat a odesílat emaily z kaţdého rozhraní. Mydestination specifikuje, které emaily končí na našem serveru. Zde je zvoleno, ţe zde končí email mail.impaqsys.net, localhost.impaqsys.net a localhost: mydestination = $myhostname, localhost.$mydomain, localhost
Parametrem mynetworks specifikujeme z jakého rozhraní nebo sítě můţe klient pouţívat smtp serveru, nastavení je přizpůsobeno pouze rozsahu IP adres: mynetworks_style = subnet
Dalším krokem bude nadefinovat rozsah, který můţe smtp pouţívat: 43
Mynetworks = 192.168.0.0./24, 127.0.0.0/8
Uloţíme všechny změny a uzavřeme soubor. Dalším krokem zeditujeme soubor master.cf a zrušíme komentář na řádce 8, čímţ povolíme SMTP na síťovém rozhraní: smtp inet n -n --smtpd
Zbytek konfigurace zanecháme jako implicitní. Poslední krok, který musíme pro tuto sluţbu nastavit, je aliases, který nalezneme v /etc/postfix/aliases, kde nastavíme doručování pošty pro uţivatele root. Protoţe emaily doručované tomuto uţivateli by mohli obsahovat nebezpečný obsah, nastavíme tedy, ţe veškerá pošta pro uţivatele root půjde do schránky postmaster: root: postmaster
8.1.8 POP3d 8.1.8.1 Popis Koncepce protokolu SMTP je jiţ poměrně stará a příliš nepočítá s některými skutečnostmi, které jiţ jsou dnes spíše samozřejmostí. Nepočítá například s tím, ţe poštovní klient a poštovní server poběţí na oddělených počítačích, neboli s tím, co je dnes dokonce velmi typické – ţe uţivatelé pracují se svou poštou (pouštějí si své poštovní klienty) na jiných počítačích, neţ na kterých běţí poštovní server. Protokol SMTP proto nepokrývá vzájemnou komunikaci mezi takovýmito „oddělenými“ poštovními klienty a servery. Lze jej však pouţít alespoň pro jeden ze směrů takovéto komunikace, pro odesílání, resp. pro předávání nových zpráv, určených k odeslání a to od klientského poštovního programu směrem k poštovnímu serveru. Pro opačný směr („převzetí“ došlých poštovních zpráv) nelze protokol SMTP pouţít. Místo něj bylo pro tento konkrétní účel vyvinuto hned několik dalších protokolů, z nichţ nejpouţívanější je dnes protokol POP3 (Post Office Protocol, verze 3). [14] 8.1.8.2 Instalace Server pro vybírání příchozí pošty, například, pro aplikaci outlook se nazývá POP3. Jelikoţ tato sluţba jiţ v naší distribuci je a balíček je jeden z nejnovějších pouze sluţbu spustíme. v /etc/inetd.conf na řádku 66 odstraníme komentářovou značku # pop3 stream top nowait root /usr/sbin/tcpd /usr/sbin/popa3d
44
Znovu spustíme příkazem kill –sighup „pid číslo služby“ – pro zjištění tohoto čísla spustíme příkaz ps z parametrem ax tedy ps ax a vyhledáme pid sluţby /usr/sbin/inetd.
45
9 Závěrečné testování Linuxový server má instalovány sluţby, které jsou od základního web serveru očekávány. Veškeré sluţby jsou konfigurovány na základní nastavení, které lze, při zvýšení nároků uţivatelů, libovolně přizpůsobit. Server má velice dobře dimenzované HW nároky, které jsou schopny pracovat dlouhodobě na plný výkon, aniţ by uţivatel poznal nějaké omezení, coţ pro nás znamená určitou flexibilitu systému. Systém je připraven na umístění na síť, je zabezpečen proti neautorizovanému vniknutí a odpovídá veškerým potřebám, které byly zadány. Server byl otestován v rámci zabezpečení a to testem otevřených portů. Prokázalo se, ţe jsou otevřeny pouze porty sluţeb, které jsou na serveru zprovozněny. Výsledek tedy dokazuje, ţe server splňuje poţadované zabezpečení dle zadání.
46
Závěr Teoretická příprava projektu, jak postupovat při instalaci, sběru informací, jak se jednotlivé programy konfigurují, instalují a příprava instalace samotná by bez projektově řízeného procesu zabrala převáţnou část času, který byl vymezen na samotnou realizaci. Rozfázováním projektu do dílčích celků, jako příprava hardwarové konfigurace serveru, příprava
operačního
systému,
nastudování
funkčnosti
firewallů,
jeho
instalace
a konfigurace a samotná instalace sluţeb, má za výsledek vyšší efektivitu práce. Samozřejmě, jako při kaţdé přípravě, se ukázala mnohá zákoutí, která by při přímé a nepřipravené instalaci nebyla objevena, a tím pádem by mohlo dojít například k destabilizaci jednotlivých sluţeb instalovaných na serveru, nebo ke snadnému neoprávněnému vniknutí do systému. Dále bychom nezjistili, ţe různé instalace jednoho a toho samého programu v různých verzích probíhají zcela rozličně. Verze programů byly vybrány ty nejnovější a na stabilitu otestované distributorem daného programu. Tvrzení a podrobné popisy, které jsou uvedeny v této bakalářské práci, byly autorem implementovány a ověřeny při praktické realizaci v nadnárodní firmě, zabývající se pronájmem výpočetní techniky. Ukázalo se, ţe server je značně naddimenzován pro běţný provoz dané firmy, jako je elektronická pošta a webová prezentace. Vzhledem k plánované potřebě růstu informačních toků, jako je systém „CRM (Customer Relationship Management) – systém řízení vztahů se zákazníkem“ bude server vyhovovat a splňovat podmínky na něj kladené zvýšenými nároky na výpočetní výkon systému.
47
Seznam použité literatury a zdrojů [1] 64bit.cz je internetový obchod se servery, storage a pracovními stanicemi Sun Microsystems s CPU SPARC, AMD Opteron a Intel Xeon, virtualizací VMware, Red Hat linuxem, firewally Juniper a databází Oracle [online]. 2009 Stickfish, s.r.o. [cit. 2009-0420]. Dostupný z WWW: < http://www.64bit.cz>. [2] Leoš Literák. Téma: výběr distribuce [online]. 2002 Stickfish, s.r.o. [cit. 2009-05-02]. Dostupný z WWW: < http://www.abclinuxu.cz/clanky/navody/tema-vyber-distribuce>. [3] Debian – Univerzální operační systém [online]. 2009 [cit. 2009-05-15]. Dostupný z WWW: < http://www.debian.org>. [4] Petr Novický. Moderní souborové systémy – ReiserFS [online]. 2002 Stickfish, s.r.o. [cit. 2009-05-16]. Dostupný z WWW: < http://www.abclinuxu.cz/clanky/system/modernisouborove-systemy-reiserfs>. [5] Michal Vymazal. Linuxové DMZ VI [online]. 2003 Stickfish, s.r.o. [cit. 2009-05-21]. Dostupný z WWW: < http://www.abclinuxu.cz/clanky/bezpecnost/linuxove-dmz-vi>. [6] Martin Pavlíček. Linuxové DMZ IV [online]. 2003 Stickfish, s.r.o. [cit. 2009-05-21]. Dostupný z WWW: < http://www.abclinuxu.cz/clanky/bezpecnost/linuxove-dmz-iv>. [7] PETERKA , Jiří. Co je Internet ? Computerworld [online]. 1992, č. 8 [cit. 2009-06-02]. Dostupný z WWW: < http://www.earchiv.cz/a92/a208c200.php3>. [8] Martin Pavlíček. Linuxové DMZ VII [online]. 2003 Stickfish, s.r.o. [cit. 2009-06-02]. Dostupný z WWW: < http://www.abclinuxu.cz/clanky/bezpecnost/linuxove-dmz-vii>. [9] Michal Kára. Jak na OpenSSL [online]. 2003 www.root.cz [cit. 2009-06-20]. Dostupný z WWW: < http://www.root.cz/clanky/jak-na-openssl>.
48
[10] Richard Plischke. Lexikon systému Mail602 Messaging Server 4.5. SSL obecně [online] 2004 [cit. 2009-06-02]. Dostupný z WWW: < http://www.software602.cz/lexik602/msg00050.htm>. [11] Michal Merta. WWW server [online] 2002 [cit. 2009-06-02]. Dostupný z WWW: < http://www.fi.muni.cz/~kas/p090/referaty/2002podzim/skupina14/apache.html>. [12] Český manuál k relačnímu databázovému systému MySQL. Popis nejuţitečnějších funkcí včetně příkladů [online]. 2005 [cit. 2009-06-03]. Dostupný z WWW: < http://mm.gene.cz>. [13] PHP výkladový slovník. [online] 2009 Stickfish, s.r.o. [cit. 2009-06-03]. Dostupný z WWW: < http://www.abclinuxu.cz/slovnik/php>. [14] PETERKA , Jiří. Architektura elektronické pošty. CHIPweek [online]. 1998, č. 7 [cit. 2009-06-03] Dostupný z WWW: < http://www.earchiv.cz/a98/a807k180.php3>. [15] Firewall – Wikipedie, otevřená encyklopedie. [online] 2009 [cit. 2009-07-01] Dostupný z WWW: < http://cs.wikipedia.org/wiki/Firewall>.
Software The Apache Software Foundation [online] The Apache Software Foundation [cit. 2009-0602]. Dostupný z WWW: < www.apache.org>. PHP: Hypertext preprocesor [online]. The PHP Group [cit. 2009-06-02]. Dostupný z WWW: < www.php.net>. MySQL :: The word`s most populár open source diabase [online] MySQL AB, 2008-2009 Sun Microsystems, Inc. [cit. 2009-06-02]. Dostupný z WWW: < www.mysql.com>. phpMyAdmin [online] phpMyAdmin devel team [cit. 2009-06-02]. Dostupný z WWW: < www.phpmyadmin.net>. CheckInstall [online] Felipe Eduardo Sánchez Díaz Durán [cit. 2009-06-02]. Dostupný z WWW: < checkinstall.izto.org>. 49
The Postfix [online] [cit. 2009-06-02]. Dostupný z WWW: < www.postfix.org>.
50
Přílohy
51
Příloha č. 1 Technická parametry A85-ZWZ2-H-8GC-JL8 Vlastnosti: Nový dvouprocesorový x84-64 server Sun Aţ 8-cestný server v 1U provedení 4 GB Ethernet porty Aţ 64 GB kapacity RAM Minimální spotřeba Zjednodušuje management Podporuje všechny operační systémy Počet CPU: 2 x CPU: AMD Opteron 2384 quad-core, 2.7 GHz, L2 2048 kB, Socket F Paměť RAM: 4x 8 GB DDR-2 ECC, 667 MHz Max. RAM:
64 GB in 16 DIMM modules
Pevné disky
RAID 1, 0 na desce.
Volitelně 2 x SATA II HDD, k dispozici 250 GB nebo 500 GB 7200 RPM disky. Moţno osadit běţnými SATA II HD do rámečků dodávaných společně se serverem. Volitelná
PATA DVD-ROM mechanika.
Ethernet
Čtyři integrované porty 10/100/1000Base-T Ethernet
I/O
Grafický chip ASPEED AST2000 Šest USB 2.0 portů 2 sloty PCI-Express x8 včetne PCI reiseru
Servisní procesor Lights Out Management (LOM) v základu. IPMI 2.0 in-band and out-of-band management. Zdroj
450 W
Rozměry
43x425x633
Hmotnost
12 kg [1]
Hardwarová podpora operačních systémů Solaris S10 U2 (06/06) 32-bit Solaris S10 U2 (06/06) 64-bit Red Hat Enterprise Linux 3, U8 AS/ES/WS Edition 32-bit, 64-bit Red Hat Enterprise Linux 4, U4 AS/ES/WS Edition 32-bit, 64-bit SUSE Linux Enterprise Server 9, SP3 (SLES 9) 64-bit Windows Enterprise and Standard Edition 64-bit Windows Enterprise and Standard Edition 32-bit VMware ESX Server 3.0 Slackware Linux 12.2
52
Příloha č. 2 Obrázky
Obrázek 2 (úvodní obrazovka)
Obrázek 3 (login)
53
Obrázek 4 (výběr partition makera)
Obrázek 5 (rozdělení disků)
Obrázek 6 (zápis do partition table)
54
Obrázek 7 (ukončení programu)
Obrázek 8 (start průvodce instalací)
Obrázek 9 (výběr partition)
55
Obrázek 10 (kontrola a format partition)
Obrázek 11 (výber filesystému)
Obrázek 12 (zdroj instalace)
56
Obrázek 13 (výběr typů balíčků)
Obrázek 14 (výběr typu instalace)
Obrázek 15 (zdroj kernelu)
57
Obrázek 16 (výběr kernelu)
Obrázek 17 (vytvoření boot diskety)
Obrázek 18 (výběr modemu)
58
Obrázek 19 (zápis LiLo)
Obrázek 20 (výběr myši)
Obrázek 21 (nastavení sítě)
59
Obrázek 22 (výběr při startu spouštěných sluţeb)
Obrázek 23 (typ času)
Obrázek 24 (volba root hesla)
60
Obrázek 27 (seznam instalačních balíčků)
61
Příloha č. 3 Zaloţení uţivatele Login name for new user []: pnovak User ID ('UID') [ defaults to next available ]: Initial group [ users ]: Additional groups (comma separated) []: Home directory [ /home/pnovak ] Shell [ /bin/bash ] Expiry date (YYYY-MM-DD) []: New account will be created as follows: Login name.......: pnovak UID..............: [ Next available ] Initial group....: users Additional groups: [ None ] Home directory...: /home/pnovak Shell............: /bin/bash Expiry date......: [ Never ] This is it... if you want to bail out, hit Control-C. Otherwise, press ENTER to go ahead and make the account. Creating new account... Changing the user information for pnovak Enter the new value, or press ENTER for the default Full Name []: Petr Novak Room Number []: 21 Work Phone []: 4646464 Home Phone []: 128547 Other []: Changing password for pnovak Enter the new password (minimum of 5, maximum of 127 characters) Please use a combination of upper and lower case letters and numbers. New password: Bad password: too simple. Warning: weak password (enter it again to use it anyway). New password: Re-enter new password: Account setup complete.
62
Příloha č. 4 Stavový filtr #/bin/sh # # Cesta k programu iptables IPTABLES="/usr/sbin/iptables" # # Vase IP adresa a vnejsi rozhrani INET_IP="217.11.246.177" INET_IFACE="eth0" # # smazani predeslich pravidel $IPTABLES -F INPUT $IPTABLES -F OUTPUT $IPTABLES -F FORWARD $IPTABLES -t nat -F PREROUTING $IPTABLES -t nat -F POSTROUTING $IPTABLES -t mangle -F PREROUTING $IPTABLES -t mangle -F POSTROUTING $IPTABLES -t mangle -F INPUT $IPTABLES -t mangle -F OUTPUT $IPTABLES -t mangle -F FORWARD # #Implicitni_zakaz $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP # # povoleneINPUT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 22 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 25 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 110 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 80 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 10000 -j ACCEPT # Zahazovat a logovat (max. 5 x 3 pakety za hod) $IPTABLES -N logdrop $IPTABLES -A logdrop -m limit --limit 5/h --limit-burst 3 -j LOG --log-prefix "Rezervovana adresa: " $IPTABLES -A logdrop -j DROP # # pravidla_syn_flood $IPTABLES -N syn-flood $IPTABLES -A syn-flood -m limit --limit 1/s --limit-burst 8 -j RETURN $IPTABLES -A syn-flood -j DROP $IPTABLES -N syn-flood2 $IPTABLES -A syn-flood2 -m limit --limit 1/s --limit-burst 32 -j RETURN $IPTABLES -A syn-flood2 -j DROP # # uziti syn flood $IPTABLES -A FORWARD -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A INPUT -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 22 -m limit --limit 12/h -j LOG $IPTABLES -A INPUT -i $INET_IFACE -p icmp -j syn-flood $IPTABLES -A INPUT -i $INET_IFACE -p tcp --syn -j syn-flood $IPTABLES -A FORWARD -i $INET_IFACE -p tcp --syn -j syn-flood2 #
63
Příloha č. 5 Konfigurace MySQL [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 16K max_allowed_paket = 1M table_cache = 4 sort_buffer_size = 64K net_buffer_length = 2K thread_stack = 64K skip-networking server-id = 1 [mysqldump] quick max_allowed_paket = 16M [mysql] no-auto-rehash [isamchk] key_buffer = 8M sort_buffer_size = 8M [myisamchk] key_buffer = 8M sort_buffer_size = 8M [mysqlhotcopy] interactive-timeout
64