Professional Documents
Culture Documents
Odevzdáno na Fakultě informačních technologií Vysokého učení technického v Brně, dne 3. května
2005.
Autor díla převádí svá práva na reprodukci, distribuci a kopii celého díla i jeho části na Vysoké učení
technické v Brně, Fakultu informačních technologií.
Prohlášení
Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením Ing. Jana Hrouzka.
Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal.
……………………
Jméno Příjmení
Datum
2
Abstrakt
Cílem této práce je navrhnout a implementovat webové rozhraní pro správu domén. Pomocí tohoto
rozhraní by mělo být možno spravovat základní webové služby jako webový server, poštovní server,
databázový server, server pro správu doménových jmen, server pro přenos souborů, a služby užitečné
pro doménu, jako například plánovač úloh a diskové kvóty. Pro implementaci rozhraní má být
použito programovacích technik PHP a databázového serveru FirebirdSQL. Webové rozhraní má
pracovat na počítačích s operačním systémem GNU/Linux.
Klíčová slova
Doména, WWW, FTP, DNS, quota, databáze, e-mail, Apache, Bind, ProFTPd, FirebirdSQL, cron,
Linux, Postfix, webové rozhraní, správa.
3
Abstract
The purpose of this project is sketch and implementation of web-based interface for administration
domain’s services. Via this interface you can setup basic web services like web server, mail server,
database server, domain name server, server for transfer file and other services useful for domain like
daemon to execute scheduled commands and disk quotas. For implementation web-based interface
was used hypertext preprocessor PHP and database server FirebirdSQL. Web-based interface works
on computers with operating system GNU/Linux.
Keywords
Domain, WWW, FTP, DNS, quota, database, e-mail, Apache, Bind, ProFTPd, FirebirdSQL, cron,
Linux, Postfix, web-based interface, administration.
4
Obsah
Obsah................................................................................................................................................5
1 Úvod.........................................................................................................................................6
2 Doménové služby......................................................................................................................7
2.1 Služba doménových názvů................................................................................................7
2.2 Konfigurace BINDu..........................................................................................................8
2.3 Webová služba................................................................................................................11
2.3.1 Konfigurace Apache ...................................................................................................11
2.4 Poštovní služba...............................................................................................................14
2.4.1 Konfigurace Postfixu ..................................................................................................14
2.5 Služba přenosu souborů ..................................................................................................15
2.5.1 Konfigurace ftp serveru ..............................................................................................16
3 Ostatní služby .........................................................................................................................18
3.1 Plánovač úloh .................................................................................................................18
3.1.1 Konfigurace plánovače úloh........................................................................................18
3.2 Quota..............................................................................................................................19
3.2.1 Konfigurace diskové kvóty .........................................................................................19
3.3 Databázový server ..........................................................................................................20
4 Webové rozhraní pro správu domén ........................................................................................21
4.1 Část pro interakci s operačním systémem ........................................................................21
4.1.1 Vytváření nových uživatelů ........................................................................................22
4.1.2 Přidávání řádků do konfiguračních souborů ................................................................23
4.1.3 Odstraňování řádků z konfiguračních souborů.............................................................23
4.2 Databáze pro uložení nastavení .......................................................................................23
4.2.1 Návrh databáze...........................................................................................................23
4.3 Uživatelské rozhraní .......................................................................................................26
4.3.1 Druhy použitých funkcí ..............................................................................................26
4.3.2 Soubor config.php ......................................................................................................26
5 Závěr ......................................................................................................................................28
Literatura.........................................................................................................................................29
Přílohy ............................................................................................................................................30
5
1 Úvod
Cílem tohoto projektu je navrhnout a implementovat rozhraní pro správu doménových služeb. Toto
rozhraní může být nasazeno na serveru menšího poskytovatele internetových služeb, který pomocí něj
může registrovat nové domény a spravovat jejich služby.
Toto rozhrání má pracovat na serverech s operačním systémem GNU/Linux, já jsem však
zadání rozšířil o podporu operačního systému FreeBSD, který stejně jako systém GNU/Linux patří do
skupiny Unixových operačních systémů a na internetových serverech bývá často nasazován.
Čtenář bude nejprve seznámen se základními doménovými službami, programy realizujícími
tyto služby a způsobem konfigurace těchto programů.
Poté následuje řešení tohoto úkolu s vyznačením problémů, které bylo nutné řešit. Bude
popsána komunikace projektu s operačním systémem, způsob ukládání nastavení a způsob
komunikace projektu s uživatelem.
6
2 Doménové služby
V této kapitole se seznámíme se základními doménovými službami.
7
2.2 Konfigurace BINDu
Po nainstalování BINDu jej musíme zkonfigurovat. Uděláme to pomocí souboru named.conf. Ten
nalezneme buďto v adresáři /etc, /etc/namedb nebo /var/namedb. Jeho umístění je závislé na
distribuci a také na tom, jak je v této distribuci nastaveno chroot prostředí pro BIND.
2.2.1.1 Named.conf
Soubor named.conf poskytuje velmi mnoho parametrů k nastavení. My si však všimneme pouze těch
často užívaných, bez kterých se nastavení neobejde.
Syntaxe souboru named.conf je velmi podobná syntaxi jazyka C. Je zde možno využít značek
pro poznámky. Konkrétně značka „//“ znamená, že všechny znaky od ní až do konce řádku budou
brány jako komentář, stejně jako blok znaků začínající značkou „/*“ a končící „*/“. Kromě těchto je
zde ještě třetí typ poznámek začínajících znakem „#“ a končících na konci řádku.
Soubor named.conf je tvořen dvěma typy záznamů. Záznamem options, který smí být pouze
jeden a obsahuje parametry pro běh démona named, a záznamy zone, ve kterých se specifikují zóny,
pro které named zpracovává požadavky.
Příklad named.conf:
options {
directory “/var/named”;
pid-file “/var/run/named.pid”;
listen-on { 127.0.0.1; 192.168.0.1; };
forward only;
forwarders { 192.168.1.1; };
}
Položka directory udává adresář, ve kterém bude named vyhledávat a kam bude ukládat další
soubory služby DNS.
Pid-file je souborem, ve kterém je číslo identifikující proces démona named.
Listen-on obsahuje seznam všech síťových rozhraní, na kterých bude named přijímat a
vyřizovat požadavky.
Volba forward only znamená, že named nebude vyřizovat požadavky sám, ale pouze je
přepošle na další server ze seznamu forwarders. V tomto seznamu by měly být jmenné servery
poskytovatele internetu. Tento server má s velkou pravděpodobností hledaný záznam již ve své
mezipaměti a proto dojde ke snížení toku dat v internetu.
Voleb je samozřejmě mnohem více. Při potřebě dalších nastavení je nutné se podívat do
manuálových stránek, či danou volbu vyhledat na internetových stránkách BINDu.
8
Nyní se dostáváme do části souboru named.conf, kde jsou specifikovány zóny, pro které bude
named přijímat a vyřizovat dotazy:
zone “.” {
type hint;
file “named.root”;
}
V případě, že názvový server neví, jak daný název přeložit, pošle požadavek na kořenový
názvový server. Ten mu odpoví, která doména je nadřazená této hledané a kde se má dále ptát.
Adresy kořenových názvových serverů jsou v souboru named.root.
zone “domena.cz” {
type master;
file “master/domena.cz”;
}
Tento záznam říká, že daný server je primárním serverem domény domena.cz a že záznamy
domény jsou uloženy v souboru /var/named/master/domena.cz.
zone “druha.cz” {
type slave;
file “slave/druha.cz”;
masters { 192.168.5.1;};
}
Tento server je zároveň sekundárním serverem domény druha.cz. Záznamy jsou ukládány do
souboru /var/named/slave/druha.cz a primárním serverem této domény je 192.168.5.1. Tento server
musí být zadán IP adresou, říká totiž odkud si má sekundární server načítat data.
9
Jako příklad byl vypsán soubor /var/named/master/domena.cz.
Položka $TTL udává dobu platnosti záznamů. Tato doba označuje, jak dlouho můžou ostatní
počítače udržovat ve své mezipaměti záznamy z této domény. Tato doba je udávána v sekundách.
Druhý řádek obsahuje záznam SOA (Start of Authority record). Znak „@“ je zástupným
znakem a nahrazuje se názvem domény ze souboru named.conf. První položkou záznamu SOA je
tedy název domény. Druhá položka označuje typ záznamu (IN znamená internet) a třetí položka SOA
označuje začátek řídícího záznamu domény. Dále následuje název počítače, který je primárním
názvovým serverem domény a elektronická adresa správce této domény. V adrese se nesmí
vyskytovat znak „@“, protože ten zde má jiný význam. Proto se nahrazuje první znak „.“. Je tedy
nutné, aby v originální elektronické adrese nebyla před znakem „@“ žádná tečka. Jinak by byla
adresa chybně interpretována.
Následuje pět číselných hodnot. První číslo (serial) udává verzi konfiguračního souboru.
Pokud dojde k jeho změně, mělo by se toto číslo také změnit, aby sekundární servery mohly tuto
změnu zaregistrovat. Často se jako toto číslo udává datum a to ve formátu YYYYMMDDRR, kde RR
je číslo revize. Tento formát umožňuje provádět více změn denně.
Druhým číslem (refresh) se udává, po jak velkých časových intervalech se bude sekundární
server připojovat k primárnímu za účelem zjištění změn. Tento časový interval je udáván
v sekundách.
Třetí číslo (retry) udává dobu mezi pokusy o zjištění změn v konfiguračních souborech
v případě, kdy nebylo možné připojit se k primárnímu serveru. Tato doba je také udávána
v sekundách.
Čtvrté číslo (expire) udává dobu platnosti záznamů sekundárního serveru v případě, kdy se mu
nepodařilo spojit s primárním a zkontrolovat změny v konfiguraci. Tato doba je v sekundách. Po
uplynutí této doby již sekundární server žádná data o této doméně neodesílá a počítače v ní jsou
pomocí doménových jmen nedostupné.
Poslední číslo (minimum TTL) udává dobu uložení negativní odpovědi. Negativní odpověď je
odpověď například na IP adresu neexistujícího počítače. Tato doba je také v sekundách.
Následují informace o počítačích v doméně. Záznam typu NS říká, že daný počítač je
názvovým serverem domény. Jsou zde tedy vypsány jak primární, tak sekundární servery domény. Je
víc než vhodné, aby každá doména měla alespoň dva sekundární servery.
Záznam MX udává počítač, který přijímá elektronickou poštu pro danou doménu. Tento
počítač může patřit do dané domény, ale taky nemusí. Pokud do ní patří, je nutné, aby byla dále
definována jeho IP adresa a to pokud možno záznamem typu A.
Každá doména smí mít pouze jeden primární poštovní server, na kterém se bude přijatá pošta
ukládat. Počet záložních serverů není omezen. Při výpadku primárního poštovního serveru se pošta
dočasně ukládá na záložním serveru a po obnovení primárního se na něj přesune. Poštovní servery se
10
odlišují prioritou. Primární poštovní server má prioritu nejnižší, server s druhou nejnižší prioritou
bude jako první použit při výpadku primárního.
Pro záznamy o počítačích v doméně se využívají dva typy záznamů. Záznam A říká, jaká IP
adresa odpovídá danému jménu. Záznam typu CNAME označuje alias, tedy jakousi přezdívku, pro
počítač daného jména.
Kromě dopředného překladu jména na IP adresu, který jsme si právě ukázali, je k dispozici
také zpětný překlad IP adresy na jméno. V tomto typu překladu se používají záznamy typu PTR, kdy
první část záznamu tvoří IP adresa, následuje třída záznamu (obvykle IN), typ záznamu (PTR) a
název počítače.
1
Netcraft: web server survey [online]
URL: <http://news.netcraft.com/archives/web_server_survey.html> (duben 2005)
11
2.3.1.1 Httpd.conf
Toto je hlavní konfigurační soubor webového serveru Apache. Můžeme zde opět nalézt velké
množství, proto zde budou vyjmenovány pouze nastavení související s nastavením virtuálních domén.
Syntaxe zápisu nastavení je následující : položka “textová hodnota”.
Položky, které spolu souvisejí, tzn. nastavují společnou věc, jsou uzavřeny do bloku. Tento blok
začíná <Název_bloku hodnota> a je ukončen </Název_bloku>.
Pro lepší orientaci v konfiguračním souboru je dovoleno použít direktivy Include, která dovolí
přenést některá nastavení do jiného souboru. My toho využijeme a do souboru httpd.conf připojíme
soubor Vhosts.conf, pokud tam již není.
Můžeme si všimnout, že v souboru již několik takových direktiv je, např. tato, která připojuje
soubor s nastavením zabezpečeného spojení: Include ssl.conf.
2.3.1.2 Vhosts.conf
NameVirtualHost 192.168.0.1 – tento zápis znamená, že na dané IP adrese serveru poběží více
virtuálních webových serverů. Tyto servery budou rozlišovány na základě jména, což znamená, že
jmenný server je nakonfigurován tak, že mnoha různým doménovým jménům odpovídá tato IP
adresa. Když pak klient bude požadovat stránku po jednom z těchto serverů, dojde na tuto adresu
požadavek, v jehož hlavičce je zapsáno, z které domény má stránka být. Pozor, tato hlavička je až u
HTTP protokolu verze 1.1. Dnes je však už používána převážně tato verze protokolu.
Za tímto řádkem budou následovat konfigurace virtuálních webů, jako například tento:
<VirtualHost 192.168.0.1> Virtuální web bude k dispozici na této adrese
ServerName www.virtualni.cz - jmenná adresa virtuálního webu
ServerAdmin spravce@virtualni.cz - e-mailová adresa správce této domény
DocumentRoot /nejaky adresar - kořenový adresář pro dokumenty domény
CustomLog /adresar/acces_log common - soubor, kam se budou ukládat
záznamy o přístupu ke stránkám domény
ErrorLog /adresar/error_log - soubor, kam se budou zaznamenávat
chyby při přístupech na stránky domény
… - a další volby
</VirtualHost>
Nevýhodou tohoto způsobu vytváření virtuálních webů je to, že tyto weby nemohou používat
zabezpečený typ přístupu ke stránkám pomocí SSL protokolu. Totiž SSL protokol pracuje nad TCP a
proto na IP adresu serveru dojde HTTP hlavička zašifrovaná a není proto možné rozhodnout, kterému
virtuálnímu serveru patří. Je tedy předána výchozímu webovému serveru na této adrese.
12
Tento problém řeší druhý typ vytváření virtuálních webů. Ten je založen na IP adrese serveru.
Znamená to, že každý webový server má svou vlastní adresu a proto může používat zabezpečený
HTTPS protokol. Nevýhodou však je, že hostitelský server musí mít stejný počet IP adres, jako je
počet virtuálních webů používajících HTTPS službu. Server doménových jmen pak musí být
nakonfigurován tak, aby virtuální webové servery měly odlišné IP adresy.
Zápis této konfigurace je jednoduchý. Do bloku VirtualHost zapíšeme jinou adresu
hostitelského serveru, než jsme jmenovali v NameVirtualHost.
Pokud tedy chceme u některého z virtuálních webů používat zabezpečenou komunikaci, bude
jeho konfigurace vypadat následovně:
<VirtualHost 192.168.0.5:443> - tímto říkáme, že apache má přijímat spojení také
na portu 443, který je určen pro HTTPS spojení
… - následují standardní volby jako DocumentRoot,
ServerName, atd.
SSLEngine on - aktivuje pro tohoto virtuálního hostitele modul SSL
SSLCipherSuite - definuje kryptografické algoritmy (jejich zápis je
vhodné vyhledat ve vzorovém konfiguračním
souboru, či manuálových stránkách)
SSLCertificateFile - definuje cestu k souboru s certifikátem serveru
SSLCertificateKeyFile - definuje cestu k souboru s klíčem k certifikátu
</VirtualHost>
Na jednom webovém serveru smíme provozovat současně virtuální webové servery vytvořené
na základě jména tak na základě IP adresy.
Je vhodné také zapsat SSL konfiguraci pro výchozí server, která bude použita při pokusu o
přístup na HTTPS stránky virtuálních serverů, které tuto službu nemají definovánu. Tato konfigurace
bude vypadat následovně:
<VirtualHost _default_:443>
…
</VirtualHost>
13
2.4 Poštovní služba
Mezi základní úkoly internetového serveru patří předávání a přijímání elektronické pošty. K tomuto
účelu musí být server vybaven poštovním serverem, který pomocí SMTP protokolu komunikuje s
poštovním klientem (přijímání pošty) a jinými poštovními servery (přijímání a předávání pošty).
Mezi nejznámější poštovní servery patří programy Sendmail, Postfix a Qmail. Sendmail je z
těchto tří nejstarší, nejhůře konfigurovatelný, ale jeho možnosti jsou nezměrné. Je to však velice
rozsáhlý monolitický software, jehož provozování a udržování vyžaduje jeho velmi dobré znalosti.
Říká se, že ten, kdo provozuje a udržuje Sendmail, je zároveň jeho vývojářem. Naproti tomu program
Postfix je z těchto tří nejnovější a stejně jako Qmail je menší, lépe zabezpečitelný a lépe
konfigurovatelný. Licence programu Qmail nedovoluje jeho modifikaci a redistribuci, čímž se
odlišuje od Sendmailu a Postfixu.
Postfix se dá získat ve zdrojových kódech z www.postfix.org, nebo v podobě již
zkompilovaných balíčků na CD či stránkách distribuce GNU/Linuxu.
2.4.1.1 Main.cf
Soubor main.cf obsahuje velmi mnoho nastavení, proto si projdeme jen ta nejzákladnější.
Syntaxe zápisů nastavení je následující: parametr1 = hodnota1 [,hodnota2, …]
parametr2 = $parametr1 [,…]
queue_directory – udává adresář, kam jsou ukládány zprávy čekající na odeslání či doručení
mail_owner – uživatelský účet, pod nímž postfix běží
myhostname – doménové jméno počítače
mydomain – doména počítače
myorigin – udává, jaká doména se bude zobrazovat u odchozí pošty. Na výběr jsou možnosti
$mydomain, pak odchozí adresa bude uzivatel@domena.cz, nebo $myhostname, a pak bude
odchozí adresa bude uživatel@pocitac.domena.cz.
inet_interfaces – síťové rozhraní, na kterém bude postfix přijímat požadavky ($myhostname,
localhost, all)
mydestination – specifikuje domény a počítače, pro které bude server přijímat poštu
mynetworks_style – nastavuje část sítě, ze které mohou klienti pomocí postfixu odesélat
poštu. Na výběr jsou hodnoty host, pak bude přijímat poštu pouze z daného počítače, subnet,
14
pak bude poštu přijímat od klientů z podsítě, a class, pak přijímá poštu od všech klientů
patřících do třídy sítě.
mynetworks – udává seznam sítí, jejichž klienti mohou pomocí postfix odesílat poštu. Např.
192.168.0.0/24
relay_domains – tento parametr udává, do kterých domén smí postfix poštu předávat a od
kterých domén smí poštu přijímat na další zpracování.
relayhost – obsahuje název či IP adresu počítače, na který bude předána pošta, která není
určena do domovské domény programu postfix. Pokud je tento parametr prázdný, pošta je
předána rovnou adresátovi. Např. relayhost=$mydomain / [192.168.0.5] / [server.domena.cz].
mail_spool_directory – adresář, do kterého budou ukládány doručené zprávy pro uživatele
virtual_alias_domains – seznam virtuálních domén, pro které postfix zpracovává poštu
virtual_alias_maps – soubor, ve kterém je definováno mapování virtuálních e-mailových
adres na adresy skutečné.
2.4.1.2 Virtual
V tomto souboru je mapování virtuálních e-mailových adres na skutečné adresy v systému (je
definován direktivou virtual_alias_maps v souboru main.cf). Syntaxe je jednoduchá. Na začátek
řádku se zapíše adresa, která má být mapována, pak několik oddělovačů a adresa, na kterou se bude
pošta doručovat, popřípadě uživatelské jméno uživatele, do jehož schránky má být pošta doručena.
Použijeme-li e-mailovou adresu, může tato adresa být opět virtuální.
Např.: virtualni.uzivatel@nejaka.domena.cz uzivatel@domena.cz
Virtualni.uzivatel2@nejaka.domena.cz uzivatel
kos@nejaka.domena.cz uživatel@domena.cz
@nejaka.domena.cz kos@nejaka.domena.cz
Poslední zápis je zápisem tzv. doménového koše. Veškeré e-maily, které budou odeslány na
neexistující adresu v doméně nejaka.domena budou přeposlány na adresu kos@nejaka.domena.cz. Je
to dáno tím, že tento zápis má nejmenší prioritu, a proto pokud se nenajde žádné pravidlo, jak doručit
daný e-mail, použije se tohoto pravidla.
Ke správnému fungování virtuálních domén v programu postfix je nutné správně
nakonfigurovat službu doménových názvů.
15
Řešením tohoto problému je např. povolení přihlášení pouze na tzv. anonymní účet. Tento účet
je bez hesla (popřípadě je heslo libovolné) a umožňuje pouze stažení veřejně nabídnutých dat.
Pokud je potřeba odlišit několik uživatelů a každému nabízet jiná data, je vhodné takovýmto
uživatelům povolit přístup pouze k ftp, tj. nepovolit jim přihlášení do systému.
Poslední možností je využití zabezpečené přenosové vrstvy TLS, která zašifruje veškerá data
tekoucí po protokolu ftp. Toto řešení má však větší nároky na systémové prostředky a snižuje datový
tok.
Jedním z mnoha ftp serverů je server ProFTPd. Jeho výhodou je vysoká míra konfigurace,
modulární návrh a stejný formát zápisu konfiguračního souboru jako webový server Apache. FTP
server ProFTPd se dá získat ve zdrojových kódech z www.proftpd.org, nebo v podobě již
zkompilovaných balíčků na CD či stránkách distribuce GNU/Linuxu.
2.5.1.1 Proftpd.conf
Nyní si projdeme základní volby v konfiguračním souboru programu ProFTPd.
ServerName – název serveru, zobrazí se při přihlášení k serveru.
ServerType - standalone – server běží neustále
- inetd – server je spouštěn podle potřeby
DefaultServer - on/off – udává, že server je výchozí pro danou IP adresu. Využívá se u
virtuálních domén, kdy na jedné IP adrese je spuštěno více FTP serverů. Pokud pak přijde
požadavek na spojení do domény, kde ftp server není nakonfigurován, je toto spojení přijato a
je přiřazeno této konfiguraci. Pokud však není žádná konfigurace označena jako výchozí, je
toto spojení zamítnuto a ukončeno.
AllowStoreRestart – on/off – umožňuje znovunavázání při přerušeném nahrávání souboru
na server
Port – číslo portu, na kterém bude ftp server přijímat požadavky
Umask – udává masku, která je aplikována při vytváření nových souborů a adresářů
MaxInstances – maximální počet procesů serveru
User – uživatelský účet, pod kterým server poběží
Group – skupina, pod kterou server poběží
DefaultRoot – adresář, ve kterém bude uživatel „zamčen“ po připojení. Uživatel se nebude
moci dostat do adresáře o úroveň výše. Zadáme-li hodnotu „~“, bude uživatel zamčen ve svém
domovském adresáři.
16
AllowOverwrite – povolí/zakáže uživateli přepisovat soubory
TransferLog – udává soubor, do kterého se budou zaznamenávat veškeré přenosy souborů
ExtendedLog – udává soubor, do kterého se budou zaznamenávat zvolené události ve
zvoleném formátu
Konfigurace virtuálního serveru se zapisuje pomocí bloku <VirtualHost název>
</VirtualHost>, kde mezi tyto dvě značky jsou vypsány nastavení tohoto serveru.
Konfigurace virtuálního serveru však není nutná, použijeme ji pouze v případě, kdy chceme
zaznamenávat události pro každou doménu do zvláštního souboru, nebo pokud chceme nastavit pro
danou doménu jiné specifické volby.
17
3 Ostatní služby
Na serveru se budou také využívat jiné služby, které už nejsou až tak spojené s počítačovými sítěmi,
ale jejichž význam je také velký.
18
Čtvrtý sloupec označuje měsíc, ve kterém se úloha spouští. Platné hodnoty jsou 1-12, ale také
jan-dec, což jsou tři počáteční písmena z anglického názvu měsíce. Při použití tohoto zápisu však
nelze použít zápis rozsahu či seznam hodnot.
Pátý sloupec označuje den v týdnu. Platné hodnoty jsou 0-7 (0 a 7 jsou neděle) a mon-sun, což
jsou první tři písmena z anglického názvu měsíce. Opět nejsou povoleny zápisy rozsahu a seznamy
při užití jmenného pojmenování dnů.
Šestý sloupec udává, pod jakým uživatelským účtem bude úloha spouštěna.
Poslední sloupec udává úlohu, která se bude spouštět.
3.2 Quota
Při vkládání nových uživatelských účtů může dojít k problému, že noví uživatelé již nebudou mít na
disku dostatečnou volnou kapacitu. Aby k tomuto problému nedošlo, existuje na UNIXových
systémech program quota, pomocí kterého lze nastavit jednotlivým uživatelům maximální prostor,
který mohou na disku/discích obsadit.
Při nastavování diskové kvóty lze nastavit tzv. měkká kvóta, po jejíž překročení je uživateli
zobrazena varovná zpráva o překročeném limitu a jejíž překročení je tolerováno jen určitou dobu, a
tzv. tvrdá kvóta, která již překročit nejde a uložení či vytvoření souboru přes tuto kvótu skončí
chybou.
Kvótou lze nastavit jak na místo na disku v kilobajtech, tak na počet souborů a lze je
nastavovat jak pro jednotlivé uživatele, tak pro uživatelské skupiny.
19
popřípadě také grpquota. Parametr usrquota přidává podporu pro uživatelské kvóty, parametr
grpquota pro kvóty skupinové.
Po připojení disku s těmito parametry můžeme nastavovat diskové kvóty. Může nám k tomu
pomoci program edquota, kterému se jako parametr zadá login uživatele a který otevře okno editoru
s tabulkou pro zadání kvót.
V prvním sloupečku je určení disku, ve třetím měkká kvóta na místo v kB, ve čtvrtém tvrdá
kvóta na místo v kB. V šestém a sedmém sloupci pak jsou měkké a tvrdé kvóty na počet souborů.
Dále je možné nastavit dobu, po kterou bude tolerováno překročení měkké kvóty (grace
period). Tato doba se nastavuje příkazem edquota –t a je shodná pro všechny uživatelské kvóty na
daném disku.
20
Tento program má jednoduché ovládání. Příkazem display se zobrazí seznam uživatelů,
příkazem add se vytvoří nový, příkazem delete se smaže. Příkaz modify slouží k editaci uživatelského
účtu.
Při vytváření nových databází je potřeba zadat, který uživatel bude vlastníkem této databáze a
jeho heslo. V této databázi je pak možné přidělovat práva k tabulkám, pohledům a jiným
databázovým objektům i jiným uživatelům. Databáze se zakládají a spravují přes interaktivní konzoli
isql.
21
v konfiguraci dané služby, kdežto v tomto případě je konfigurace načtena až po zaznamenání všech
změn.
K tomu, aby bylo znovunačtení prováděno pouze u těch služeb, jejichž nastavení bylo opravdu
změněno, slouží další skript. Sem se zaznamenává, které služby se mají spustit znova.
Do posledního skriptu se zaznamenávají všechny ostatní příkazy.
Nyní si ukážeme některé z příkazů a všimneme si možných problémů při jejich provádění.
22
pak liší od systémů GNU/Linux pouze tím, že před příkaz useradd/groupadd je zapsán příkaz pw a
parametry jsou jinak seřazeny.
23
U záznamů pro BIND se však situace komplikuje. Záznamy totiž nemají stejnou formu, nelze
je tedy jednoduše zapsat do jedné tabulky. Proto je vhodnější záznamy rozdělit do několika tabulek.
Vytvořil jsem tedy zvláštní tabulku pro záznamy o jmenných serverech domény, tabulku pro poštovní
servery domény a tabulku pro počítače domény. Záznam SOA byl přidán do tabulky s informacemi o
doméně.
Pro službu HTTPS budeme potřebovat znát všechny IP adresy serveru, proto IP adresy
serveru zařadíme také mezi entity.
Poslední entitou budou všechny přípony domén, které je možné na serveru zaregistrovat.
Z těchto entit a jejich vzájemných vztahů byl vytvořen ER-diagram, který je k práci přiložen.
V databázi je také tabulka obsahující položky související se systémem, na kterém je rozhraní
provozováno. Tyto pomáhají při přenášení nastavení do systému. Touto tabulkou je tabulka Tsettisgs
a jejími položkami jsou:
• systype – identifikační číslo operačního systému (nastavení). Tato položka je primárním
klíčem
• apache_vhosts_conf – textový řetězec obsahující úplnou cestu k souboru s definicí
virtuálních domén webového serveru Apache (obvykle je tímto souborem Vhosts.conf)
• bind_named_conf – textový řetězec obsahující úplnou cestu ke konfiguračnímu souboru
programu BIND (named.conf)
• bind_directory – textový řetězec obsahující úplnou cestu k adresáři, do něhož budou
ukládány primární záznamy o doménových názvech v doménách (program BIND). Jedná se o
adresář, proto musí cesta končit znakem „/“.
• postfix_main_cf – textový řetězec obsahující úplnou cestu ke konfiguračnímu souboru
programu Postfix (main.cf)
• postfix_virtual – textový řetězec obsahující úplnou cestu k souboru s mapováním
virtuálních e-mailových schránek programu Postfix na skutečné (virtual.cf)
• proftpd_conf – textový řetězec obsahující úplnou cestu ke konfiguračnímu souboru
programu ProFTPd (proftpd.conf)
• firebird_dir – textový řetězec obsahující úplnou cestu k adresáři, kam byl nainstalován
databázový server FirebirdSQL. Jedná se o adresář, proto musí cesta končit znakem „/“.
• dot_in_login – tato položka udává, zda daný operační systém povoluje znak „.“
v uživatelských jménech. Hodnoty této položky smí být pouze textové řetězce TRUE nebo
FALSE.
• domain_directory_root – textový řetězec obsahující úplnou cestu k adresáři, do
kterého budou ukládány soubory nově zaregistrovaných domén. Jedná se o adresář, proto musí
cesta končit znakem „/“.
24
• GIDMIN – číselné vyjádření identifikačního čísla skupiny, která bude vytvořena při registraci
první domény. Toto číslo slouží pro oddělení skupin uživatelů vzniklých při registraci domén
přes webové rozhraní od ostatních uživatelských skupin v systému.
• UIDMIN – číselné vyjádření identifikačního čísla uživatele, který bude vytvořen při registraci
první domény. Toto číslo slouží pro oddělení uživatelů vzniklých při registraci domén přes
webové rozhraní od ostatních uživatelů v systému.
• bindcommandfile – textový řetězec obsahující úplnou cestu k souboru, do kterého se
budou ukládat příkazy pro provedení změn v nastavení programu BIND v souladu
s nastaveními provedenými přes webové rozhraní.
• postfixcommandfile – textový řetězec obsahující úplnou cestu k souboru, do kterého se
budou ukládat příkazy pro provedení změn v nastavení programu Postfix v souladu
s nastaveními provedenými přes webové rozhraní..
• apachecommandfile – textový řetězec obsahující úplnou cestu k souboru, do kterého se
budou ukládat příkazy pro provedení změn v nastavení programu Apache v souladu
s nastaveními provedenými přes webové rozhraní..
• defaultcommandfile – textový řetězec obsahující úplnou cestu k souboru, do kterého se
budou ukládat příkazy pro provedení změn v systému v souladu s nastaveními provedenými
přes webové rozhraní.
• postcommandfile – textový řetězec obsahující úplnou cestu k souboru, do kterého se
budou ukládat příkazy pro znovunačtení služeb, které byly změněny.
• apache – textový řetězec obsahující úplnou cestu ke startovacímu skriptu programu Apache.
• bind – textový řetězec obsahující úplnou cestu ke startovacímu skriptu programu BIND.
• proftpd – textový řetězec obsahující úplnou cestu ke startovacímu skriptu programu
ProFTPd.
• apacheuser – textový řetězec udávající uživatelské jméno, s jehož právy je spouštěn
webový server Apache.
• apachegroup – textový řetězec udávající jméno uživatelské skupiny, s jejíž právy je
spouštěn webový server Apache.
• defaultshell - textový řetězec udávající úplnou cestu k příkazovému interpretu, který
bude přiřazen nově vytvářeným uživatelům.
Pro potřeby autentizace jsou vytvořeny dva datové pohledy. Oba pohledy obsahují GID
domény, uživatelské jméno administrátora a heslo. Liší se pouze v loginu. První obsahuje standardní
formát loginů, druhý obsahuje formát loginů pro systémy, které nepovolují znak „.“ . Tyto datové
pohledy jsou přístupné pro uživatele, jenž je pro tyto potřeby definován v souboru config.php.
25
4.3 Uživatelské rozhraní
K webovému rozhraní přistupují dva typy uživatelů. Prvním je správce serveru, na kterém je webové
rozhraní provozováno. Tento uživatel registruje nové domény a smí měnit nastavení stávajících.
Druhým typem jsou správci zaregistrovaných domén. Tito uživatelé smí pouze spravovat své vlastní
domény.
Pro přístup k rozhraní je každému typu uživatele vyhrazena vlastní stránka. Při vstupu na tuto
stránku je nutná autentizace. Při přihlašování k účtu správce webového rozhraní je zadané jméno a
heslo porovnáváno se jménem a heslem uloženém v konfiguračním souboru (config.php). Při
přihlašování k účtu správce domény je zadané jméno a heslo uživatele porovnáváno se jmény a hesly
uloženými v databázi. Při nalezení shody je z databáze vráceno identifikační číslo domény (GID),
které je uloženo do globální proměnné a slouží pro identifikaci editované domény.
Stránka správce domény je tvořena šesti záložkami. Každá ze záložek slouží k nastavení jiné
služby. První záložka nastavuje pouze službu doménového koše a zobrazuje informace o objektech
domény.
Stánka správce serveru je tvořena seznamem již zaregistrovaných domén s tlačítky pro
zaregistrování nové a editaci stávající a již zmíněnými šesti záložkami. Stránky tedy sdílí část
stejného kódu.
26
povolení FTP přístupu nově vytvářeným uživatelům a přípona, která bude nabízena při registraci
nové domény jako výchozí.
Dále je zde cesta k databázovému souboru, uživatelské jméno a heslo pro přístup k této
databázi za účelem kontroly přihlašovacích údajů uživatele, přihlašovací jméno a heslo správce
webového rozhraní, IP adresa a doménový název serveru, na němž je rozhraní provozováno.
Tento soubor tedy obsahuje velice citlivé údaje a proto by k němu neměl mít žádný uživatel
přístup. Měl by tedy být umístěn mimo adresář nastavený jako DocumentRoot serveru Apache a
přístupová práva k tomuto souboru by měl mít pouze správce systému. (Bude-li tento soubor umístěn
mimo adresář s ostatními soubory webového rozhraní, je potřeba upravit direktivu include v těchto
souborech.)
27
5 Závěr
Výsledkem tohoto projektu je webové rozhraní schopné pracovat na mnoha distribucích operačního
systému GNU/Linux a také na systému FreeBSD. Po menších úpravách by určitě bylo schopné
pracovat na všech systémech unixového typu.
Vypracování tohoto projektu pro mne v prvé řadě znamenalo detailní seznámení s několika
distribucemi operačního systému GNU/Linux a operačním systémem FreeBSD. Dále jsem se
seznámil s instalacemi programů do jednotlivých systémů. Seznámil jsem se se systémem balíčků
(rpm v MandrakeLinuxu a Fedoře, tgz ve Slackwareu), ale také se systémem portů (portage v Gentoo
a FreeBSD). Dále jsem musel nastudovat možnosti konfigurace jednotlivých služeb. V poslední řadě
jsem se musel seznámit s prací s databázovým serverem FirebirdSQL jmenovitě s prací v interaktivní
konzoli tohoto serveru.
Projekt je možno v budoucnu dále rozšířit o správu dalších služeb. Je možno přidat podporu
pro nastavení maximální velikosti e-mailové schránky uživatele, podporu pro nastavení skupinových
diskových kvót, zařídit, aby k jednomu databázovému uživateli mohlo být přiřazeno více
databázových souborů.
28
Literatura
[1] Lucas, M. Síťový operační systém FreeBSD: podrobný průvodce. Brno, Computer Press, 2003
[2] Kabir, M. J. Apache server 2: kompletní příručka administrátora. Brno, Computer Press, 2004
[3] Císař, P. InterBase/Firebird: tvorba, programování a správa databází. Brno, Computer Press,
2003
[4] Manuálové stránky programů
[5] Dokumentační stránky programu FirebirdSQL (http://www.firebirdsql.org/index.php?op=doc)
[6] Dokumentační stránky programu Apache (http://httpd.apache.org/docs-2.0/)
[7] Dokumentační stránky programu Postfix URL:<http://www.postfix.org/documentation.html>
[8] Dokumentační stránky programu ProFTPD URL:<http://www.proftpd.org/docs/>
29
Přílohy
30
Tsuffix
tvoří názvev Tdomain Tuser
PK PID
PK GID obsahuje PK UID
suffix používá
domain_name login
admin_mail name
DNSTTL je spravována surname
TIP_server ftp_acces
patří DNSrefresh
PK IPID DNSretry quota
IP DNSexpire FK GID
Temail
FK GID DNSminimum
má quota PK MID
má koš adresa
dpassw ord
FK UID FK UID
TuserDB
FK MID
PK DBID
FK PID
dblogin
dbpass
ddatabase
FK GID
Tapache_item
PK AID
TbindNS
aalias
PK BNSID apath
nserver Tcron_item aOrder
FK GID Allow
PK CID Deny
cmonthday
Tbind_item TbindMX O_ExexCGI
cw eekday
O_Follow SymLinks
PK BIID PK BMXID cyearmonth
O_Includes
itype priority chour
O_Includes_NOEXEC
bitem server cminute
O_Indexes
bvalue FK GID ctask
O_SymLinksIfOw nerMatch
FK GID FK GID
O_MultiView s
FK GID
Tsettings
PK sys type
apache_vhosts_conf
bind_named_conf
bind_directory
postfix_main_cf
postfix_virtual
proftpd_conf
firebird_dir
dot_in_login
domain_directory_root
GIDMIN
UIDMIN
bindcommandfile
postfixcommandfile
apachecommandfile
defaultcommandfile
postcommandfile
apache
bind
proftpd
apacheuser
apachegroup
defaultshell
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ
FAKULTA INFORMAČNÍCH TECHNOLOGIÍ
2
1 Úvod
Webové rozhraní pro správu domén má ulehčit správcům menších poskytovatelů internetových
služeb při zakládání a správě nových internetových domén.
Webové rozhraní je především určeno pro servery pracující na operačním systému GNU/Linux
nebo FreeBSD.
Pomocí webového rozhraní lze vykonávat tyto úkoly:
• registrace nových domén
• správa doménového koše
• přidávání nových uživatelských účtů
• rušení uživatelských účtů
• registrace nových e-mailových adres pro uživatele
• rušení e-mailových adres uživatele
• nastavení diskové kvóty uživateli
• povolení/zakázání ftp přístupu uživateli
• vytváření nových databázových souborů
• rušení databázových souborů
• plánování spouštění úloh na serveru
• správa webových složek
• zabezpečený přístup k webovým stránkám serveru přes protokol HTTPS
• správa doménových jmen
Programy obsluhující služby, které jsou pomocí webové rozhraní nastavovány:
• web – Apache web server
• DNS – Bind
• databáze – FirebirdSQL
• e-mail – Postfix
• plánovač úloh – cron
• diskové kvóty – quota
3
2 Instalace
Pro instalaci slouží skript install.sh. Úkolem tohoto skriptu je zkopírování souborů webového
rozhraní na zvolené místo a jeho konfigurace.
Skript se bude tázat na IP adresu počítače, jeho doméno jméno, login administrátora webového
rozhraní (tento login by v systému neměl existovat), heslo, adresář pro uložení databáze webového
rozhraní a na několik hodnot, které budou použity jako výchozí pro nově založené domény.
Skript také potřebuje zjistit, jaké přípony domén se budou moci registrovat a která ze přípon
bude brána jako výchozí. Pro službu HTTPS bude potřeba zadat všechny IP adresy počítače, kromě
již dříve zapsané.
Následuje dotaz na typ systému. Různé distribuce operačního systému GNU/Linux se liší
uložením konfiguračních souborů a také typem uživatelských účtů (jedny povolují symbol „.“ v
loginu, jiné ne). Ve skriptu je tedy uloženo nastavení několika distribucí a při instalaci si lze jedno
nastavení vybrat. Pokud však bude webové rozhraní provozováno na jiné distribuci, která mezi
nabízenými není, je potřeba zodpovědět další dotazy.
Po zkopírování souborů webového rozhraní je potřeba zajistit v konfiguraci webového serveru
Apache tak, aby byl adresář, kam se soubory nakopírovaly, pro něj přístupný. Dále je nutné
nakonfigurovat Apache tak, aby byl schopen komunikovat na protokolu HTTPS. Je totiž vhodné
přistupovat k webové rozhraní přes tento protokol.
4
3 Přístup k rozhraní přes účet správce
3.1 Přihlášení
Při vstupu na stránku root.php jsme vyzváni k zadání uživatelského jména a hesla. Jedná se o login a
heslo, které jsme si zvolili při instalaci a je uloženo v souboru config.php (proměnná
SQL_USERNAME a SQL_PASSWORD). Po zadání loginu a hesla proběhne kontrola. Pokud jsme
zadali hodnoty špatně, je dialog zobrazen znovu. Jestliže jsme heslo či login zapomněli, můžeme
stisknout tlačítko Storno a přihlašování přerušit.
Po úspěšném přihlášení se nám zobrazí stránka, v jejíž levé části je seznam již registrovaných domén
a 2 tlačítka. Jedno pro zaregistrování nové domény a druhé pro editaci domény již zaregistrované.
5
Po vyplnění všech polí stiskneme tlačítko OK a vyčkáme, dokud neproběhne kontrola zadaných
údajů. Dopadne-li kontrola dobře, je doména zaregistrována a jsou vypsány základní údaje o doméně.
Dojde-li při kontrole zadaných údajů ke zjištění nějakých chyb, je formulář vypsán znova s
vyznačením chybných míst.
6
3.3.2.2 Editace uživatele
Na tomto formuláři se zobrazí všechny informace o uživateli. Editovat však můžeme pouze
uživatelskou kvótu, ftp přístup a heslo.
Pokud se jedná o správce domény, musíme před změnou hesla zadat staré heslo, pro ostatní
uživatele stačí zadat pouze nové heslo. (U správce domény se mění heslo jak pro přístup do systému,
tak pro webové rozhraní správy. Proto se nedoporučuje měnit heslo jiným způsobem než tímto.)
Na formuláři je také seznam e-mailů daného uživatele. Můžeme tedy uživateli přidat další e-
mailové adresy, či některé zrušit. Nelze však zrušit adresa, kterou uživatel získal při zaregistrování do
domény.
Pokud již nějaký uživatelský účet nepotřebujeme, můžeme jej odstranit. V tom případě s ním
odstraníme i všechny e-mailové adresy, které byly k tomuto uživateli registrovány.
Nelze však odstranit účet administrátora domény.
• TTL – doba platnosti domény – jak dlouho si smějí názvové servery uchovávat data o doméně v
mezipaměti. Lze změnit.
• Primární server – počítač, na kterém je uložen primární soubor domény – je nastaveno
provozovatelem webového rozhraní a nelze jej změnit.
7
• E-mailová adresa správce – elektronická adresa osoby odpovědné za danou doménu = osoba,
která si danou doménu registrovala. Lze změnit.
• Refresh – Doba udávající, jak často se bude sekundární názvový server připojovat k primárnímu
za účelem zjištění případných změn v konfiguraci. Lze změnit.
• Retry – Pokud se nepodaří sekundárnímu serveru připojit k primárnímu z důvodu zjištění změn
konfigurace, pokusí se o to po tomto čase. Lze změnit.
• Expire – Pokud se sekundárnímu serveru nepodaří svá data aktualizovat, přestane svá data po
této době posílat a zneplatní je. Lze změnit.
• Minimum TTL – doba platnosti negativních odpovědí serveru. Lze změnit.
Pokud jsme nastavili hodnoty podle svého úmyslu, můžeme je uvést v platnost stisknutím
tlačítka Potvrdit změny.
Můžeme přidat další jmenné servery domény, popřípadě je editovat, či odebrat. Nelze však změnit ani
odstranit primární server domény. Zápis názvu serveru se řídí pravidly programu BIND, proto musí
bát název ukončen znakem „.“.
3.3.4.4 Počítače
Můžeme přidávat do domény další počítače. To uděláme stisknutím tlačítka Přidat. Na nově
zobrazeném formuláři vyplníme název počítače, typ záznamu vybereme „A“ a zapíše IP adresu
počítače.
Název počítače smí být tvořen pouze malými alfabetickými znaky bez interpunkce, číslicemi a
znaky „-“ a „_“. Stisknutím Přidat jsme počítač zaregistrovali.
Takto přidanému počítači smíme přidat alias. Stiskneme tedy tlačítko Přidat a do kolonky
Název počítače vypíšeme druhé jméno pro počítač, typ záznamu „CNAME“ a jako adresu uvedeme
název počítače zadaný při registraci IP.
8
3.3.5 Záložka „Web“
9
3.4 Přístup k rozhraní přes účet zákazníka
Při vstupu na stránku private.php jsme vyzváni k zadání uživatelského jména a hesla. Login i heslo
nám byly přiděleny při registraci domény. Po zadání loginu a hesla proběhne kontrola. Pokud jsme
zadali hodnoty špatně, je dialog zobrazen znovu. Jestliže jsme heslo či login zapomněli, můžeme
stisknout tlačítko Storno a přihlašování přerušit.
Po úspěšném přihlášení se nám zobrazí stránka, která je tvořena záložkami. Popis těchto
záložek a práce při spravování domény je popsán v části Editace již zaregistrovaných domén.
10
4 Závěr
Nastavování doménových služeb přes webové rozhraní je jednoduché. V budoucnu budou doplněny
další služby, např. nastavování velikosti e-mailových schránek.
11