Xinetd
xinetd (extended Internet daemon) je v informatice název open-source démona, který zastává funkci super-serveru. Běží na mnoha unixových systémech a slouží k obsluze internetových služeb (ftp server, http server, ssh server apod.). Funkčně nahrazuje démona inetd, přičemž nabízí navíc lepší bezpečnost, a proto ho využívá většina současných linuxových distribucí.

Popis 
Démon xinetd naslouchá příchozím požadavkům v síti a spustí příslušnou službu pro daný požadavek. Požadavky jsou zpracovány s použitím čísel portů jako identifikátory a xinetd spustí jiného démona, který požadavek zpracuje. To může být použito pro spuštění služeb využívající jak privilegované tak neprivilegované porty.

Démon xinetd má k dispozici mechanismy řízení přístupu, např. TCP Wrapper, rozšířené možnosti loggování a schopnost nastavovat dostupnost služby v určitém čase. Je možné nastavit limity počtu serverů, které může systém spustit, a nasadit obranné mechanismy na ochranu před skenery portů.

Na některých implementacích systému OS X tento démon obsluhuje různé internetové služby, např. FTP nebo Telnet. Jako rozšíření původního Inetd nabízí vyšší úroveň zabezpečení. Démon xinetd nahradil původní Inetd v systému OS X 10.3, nicméně Apple inetd udržuje v systému z důvodů kompatibility.

Konfigurace 
Konfigurace démona xinetd je ve výchozím stavu uložena v souboru /etc/xinetd.conf a nastavení jednotlivých služeb, které budou obsluhovány, je uloženo v adresáři /etc/xinetd.d. Konfigurace každé služby obvykle zahrnuje přepínač, který určí, zda démon xinetd službu povolí nebo zakáže.

Níže je uveden konfigurační soubor pro RFC 868 time server.

# default: off
# description: An RFC 868 time server. This protocol provides a
# site-independent, machine readable date and time. The Time service sends back
# to the originating source the time in seconds since midnight on January first
# 1900.
# This is the tcp version.
service time
{
        disable         = yes
        type            = INTERNAL
        id              = time-stream
        socket_type     = stream
        protocol        = tcp
        user            = root
        wait            = no
}

# This is the udp version.
service time
{
        disable         = yes
        type            = INTERNAL
        id              = time-dgram
        socket_type     = dgram
        protocol        = udp
        user            = root
        wait            = yes
}

Řádky se znakem "#" na začátku jsou komentáře, které nemají na konfiguraci vliv. Existují dvě verze služby, první je založena na protokolu TCP, druhá je založena na protokolu UDP. Typ a plánované použití služby určuje výběr protokolu. Jednoduše řečeno, UDP není vhodný pro přenos velkých objemů dat, protože nezaručuje doručení paketů ve správném pořadí a nezajišťuje integritu přenesených dat, ale je rychlejší než TCP. TCP tyto funkce zajišťuje ale na úkor rychlosti. V konfiguračním souboru se pro obě verze ve složených závorkách vyskytují dva sloupce. První je typ volby, druhý je aplikovaná proměnná. Možnost disable určuje, zda bude služba spuštěna nebo ne.

Existují tři typy služeb. Typ internal je služba poskytovaná samotným démonem xinetd. Typ RPC je služba založená na RPC, která je definována v souboru /etc/rpc a typ unlisted je služba, která není definována ani v souboru /etc/services ani v /etc/rpc.

Id je unikátní identifikátor služby.

Socket_type určuje způsob přenosu dat prostřednictvím služby. Existují tři typy: stream, dgram a raw. Poslední možnost je užitečná, pokud chceme vytvořit služby na základě nestandardního protokolu. 

S možností user je možné vybrat uživatele, pod kterým bude služba spouštěna. Z bezpečnostních důvodů se doporučuje, aby služba nebyla spouštěna pod uživatelem root. Pokud je možnost wait nastavena na yes, tak démon xinetd neobdrží požadavek na spuštění, pokud spojení již existuje. Počet spojení je tak omezen na jeden. To poskytuje velmi dobrou ochranu, když chceme v čase navázat pouze jedno spojení.

Existuje mnoho dalších možností nastavení xinetd. Ve většině linuxových distribucí lze úplný seznam možných variant a jejich popis pomocí příkazu man xinetd.

Pro použití nové konfigurace se musí zavolat tzv. SIGHUP signál, který způsobí nové načtení konfiguračních souborů. Toho lze dosáhnout pomocí následujícího příkazu: $ kill -SIGHUP "PID"PID je aktuální identifikátor procesu xinetd, který lze získat pomocí příkazu:$ pgrep xinetd

Reference 

Linux