20. služby OS Linux: démoni, aktivace a konfigurace síťových služeb, aktivace požadavkem, xinetd.
20. služby OS Linux: démoni, aktivace a konfigurace síťových služeb, aktivace požadavkem, xinetd.
Program xinetd
Program xinetd je superserver sloužící ke spouštění služeb typu ssh, ftp, http apod. Interně poskytuje služby time, daytime, chargen a echo. Globální nastavení se provádí v konfiguračním souboru /etc/xinetd.conf. Konfigurační soubory jednotlivých služeb se nacházejí v adresáři /etc/xinetd.d. Ve výchozím nastavení obsluhuje xinetd své interní služby a ftp server vsftpd. Protože ssh server potřebuje při spuštění sadu šifrovacích klíčů, je nutné spustit ho alespoň poprvé při startu systému pomocí příslušného startovacího skriptu (/etc/init.d/ssh.d). Startovací skript potřebné klíče vygeneruje. Toto je výchozí nastavení v miteLINUXu. Dále ale není nutné, aby server sshd běžel neustále. Kvůli paměťové náročnosti ssh serveru doporučujeme nakonfigurovat tuto službu pro spouštění pomocí xinetd. Ssh server tak bude spouštěn jen v případě potřeby a tím se ušetří systémové prostředky.
Vysvětlení protokolu PPP
Protokol PPP slouží, stejně jako protokol SLIP, k posílání datagramů po sériové lince, avšak odstraňuje spoustu nedostatků, kterými trpí protokol SLIP. Umožňuje, aby si komunikující strany na počátku spojení dohodly parametry spojení, kterými mohou být například IP-adresa nebo maximální velikost datagramu. Dále poskytuje protokol PPP možnost ověření totožnosti klienta. Pro každou z těchto vlastností má protokol PPP samostatný protokol. V této kapitole si tyto základní stavební prvky protokolu PPP popíšeme. Kapitola však zdaleka neposkytuje veškeré informace; chcete-li se toho dozvědět o protokolu PPP více, měli byste si přečíst jeho specifikaci v RFC 1548 a dále přibližně tucet doprovodných RFC.
Na nejnižší hladině protokolu PPP se nachází tzv. Vysokoúrovňový protokol pro řízení datového spojení (High-Level Data Link Control Protocol), zkráceně HDLC, který definuje pole jednotlivých rámců protokolu PPP a poskytuje 16bitový kontrolní součet. Na rozdíl od primitivnějšího zapouzdření v protokolu SLIP může rámec v protokolu PPP obsahovat pakety i jiných protokolů, než IP, například protokolu IPX sítě Novell nebo protokolu Appletalk. Této vlastnosti je v protokolu PPP dosaženo tak, že k základnímu rámci protokolu HDLC je přidáno speciální protokolové pole, které identifikuje typ paketu přenášeného daným rámcem.
Protokol LCP, neboli protokol pro řízení spojení (Link Control Protocol), se používá nad protokolem HDLC a používá se ke sjednávání parametrů týkajících se datového spojení, jako je například maximální příjmová jednotka (Maximum Receive Unit - MRU), jež uvádí maximální velikost datagramu, kterou je jedna ze stran ochotná přijímat.
Důležitým krokem ve fázi konfigurace spojení pomocí protokolu PPP je ověření totožnosti klienta. Ačkoliv není povinné, je u většiny linek nabízejících připojení pomocí modemu de facto nezbytné. Volaný hostitel (server) obvykle vyzve klienta k ověření své totožnosti za pomocí nějakého tajného klíče. Není-li volající schopen poskytnout správný tajný klíč, bude spojení ukončeno. U protokolu PPP funguje ověřování totožnosti oběma směry; to znamená, že i klient může požádat server, aby prokázal svou totožnost. Obě tyto ověřovací procedury jsou na sobě vzájemně nezávislé. Pro účely těchto dvou různých způsobů ověřování jsou k dispozici dva protokoly, o kterých se ještě zmíníme. Nazývají se protokol pro ověření hesla (Password Authentication Protocol), zkráceně PAP, a protokol na ověření inicializační výzvy (Challenge Handshake Authentication Protocol - CHAP).
Každý Síťový protokol, který je směrován po datové lince, například protokoly IP, AppleTalk atd., je konfigurován dynamicky za pomoci odpovídajícího protokolu pro řízení sítě (Network Control Protocol - NCP). Například při posílání IP-datagramu po lince si musí nejprve oba hostitelé s protokolem PPP dohodnout, jakou IP-adresu bude každý z nich používat. Řídicím protokolem, který se k tomuto účelu používá, je protokol IPCP, neboli protokol na řízení internetového protokolu (Internet Protocol Control Protocol).
Kromě vlastního posílání IP-datagramů po lince podporuje protokol PPP také Van Jacobsonovu kompresi hlaviček IP-datagramů. To je technika používaná ke zmenýování velikosti hlaviček TCP-paketů až na tři bajty. Tato technika se používá také v protokolu CSLIP a obecně je známá pod názvem VJ komprese hlaviček. I použití komprese může být sjednáno při spuštění pomocí protokolu IPCP.
8.2 Protokol PPP v Linuxu
V Linuxu je funkce protokolu rozdělena na dvě části, na vysokoúrovňový ovladač HDLC, který se nachází v jádru operačního systému, a na démona uživatelského prostoru pppd, který se stará o různé řídicí protokoly.
Ovladač protokolu PPP v jádru operačního systému napsal Michael Callahan. Démon pppd byl odvozen z volně šiřitelné implementace protokolu PPP v počítačích Sun a 386BSD, jehož autorem je Drew Perkins a kol. a nyní jej spravuje Paul Mackerras. Na platformu Linuxu ho převedl Al Longyear.
Program chat napsal Karl Fox.
Protokol PPP je, stejně jako protokol SLIP, implementován pomocí speciálního režimu linky. Chcete-li používat nějakou sériovou linku jako linku s protokolem PPP, musíte nejprve obvyklým způsobem vytvořit spojení pomocí modemu a následně převést linku do režimu protokolu PPP. V tomto režimu budou všechna příchozí data podstoupena ovladači protokolu PPP, který ověří platnost rámců protokolu HDLC (každý rámec HDLC je doplněn 16bitovým kontrolním součtem), rozbalí je a odešle. V současné době je schopen spravovat IP-datagramy, volitelně i použití Van Jacobsonovy komprese hlaviček. Jakmile bude Linux podporovat i protokol IPX, dojde i k rozšíření ovladače PPP o správu IPX paketů.
Ovladači jádra operačního systému pomáhá démon pppd, což je démon protokolu PPP, který provádí veškerou inicializační fázi a fázi ověřování totožnosti, což je nutné před zahájením provozu po příslušné lince. Chování démona pppd je možné doladit pomocí mnoha parametrů. Jelikož je ovladač protokolu PPP poměrně složitý, není možné popsat všechny tyto parametry v jediné kapitole.
Tato kniha tak nepokrývá všechny aspekty démona pppd, poskytuje jen stručný úvod. Chcete-li se o tomto problému dozvědět více, nahlédněte do manuálu a do souborů README, které jsou součástí distribuce zdrojového kódu démona pppd, a tam byste měli nalézt většinu dotazů, jež nejsou součástí této kapitoly. Pokud budete mít problémy i po přečtení těchto materiálů, obrašte se na konferenci comp.protocols.ppp, která sdružuje většinu lidí zainteresovaných na vývoji démona pppd.
8.3 Spuštění démona pppd
Když se chcete připojit na Internet pomocí protokolu PPP, musíte nejdříve nastavit základní Síťovou podporu, jako je zpětnovazebné zařízení a resolver. Oba druhy Síťové podpory byly probírány v předchozích kapitolách. S použitím systému DNS souvisí ještě některé věci, o kterých je třeba se zmínit; najdete je v kapitole věnované protokolu SLIP.
V úvodním příkladu, který se bude zabývat navázáním spojení PPP pomocí démona pppd, předpokládáme, že jste opět na hostiteli vlager. Již jste vytočili server PPP s názvem c3po a přihlásili jste se na účet ppp. Server c3po již aktivoval svůj ovladač protokolu PPP. Po ukončení komunikačního programu, který jste použili k vytočení čísla serveru, spustíte následující příkaz:
# pppd /dev/cua3 38400 crtscts defaultroute
Tento příkaz přepne sériovou linku cua3 do režimu PPP a naváže IP-spojení se serverem c3po. Přenosová rychlost použitá sériovým portem bude 38 400 bps. Parametr crtscts zapíná na daném portu hardwarové řízení toku dat, které u rychlostí nad 9 600 bps musí být rozhodně zapnuto.
Démon pppd si ihned po spuštění domluví některé charakteristiky se svým protějšekem.
K tomu použije protokol LCP. Při sjednávání charakteristik budou obvykle fungovat implicitní parametry, takže se jimi zde nemusíme dále zabývat. V další kapitole se na protokol LCP podíváme detailněji.
Budeme také předpokládat, že server c3po od nás nebude vyžadovat žádný typ ověřování totožnosti, čímž máme konfigurační fázi úspěšně za sebou.
Následně domluví démon pppd se svým protějýkem parametry IP, k čemuž použije protokol IPCP, což je protokol řídící IP. Protože jsme démonu pppd nepředali žádnou konkrétní IP-adresu, pokusí se ji získat tak, že nechá resolver vyhledat místní název hostitele. Potom si oba hostitelé sdělí své IP-adresy.
Tato implicitní nastavení jsou zpravidla dostačující. Dokonce i v případě, že je váš počítač připojen do sítě Ethernet, můžete použít stejnou IP-adresu jak pro Ethernet, tak i pro rozhraní PPP. Přesto vám démon pppd dovolí použít odlišnou adresu, případně může požádat váš protějšek, aby použil nějakou konkrétní adresu. Tyto volby jsou rozebírány dále.
Po úspěšném dokončení fáze nastavení protokolu IPCP připraví démon pppd Síťovou vrstvu, která se bude používat při spojení pomocí protokolu PPP. Nejprve nastaví Síťové rozhraní PPP jako spojení typu point-to-point, a to tak, že pro první aktivní spojení pomocí protokolu PPP použije rozhraní ppp0, pro druhé aktivní spojení ppp1 atd. Dále nastaví položku ve směrovací tabulce, která bude odkazovat na hostitele na druhém konci spojení. V dříve zmíněném příkladu nastaví démon pppd implicitní směr na server c3po, protože mu byla přiřazena volba defaultroute.Tato volba způsobí, že všechny datagramy poslané hostitelům, kteří se nenacházejí ve vaší místní síti, budou poslány na server c3po. Démon pppd podporuje velké množství směrovacích schémat. Ty budou detailněji probrány dále v této kapitole.
8.4 Použití souborů options
Dříve, než démon pppd analyzuje argumenty příkazové řádky, projde několik souborů, zda neobsahují implicitní volby. Tyto soubory mohou obsahovat libovolné argumenty příkazové řádky, jež mohou být uvedeny na několika řádkách. Komentáře jsou uvozeny symbolem křížku.
Prvním souborem voleb je soubor s názvem /etc/ppp/options, který se při spuštění démona pppd vždy prohlíží. Je dobré využít tohoto souboru ke specifikaci některých globálních implicitních nastavení, čímž zabráníte vašim uživatelům v nechtěném poškození bezpečnosti celého systému. Chcete-li například, aby démon pppd vyžadoval od svého protějýku nějaký typ ověření totožnosti (bui pomocí protokolu PAP, nebo pomocí protokolu CHAP), uveite v tomto souboru volbu auth. Tuto volbu nemůže uživatel potlačit, takže nemůže navázat spojení pomocí protokolu PPP s žádným systémem, který není v ověřovací databázi.
Druhým souborem voleb, který se čte po souboru /etc/ppp/options, je soubor .ppprc. Nachází se v domovském adresáři příslušného uživatele. Každý uživatel tak může specifikovat svoji vlastní množinu implicitních voleb. Vzorový soubor /etc/ppp/options by mohl vypadat asi takto:
# Globální volby pro pppd běžící na vlager.vbrew.com
auth # požaduj autorizaci
usehostname # pro CHAP použij lokální jméno
lock # používej zamykání UUCP
domain vbrew.com # naše doména
První dvě volby se vztahují k procesu ověřování totožnosti a budou vysvětleny dále. Klíčové slovo lock nastaví démona pppd tak, aby vyhovoval standardní metodě UUCP, která definuje blokování zařízení. Podle tohoto standardu vytvoří každý proces, který přistupuje k sériovému zařízení, konkrétně k zařízení /dev/cua3, v dočasném adresáři UUCP zamykající soubor s názvem LCK..cua3, jehož přítomnost bude signalizovat, že je dané zařízení momentálně využíváno. To proto, aby jiné programy, například minicom nebo uucico, nemohly otevřít sériové zařízení v okamžiku, kdy ho používá protokol PPP.
Důvodem začlenění těchto voleb do globálního konfiguračního souboru je skutečnost, že uživatel nemůže Výše uvedené volby potlačit a ty tím pádem poskytují solidní úroveň zabezpečení. Všimněte si však, že některé volby potlačit lze; příkladem budiž řetězec connect.