Česká zemědělská univerzita v Praze Provozně ekonomická fakulta Katedra informačního inženýrství Diplomová práce Konfigurace Linuxového serveru Jiří Malák 2011 ČZU v Praze
Prohlášení Prohlašuji, že jsem diplomovou práci na téma Konfigurace Linuxového serveru vypracoval samostatně pod vedením Ing. Marka Picky a použil jsem jen literární prameny, které cituji a uvádím v seznamu použité literatury. V Praze dne: 30.4.2009.....
Poděkování Děkuji vedoucímu diplomové práce panu Ing. Markovi Pickovi za pozornost, kterou věnoval mé práci, a za jeho odborné rady při vypracování této diplomové práce.
Konfigurace Linuxového serveru -------------------------------------------------------------------- Linux server configuration Souhrn Práce se zabývá konfigurací Linuxového serveru vhodného pro malou firmu. Ve své teoretické části popisuje základní vlastnosti operačního systému Linux a síťové služby se zvláštním zřetelem na webové služby. V práci jsou navrhnuta doporučení pro konfiguraci těchto služeb. V praktické části je provedena konfigurace celého serveru. Na realizovaném serveru jsou provedeny výkonnostní testy webových služeb. Jsou otestovány různé konfigurace webových serverů. Konfigurace jsou upraveny na základě provedených testů. Testy se vztahují k rychlosti zpracování požadavků. Na základě výsledků testů jsou zhodnoceny jednotlivé konfigurace a stanovena doporučení vhodné konfigurace. Klíčová slova Linux, server, konfigurace, web, Apache, Nginx, testy, výkon, služby Summary This work is related to configuration of Linux server suitable for small company. Basic properties of linux system and network services with particular focus on web services are described in the theoretical part. Recommendations for configuration of the services are proposed in the work. Configuration of the whole server is described in the practical part. Performance tests of web services are accomplished on the experimental servers. Various configurations of web servers are tested. The configurations are chosen on the basis of the performed tests. The tests are related to speed of requests processing. Individual configurations are evaluated and recommendations for suitable configuration are discussed on the basis of test results. Keywords Linux, server, configuration, web, Apache, Nginx, tests, performance, services 6
Obsah 1 Úvod... 10 2 Cíl práce a metodika... 12 2.1 Cíl práce... 12 2.2 Metodika... 12 3 Operační systém Linux... 14 3.1 Uživatelé... 14 3.1.1 Řízení přístupu... 15 3.2 Procesy a vlákna... 16 3.2.1 Kontext procesu... 17 3.2.2 Přidělování procesoru... 18 3.2.3 Řízení procesů... 18 3.3 Souborový systém... 19 3.3.1 Přístupová práva... 19 4 Síťové služby... 21 4.1 Základní síťové služby... 21 4.1.1 TCP/IP... 21 4.1.2 DHCP... 21 4.1.3 DNS... 22 4.2 Samba... 24 4.3 Poštovní server... 25 4.4 Poštovní server Postfix... 26 4.4.1 Zpracování pošty... 27 4.4.2 Nastavení poštovního serveru... 28 4.4.3 Filtrování obsahu pošty... 29 4.4.4 Navrhované řešení... 29 4.5 WWW server... 30 4.6 WWW server Apache... 33 4.6.1 Architektura Apache... 34 4.6.2 Konfigurace serveru Apache... 37 4.6.3 Dynamické generování obsahu... 39 4.6.4 Zabezpečení... 40 4.6.5 SSL... 41 4.7 WWW server Nginx... 42 4.7.1 Architektura Nginx... 43 4.7.2 Konfigurace Nginx... 45 7
4.7.3 Dynamické generování obsahu... 48 4.7.4 Zabezpečení... 48 5 Praktické nastavení serveru... 51 5.1 Bezpečnostní model... 51 5.2 Instalace... 52 5.3 Nastavení TCP/IP... 52 5.4 Nastavení DHCP serveru ISC (4.1.2)... 54 5.5 Nastavení DNS serveru BIND (9.7.3)... 55 5.6 Nastavení Samba serveru (3.5.3)... 57 5.7 Nastavení poštovního serveru... 59 5.7.1 Nastavení Postfix (2.7.1)... 59 5.7.2 Nastavení Dovecot (1.2.11)... 60 5.7.3 Nastavení webové aplikace pro přístup k poště... 62 5.8 Nastavení webového serveru Apache (2.2.15)... 63 5.8.1 Nastavení podpory PHP... 65 5.9 Nastavení webového serveru Nginx (0.8.54)... 66 5.9.1 Nastavení podpory PHP... 68 6 Hodnocení alternativních konfigurací... 70 6.1 Testovací sestavy... 70 6.2 Testovací konfigurace... 70 6.3 Nastavení parametrů... 72 6.4 Metodika testování... 73 6.5 Typy testů... 74 6.5.1 Výkonnostní testy... 74 6.5.2 Statický test (test S1)... 75 6.6 Výsledky testů... 75 6.6.1 Test HTTP serverů (test H1)... 75 6.6.2 Test HTTP serverů s podporou PHP... 78 6.6.3 Statický test zdrojů (S1)... 82 6.7 Zhodnocení konfigurací... 83 7 Závěr... 85 8 Seznam použitých zdrojů... 87 9 Přílohy... 90 8
Seznam obrázků Obrázek 1 - Přenos pošty internetem... 25 Obrázek 2 - zpracování zpráv poštovním serverem Postfix... 27 Obrázek 3 - Zjednodušené schéma komunikace klienta a serveru... 32 Obrázek 4 Architektura Apache... 34 Obrázek 5 - Architektura jádra Apache... 35 Obrázek 6 - MPM prefork... 37 Obrázek 7 - MPM worker... 37 Obrázek 8 - Nginx a procesy... 44 Obrázek 9 - Hierarchie konfiguračního souboru nginx.conf... 47 Obrázek 10 - Vzhled webové aplikace Roundcube... 62 Seznam tabulek Tabulka 1 - Podíl WWW serverů leden 2011... 33 Tabulka 2 - Maximálně naměření počet požadavků za sekundu test H1... 76 Tabulka 3 - Maximálně naměřený počet požadavků za sekundu testy P1 a P2... 78 Tabulka 4 - Využití paměťi v MB při 100 session... 83 Seznam grafů Graf 1 - využití CPU v testu H1... 76 Graf 2 - využití paměti v testu H1... 77 Graf 3 - průměrná doba odpovědi v testu H1... 77 Graf 4 - využití CPU v testu P1... 79 Graf 5 - využití paměti v testu P1... 80 Graf 6 - průměrná doba odpovědi v testu P1... 80 Graf 7 - využití CPU v testu P2... 81 Graf 8 - využití paměti v testu P2... 82 Graf 9 - průměrná doba odpovědi v testu P2... 82 9
1 Úvod Operační systém Linux vznikl z unixového systému Minix. U jeho zrodu stál Linus Torvald, který oslovil širokou programátorskou veřejnost, aby se podílela na vývoji jádra operačního systému. Jádro dostalo název Linux a bylo spojeno s operačním systémem GNU, kterému chybělo jádro zajišťující chod systému. Tímto spojením vznikl OS GNU(GNU s Not Unix) /Linux (dále Linux). V dnešní době však už není vývoj Linuxu pouze v rukou dobrovolníků. Rozvoj Linuxu je z velké části realizován placenými vývojáři, které zaměstnávají velké mezinárodní firmy jako například Rad Hat, IBM či Novell. Vytvoření funkčního operačního systému spojením jádra, ostatních služeb a aplikací však není jednoduchá věc, proto vznikají tzv. distribuce. Distribuce umožňují uživatelům snadnou instalaci, přívětivé uživatelské prostředí a výběr různých aplikačních sad. S rozšířením distribucí vzrostl zájem o tento operační systém. I přes nárůst zájmu však na desktopech není příliš rozšířen. Linux je využíván zejména na serverech a to především díky vysoké výkonnosti, bezpečnosti a spolehlivosti. Další výhodou používání Linuxu na serveru je jeho finanční dostupnost - je zdarma. Přestože je zdarma, platí větší firmy využívající Linux, výrobcům distribucí za speciálně upravené distribuce či podporu. Vzhledem k tomu, že Linux je zdarma, je oblíben u malých firem, které provozováním Linuxu ušetří na výdajích za nákup licencí. Avšak provozování vlastního Linuxového serveru klade vyšší nároky na znalosti IT pracovníků. Tato diplomová práce se věnuje konfiguraci Linuxového serveru pro malou firmu. Nejdříve jsou popsány základní vlastnosti a chování operačního systému Linux. Dále se práce zabývá popisem základních služeb poskytovaných interním serverem v malé firmě. Jedná se o Samba server (náhrada Windows serveru, sdílení souborových systémů a tiskáren), poštovní server včetně IMAP serveru a webový server. V další části práce jsou pak jednotlivé služby nastaveny s podrobným komentářem. 10
S dynamickým rozvojem internetu a zejména webových aplikací, se stávají webové servery klíčovým prvkem mnoha firem. Proto je tato práce zaměřena na podrobný popis dvou softwarových implementací webového serveru (Apache a Nginx). Oba tyto webové servery budou nakonfigurovány a následně podrobeny výkonnostním testům v prostředí místní sítě. Téma diplomové práce autor zvolil z důvodu zájmu o operační systém Linux. Autor se poprvé s tímto operačním systémem seznámil při výuce předmětu Operační systémy II a zaujal ho zejména svojí dostupností, stabilitou a možností vlastní modifikace. Autor práce si prohloubil své znalosti a zkušenosti při správě svého vlastního domácího Linuxového serveru. 11
2 Cíl práce a metodika 2.1 Cíl práce Cílem práce je popsat konfiguraci serveru pro prostředí malé firmy a otestování výkonnosti několika implementací webových serverů. V rámci vymezeného cíle budou nejdříve analyzovány obecné vlastnosti operačního systému Linux a následně popsány základní síťové služby (DHCP, DNS, Samba server, poštovní server a webový server), se zaměřením na popis dvou softwarových implementací webového serveru. Dále bude realizována implementace poznatků v podobě praktického nastavení serveru malé firmy se zaměřením na jednotlivé sítové služby. Dále budou otestovány a zhodnoceny dvě softwarové implementace webových serverů, včetně několika alternativních konfigurací. 2.2 Metodika K vypracování diplomové práce budou použity dostupné literární a internetové zdroje uvedené v seznamu literatury. Teoretická část diplomové práce vznikne hlavně na základě zahraničních/cizojazyčných dokumentů dostupných na internetu. Z českých zdrojů bude použita hlavně kniha E.Nemetha, G. Snydera a T. Heina Kompletní příručka administrátora, 2008 a Linux administrace serveru Apache od Ch. Auldse. Internetové zdroje budou podrobeny kritickému zhodnocení, protože ne všechny mají odpovídající validitu. Čerpáno bude i ze starších zdrojů. I přes rychlý vývoj OS Linux, zůstává základní konfigurace téměř nezměněna. V první části práce autor nastíní důležité vlastností OS Linux. Uvede zde obecné vlastnosti a základní principy jako například řízení přístupu či způsob zpracování programů. V druhé části autor popíše základní síťové služby, Samba server, poštovní server a dvě softwarové implementace webového serveru. U každé služby budou nejdříve uvedena teoretická východiska a následně autorův návrh na jejich 12
implementaci v praktické části. Z důvodů rozsáhlosti tématu se autor nebude věnovat zabezpečení. V praktické části autor uvede vlastní konfiguraci serveru pro malou firmu. Veškeré navržené nastavení bude ověřeno na vlastním serveru, který bude charakterizován v praktické části práce. Konfigurace serveru bude realizována z prostředí příkazového řádku. Zhodnocení konfigurací webových serverů bude provedeno na základě testů, které proběhnou dle stanovené testovací metodiky. Metodika testování bude popsána v šesté kapitole. 13
3 Operační systém Linux Operační systém Linux spadá do skupiny Unix systémů. Standardy používané Unix systémy jsou spravovány konsorciem Open Group, které je držitelem ochranné známky Unix. Operační systém Linux je víceúlohový a víceuživatelský. Podporuje různé 32bitové i 64bitové architektury. Proto lze dnes Linux nalézt například v palubních počítačích automobilů či v myčce na nádobí. Linux se skládá z jádra a systémových programů. Jádro operačního systému je vrstva mezi hardwarem a běžícími procesy. Mezi jeho hlavní úkoly patří ovládat veškerý hardware počítače, spravovat procesy, paměť a řídit přerušení. Systémové programy slouží k základní práci se systémem a jsou dodávány s operačním systémem (například interprety příkazů, programy pro podporu síťové komunikace či programy pro práci se systémy souborů). [1 str. 15] 3.1 Uživatelé Uživatelé v operačním systému Linux jsou identifikováni uživatelským jménem. Všem uživatelům systému proto musí být přiděleno jednoznačné uživatelské jméno. Interně operační systém Linux používá dva identifikátory - uživatel (UID) a skupina (GID). Ke každému uživatelskému jménu je přiřazeno unikátní číslo UID (User ID). Druhým identifikátorem je skupina. Skupiny mají svoje jména a identifikační čísla podobně jako uživatelé. Identifikační číslo skupiny se označuje GID (Group ID). Použití UID a GID čísel umožňuje efektivní identifikaci jádrem operačního systému. [2 str. 132] Každý uživatel musí být členem alespoň jedné skupiny, a jedna z uživatelových skupin je vždy nastavena jako výchozí. Tato skupina se používá například pro vytváření nových souborů a adresářů. [2 str. 133] V Linuxu obecně existují dva typy uživatelů. První je speciální uživatel root (superuživatel) a druhým typem jsou ostatní uživatelé (běžní uživatelé). 14
Účet root může být v systému jen jeden, a využívá se pro správu operačního systému. Dovoluje provádět nastavení a operace, které nejsou dostupné běžným uživatelům. Root má UID = 0 a může provádět jakékoliv operace v operačním systému bez omezení. Například má přístup ke všem souborům a procesům bez ohledu na aktuálně nastavená přístupová práva. Root je také vlastníkem všech systémových souborů a procesů. [3 str. 95] Ostatní uživatelé mohou provádět pouze činnosti, na které mají oprávnění, a pracovat se soubory, ke kterým mají oprávnění. Oprávnění se vyhodnocují operačním systémem na základě UID a GID. [2 str. 134] 3.1.1 Řízení přístupu Řízení přístupu zajišťuje jádro operačního systému Linux. Základním schématem pro řízení přístupu v operačním systému Linux je volitelné řízení přístupu (DAC - Discretionary Access Control). Volitelnost spočívá v tom, že přístupová práva k objektu definuje identifikovaný subjekt s příslušnými oprávněními (většinou vlastník objektu). Největším problémem tohoto přístupu je možnost, že identifikovaný subjekt špatně nadefinuje přístupová práva, případně zruší všechna přístupová práva. [4] [5] DAC definuje základní řízení přístupu k objektům (například soubory, adresáře, I/O zařízení) v systému. Poskytuje omezení přístupu k objektům na základě identity subjektů (například uživatele či skupiny), kteří k objektům přistupují. V případě, že má objekt nadefinována přístupová práva, systém ověří, zda je daný identifikovaný subjekt splňuje. Pokud přístupová práva identifikovaný subjekt splňuje, jsou mu povolena operace s objektem podle definovaných práv. [5] [6] V Linuxu je možné implementovat jiné metody řízení přístupu pomocí bezpečnostních modulů v jádře (LSM Linux Security Modules). [4] Například povinné řízení přístupu (MAC Mandatory Access Control) či řízení přístupu rolemi (RBAC Role Based Access Control). V případě MAC jsou přístupová práva k objektům definována správcem systému, a subjekty je nemohou měnit (ani v případě vlastnictví). MAC v Linuxu je možno realizovat pomocí LSM SELinux, AppArmor a Tomoyo. [6] 15
RBAC je alternativou k DAC a MAC typům řízení přístupu. V RBAC je řízení přístupu založeno na rolích, které jsou přiřazeny subjektům v systému (například manažer, prodavač, správce obsahu webových stránek, atd.). Role mají jasně definována přístupová práva k objektům v systému. RBAC je možné implementovat pomocí LSM SELinux. [7] 3.2 Procesy a vlákna Linux je víceúlohový systém, což znamená, že současně zpracovává více úloh (procesů). Proces je běžící program, který využívá systémové prostředky. Obecně lze procesy rozdělit na uživatelské (spuštěné běžným uživatelem) a systémové (spuštěné automaticky při startu operačního systému či na základě nějaké události). [1 str. 10] Mezi systémové procesy patří také procesy běžící na pozadí, tzv. démoni (daemons), kteří vykonávají specifické činnosti. Většina démonů se aktivuje během spouštění systému a pokračují v činnosti až do svého ukončení. [8 str. 43] Každý proces běží pod UID a GID určitého uživatele. Přístup je řízen na základě přístupových práv tohoto uživatele. Procesy jsou identifikovány jednoznačným identifikátorem PID (Process ID), který je celé kladné číslo. Při spuštění dalšího procesu je použito v řadě navazující číslo. V případě, že je proces ukončen, není jeho číslo znovu použito dokud systém nedojde až na konec používaného rozsahu čísel. Poté systém začne číslovat od začátku. [1 str. 59] Při startu systému je spuštěn proces init, který má vždy PID = 1. Všechny další procesy jsou jeho potomci a jeho ukončení vede k vypnutí systému. Další procesy vznikají voláním služby systému fork(). Init tedy zavolá službu fork a spustí další systémové procesy. Po zavolání služby fork() vytvoří systém nový proces, který je přesnou kopií procesu, jenž službu zavolal, jeho PID je však vždy změněno. [2 str. 94] Proces, který službu fork() zavolal, se nazývá rodič a nově vzniklý proces je jeho potomek. Každý proces má také ukazatel PPID (Parent Process ID), který udává PID rodičovského procesu. V případě, že má být proces řízen jiným programem, musí potomek použít volání služby exec(), která spustí nový řídící program. [1 str. 58] 16
Vlákno (thread) je instance hlavního procesu (procesu, který vytváří vlákno). Vlákno nemůže existovat samostatně bez hlavního procesu. Sdílí přidělené prostředky hlavního procesu s ostatními vlákny tohoto procesu, a je identifikováno pomocí TID (Thread ID). TID hlavního procesu je rovno PID, a všechna vlákna hlavního procesu mají stejné PID. Při spuštění programu se vytvoří hlavní proces, který může spustit další vlákna pomocí služby clone(). Všechna tato vlákna pak běží nezávisle na sobě (paralelně), a mohou vykonávat různé části programu. [2 str. 94] 3.2.1 Kontext procesu Proces má svůj uživatelský a systémový kontext. Uživatelský kontext procesu je obsah jeho adresového prostoru a uživatelských registrů procesoru. Adresový prostor se skládá z programového kódu, dat a zásobníku. Programový kód obsahuje strojové instrukce spuštěného programu, oblast dat pak programem definovaná data. Lokální proměnné, parametry volání funkcí a návratové adresy se ukládají do zásobníku. Uživatelský kontext tvoří obsah pracovních a stavových registrů. [1 str. 57] Systémový kontext procesu jsou informace, které operační systém používá pro řízení procesů. Například obsah systémových registrů, tabulky paměťových stránek a systémového zásobníku. Tyto informace jsou uloženy v tabulce procesů a v uživatelské oblasti (tzv. u-area). [1 str. 57] Tabulka procesů obsahuje informace, které systém potřebuje mít dostupné i v případě, že daný proces neběží. Například PID, stav procesu, priorita procesu, spotřebovaný procesorový čas, pole dosud zaslaných signálů, ukazatel do u-area atd. Tabulka procesů je neustále přístupná operačnímu systému v hlavní paměti. [1 str. 57] U-area obsahuje informace, které nemusí být dostupné. Jedná se zejména o UID a GID, aktuální a kořenový adresář, I/O parametry, tabulku deskriptorů otevřených souborů a další. [1 str. 57] 17
3.2.2 Přidělování procesoru V jednu chvíli může být zpracováván pouze jeden proces na jednom procesoru (CPU Central Processing Unit). O tom, kterým procesům bude tento procesor přidělen, rozhoduje plánovač. Procesy jsou vybírány z tabulky procesů, jenž mohou být spuštěny. Výběr je proveden na základě statické priority pohybující se v intervalu 0-99. Vždy platí, že k běhu je vybrán proces s největší statickou prioritou. [9] Pokud je plánovačem vybrán jiný proces ke zpracování, musí operační systém provést změnu kontextu. Tato změna zahrnuje změnu obsahu u-area a obnovení obsahu pracovních, stavových a systémových registrů nově zařazeného procesu. Samotná změna kontextu závisí na architektuře, na které je systém provozován, a není součástí plánovače. Změna kontextu je většinou velmi časově náročná, a proto je vhodné se jí vyhýbat. [1 str. 153] [9] 3.2.3 Řízení procesů Běžící proces lze ovlivnit pomocí signálů. Pokud proces přijme signál, může nastat jedna ze dvou situací. V případě, že má proces definovanou rutinu pro zpracování daného signálu, tato rutina se provede. Tomuto postupu se říká zachycení signálu. Pokud rutina není definována, jádro podnikne s procesem implicitní akci, jenž může být pro každý signál jiná, ať už se jedná o ukončení procesu, jeho pozastavení nebo odblokování. [2 str. 95] Proces může signály ignorovat či zablokovat. V prvním případě je signál ignorován a nemá na proces žádný vliv. Zablokovaný signál je ignorován, avšak je zařazen do fronty pro dodání. Proces ho může zpracovat později po jeho odblokování. [2 str. 95] Některé signály nemohou být zachyceny, blokovány či ignorovány. Jedná se o signály KILL a STOP. Signál KILL ukončí proces na úrovni operačního systému, tudíž proces tento signál nikdy neobdrží. Signál STOP zastaví proces až do přijetí signálu CONT, který obnoví jeho činnost. [2 str. 96] 18
3.3 Souborový systém Linux, podobně jako ostatní Unixové operační systémy, používá hierarchický souborový systém se stromovou strukturou. V systému existuje pouze jeden kořenový adresář označený '/'. Další souborové systémy se pak mohou připojit do kterékoli větve souborového systému. [8 str. 16] Hlavním účelem souborového systému je efektivně a bezpečně číst/ukládat data z/do souborů. Většina Linuxových distribucí používá implicitně souborový systém ext3 / ext4, nabízí však i jiné souborové systémy, jako například ReiserFS, JFS, XFS, ext2 a síťový souborový systém (NFS). Dále podporuje souborové systémy ostatních operačních systémů, jako například FAT, NTFS apod. Volba souborového systému může výrazně ovlivnit výkonnost i bezpečnost celého systému. [2 str. 108] 3.3.1 Přístupová práva Každý objekt v Linuxu (soubor, program či spuštěný proces) má nastavena přístupová práva. Pro soubory tato práva definují, kdo má oprávnění soubory číst, měnit či spouštět. U spuštěných procesů nebo běžících programů je tím řečeno, kdo má práva tyto procesy zastavovat či s nimi jinak manipulovat. To, jak jsou přístupová práva nastavována, závisí na metodě řízení přístupu. Základní metoda řízení přístupu DAC využívá bitů oprávnění případně bitů setuid, setgid a sticky. [1 str. 78] [2 str. 118] Bitů oprávnění je devět a určují, které operace mohou subjekty s objekty provádět a kdo je může provádět. Práva se specifikují pro tři kategorie, a to pro vlastníka, skupinu a ostatní uživatele. Pro každou kategorii jsou rezervovány 3 bity. První bit definuje právo číst, druhý bit právo zápisu a třetí bit právo spouštění (v případě adresáře tento bit znamená právo čtení z adresáře). Jestliže je právo přiděleno, odpovídající bit se rovná 1, pokud přiděleno není, daný bit je nastaven na hodnotu 0. [2 str. 118] Bity setuid a setgid mají svůj význam hlavně u programů a procesů. Jsou nadstavbou klasických oprávnění (9 bitů), a umožňují řízené předávání přístupových práv. Oprávnění setuid a setgid má význam hlavně u programů a procesů. V případě, 19
že má program nastavený setuid nebo setgid bit, převezme práva vlastníka (nebo skupiny) programu, nikoliv toho, kdo jej spustil. To umožňuje například běžnému uživateli spustit program jako root (změna hesla do systému apod.). [1 str. 79] [2 str. 119] Root může ovlivnit nastavení výchozího oprávnění objektů. V případě, že uživatel vytvoří nový objekt, bude automaticky mít rootem definovaná přístupová práva. 20
4 Síťové služby 4.1 Základní síťové služby Operační systém Linux podporuje více síťových rozhraní a standardně používá komunikační protokol TCP/IP (Transmission Control Protocol/Internet Protocol). Může však používat i další protokoly, například IPX (Internetwork Packet Exchange) a SPX (Sequenced Packet Exchange). 4.1.1 TCP/IP Pro konfiguraci síťového rozhraní můžeme použít dva typy nastavení, statické nebo dynamické. Statické nastavení se provádí použitím příkazů (například ifconfig či ip) nebo přidáním záznamů do konfiguračních souborů. Dynamické nastavení používá DHCP (Dynamic Host Configuration Protocol), který umožňuje automaticky nastavit všechny potřebné konfigurační parametry pro síťovou komunikaci. [3 str. 359] Základní konfigurační parametry pro IP protokol jsou IP adresa, síťová maska, výchozí brána a DNS (Domain Name System) server. [2 str. 321] 4.1.2 DHCP Dynamické nastavení IP konfigurace síťových rozhraní se provádí pomocí DHCP protokolu. DHCP protokol automaticky nastavuje síťové konfigurační parametry. DHCP server přiděluje síťové konfigurační parametry na základě požadavku klienta, který posílá požadavek serveru při startu systému. [3 str. 360] DHCP server přiděluje konfigurační parametry na základě MAC adresy přijatého požadavku. Parametry poskytnuté DHCP serverem se ukládají do interní databáze a jsou platné na předem stanovenou dobu (tzv. lease time). DHCP server musí přidělit minimálně IP adresu, dále může přidělit síťovou masku, výchozí bránu DNS servery a další nakonfigurované parametry. Klient si musí požádat o obnovení přidělených parametrů před vypršením jejich platnosti. Po vypršení lease time může být IP adresa přidělena jinému klientovi. DHCP server musí mít definovaný rozsah IP adres, které může přidělit klientům. Standardně je IP adresa dynamicky přidělována z tohoto rozsahu. 21
V případě, že je požadována pevná IP adresa pro klienta, je možné konfigurovat požadovanou IP adresu pro příslušnou MAC adresu klienta. Tím se zajistí, že klient obdrží vždy stejnou IP adresu. [2 str. 335] Pro IP konfiguraci síťových rozhraní v naší firmě použijeme dynamickou konfiguraci pomocí DHCP. DHCP server bude klientům ve firmě poskytovat IP adresy, masku sítě, výchozí bránu, DNS server a interní doménu. Z důvodu dostatečného počtu IP adres v síti nastavíme lease time na délku jednoho dne. Protože pro interní doménu bude použit DNS server, je nutné zajistit aktualizaci IP adres v příslušné doméně. Bude nutné nakonfigurovat DHCP a DNS server pro použití DDNS (Dynamic DNS) protokolu, který tuto aktualizaci zajistí. 4.1.3 DNS DNS se primárně používá pro překlad doménového jména na IP adresu, ale obecně může poskytovat i další informace svázané s doménovým jménem. Existují tři druhy jmenných serverů. Primární DNS servery, které jsou označovány jako autoritativní a jsou na nich uložena veškerá data příslušné domény, včetně informací o všech subdoménách této domény. Každá doména musí mít svůj primární DNS server na kterém je uložena konfigurace dané domény. [3 str. 226] Sekundární DNS servery udržují kopie dat z primárních serverů pro příslušné domény. Sekundární servery si automaticky aktualizují informace z primárních serverů buď na základě konfiguračních údajů v doméně, nebo na základě upozornění z primárního serveru, že došlo ke změně údajů v doméně. [3 str. 226] Třetím druhem jmenných serverů jsou pomocné servery (caching servery). Tyto servery nejsou registrovány v žádné doméně a neobsahují žádné konfigurační soubory, pouze si ukládají odpovědi na dotazy, které jimi prošly, což zvyšuje rychlost odpovědi a snižuje zatížení ostatních DNS serverů. V současnosti se v důsledku většího množství dotazů na neexistující údaje používá negativní caching. Ten ukládá odpovědi typu neexistence domény, serveru, požadovaných dat či nedostupnost serveru kvůli síťovým problémům. [3 str. 226] [10] 22
Dále se jmenné servery rozdělují na rekurzivní a nerekurzivní. Nerekurzivní servery vrací odpověď jen v případě, že mají dotaz uložený v cache paměti, případně pokud jsou autoritativní pro danou doménu. Jinak pošle jen odkaz na autoritativní server jiné domény. Rekurzivní servery v případě, že neznají odpověď (není autoritativní pro doménu, na kterou se ptáme), spustí standardní algoritmus pro vyhledání odpovědi (tj. začne u kořenových DNS serverů a postupuje do nižších úrovní až k cíli). Klientovi pak pošle až konečný výsledek. [2 str. 431] Databáze DNS pro určitou doménu obsahuje více souborů, které jsou uloženy na primárním jmenném serveru domény. Informace v databázi DNS obsahují zdrojové záznamy (RR Resource Records). Zdrojové záznamy dělíme na zónové, základní, bezpečnostní a volitelné. [2 str. 411] Mezi zónové záznamy patří například záznam SOA a NS. Záznam SOA (Start Of Authority) určuje jmenný server, který je autoritativním zdrojem informací pro danou doménu. Záznam SOA je vždy právě jeden, a nachází se vždy na začátku souboru. NS (Name Server) záznam definuje, které jmenné servery jsou autoritativní pro danou zónu. [2 str. 412] Mezi základní záznamy se řadí A, AAAA, PTR a MX záznamy. Záznam A (IPv4) a AAAA (IPv6) slouží k převodu jména na IP adresu. Typ záznamu PTR (PoinTeR) slouží k zpětnému překladu IP adresy na jméno. Záznam MX (Mail Exchange) určuje server, který přijímá poštu pro danou doménu. [2 str. 415] Bezpečnostní záznamy jsou záznamy typu DS (Delegation Signer), DNSKEY (DNS public KEY), NSEC (Next SECure) a RRSIG (Resource Record SIGniture). Tyto záznamy slouží k ověření platnosti údajů o zónách a k ověření jejich integrity pomocí veřejného klíče. [2 str. 411] Mezi volitelné záznamy patří například CNAME nebo TXT záznamy. CNAME (Canonical NAME) záznam nám umožňuje vytvořit alias pro název jakéhokoliv počítače. Záznam TXT nám umožňuje přidat libovolný text. [2 str. 415] Předpokládáme použití DNS pro interní síť a pro přístup k internetu. Pro interní síť použijeme název domény, který nesmí kolidovat s názvy domén 23
používaných v internetu. DNS server musí být nakonfigurován na spolupráci s DHCP serverem pomocí protokolu DDNS. Doba života záznamů (TTL Time To Live) pro interní doménu by měla být krátká, aby se změny v DNS projevily v co nejkratším čase. V případě, že by byla doba života záznamů příliš krátká, bude docházet k zvýšenému zatěžování DNS serveru častými dotazy. Pro případ změny v interním DNS nastavíme hodnotu TTL na 1 hodinu. Pro rezoluci internetových jmen je nutné nastavit DNS forwarder, který bude předávat dotazy z vnitřní sítě na DNS servery v internetu. Vhodné jsou DNS servery poskytovatele internetového připojení, které jsou obvykle umístěny v jeho páteřní síti a mají krátkou dobu odezvy z firemní sítě i internetu. 4.2 Samba Samba je balík aplikací umožňujících komunikaci a výměnu dat mezi operačními systémy Linux a Microsoft Windows. Samba využívá stejné protokoly jako operační systémy Windows. Jedná se o protokoly SMB/CIFS (Server Message Block/Common Internet File System). To umožňuje přistupovat z operačních systémů Windows na Linuxový server a naopak. [3 str. 337] Samba nabízí celou řadu možností, například sdílení souborů a tiskáren, síťový tisk, autentizaci a autorizaci a vyhledávání NetBIOSových (Network Basic Input Output System) jmen. Může také provádět funkce PDC (Primary Domain Controller), což je primární doménový řadič v Microsoft sítích, jenž se stará o správu dané Windows domény. [3 str. 338] Funkce Samby jsou poskytovány démony smbd a nmbd. Démon smbd zajišťuje TCP/IP komunikaci, autentizaci a sdílení souborových systémů a tiskových služeb. Tento démon naslouchá na portu 139 a čeká na požadavky. V případě, že se uživatel autentizuje, smbd démon spustí svoji novou kopii, která dostane přístupová práva uživatele, a potom obsluhuje požadavky uživatele. [2 str. 828] 24