xinetd - župan pro síťové služby

xinetd - eXtended InterNET services daemon - zajišťuje dobrou ochranu serveru proti útokům zvenčí a eliminuje možnost Denial of Services (DoS) útoků. Spolu s tcpd tvoří sadu pro nastavení mnoha bezpečnostních opatření pro přístup vzdálených uživatelů s monitorováním přístupů k daným službám. Běžný uživatel jej může použít pro vytvoření serveru na některém z neprivilegovaných portů, protože xinetd nevyžaduje informaci o službě v /etc/services.

Úvod

Klasický inetd spravuje síťová připojení k serveru. Když přijde dotaz na port serveru, který je administrován inet démonem, inetd jej pošle programu tcpd. Tcpd zkontroluje v souborech hosts.{allow, deny} pokud jsou splněny bezpečnostní podmínky a spustí korespondující proces (např. ftp). Tento mechanismus se též nazývá tcp_wrapper.

Xinetd je náhradou inet démona s těmito rozšiřujícími vlastnostmi:

  • kontrola přístupu pro TCP, UDP a RCP spojení
  • připojení ke službě může být časově závislé
  • úplné logování, pro úspěšná i neůspěšná spojení
  • zabezpečení před DoS útoky
    • omezením počtu klientských spojení
    • omezením počtu spuštěných procesů na serveru
    • omezením velikosti logovacích souborů
  • připojením služby pouze k danému síťovému rozhraní (např. pokud chceme mít službu spuštěnu pouze pro intranet)
  • může být použit jako proxy pro přesměrování služby na jiný server

Kompilace a instalace

Xinetd naleznete na domovské stránce http://www.xinetd.org.

Kompilaci provedete s použitím známých příkazů ./configure; make; make install , u příkazu configure můžete ještě volit tyto direktivy:

  1. --with-libwrap : xinetd démon vždy kontroluje konfigurační soubory tcpd démona (/etc/hosts.{allow, deny})
  2. --with-loadavg : dovolí deaktivaci některých služeb pokud je server přetížen. Používá se hlavně pro prevenci před DoS útoky
  3. --with-inet6 : podpora IP protokolu IPv6, IPv4 a IPv6 jsou obsluhovány současně

Konfigurace

/etc/xinetd.conf je výchozím konfiguračním souborem. Soubor začíná sekcí defaults. Atributy v sekci defaults budou použity u všech služeb spuštěných xinet démonem. Poté jsou definovány jednotlivé služby s vlastními parametry. Do souboru je možné vložit direktivu includedir /nazev_adresare , potom jsou jednotlivé služby definovány v oddělených souborech v adresáři nazev_adresare.

Sekce defaults vypadá takto:

defaults
{
  atribut operator hodnota(y)
}


Sekce popisující každou službu vypadá takto:

service jmeno_sluzby
{
  atribut operator hodnota(y)
}

Operátor může nabývat těchto tří hodnot:

  1. '=' : přiřadí jednu hodnotu k atributu
  2. '+=' : přidá další hodnotu k seznamu hodnot
  3. '-=' : odebere hodnotu ze seznamu hodnot

Seznam atributů a hodnot:

Atribut Hodnoty
flags
  • IDONLY : přijme pouze ta spojení, u kterých je možno identifikovat vzdáleného uživatele tj. na vzdáleném počítači běží identifikační server
  • NORETRY : po neúspěchu již spojení neakceptuje
  • NAMEINARGS : uvádějte při použití tcpd, tedy obsah atributu server bude tcpd a server_args budou parametry serveru
  • DISABLE : služba je vypnuta
log_type
  • SYSLOG selector[level] : pro zápis logů bude použit systémový log
  • FILE [max_size[absolute_max_size]] : pro zápis bude použit soubor. (FILE /var/log/ftplog)
log_on_success
  • PID : PID serveru
  • HOST : adresa klienta
  • USERID : identifikace klienta
  • EXIT : status ukončení procesu
  • DURATION : délka spojení
log_on_failure
  • HOST,USERID : viz výše
  • ATTEMPT : loguje každý pokus o spojení
  • RECORD : loguje všechny dostupné informace o klientovi
nice Mění prioritu serveru
no_access Seznam klientů, kteří nemají přístup ke službě
only_from Seznam klientů kteří mají ke službě přístup. Pokud atribut nemá žádnou hodnotu, přístup je zakázán
port Port služby
protocol Uvedený protokol musí existovat v /etc/protocols
server Cesta k spustitelnému souboru
server_args Další argumenty předané spustitelnému souboru serveru
socket_type * stream (TCP), dgram (UDP), raw (IP direct access) nebo seqpacket
type
  1. RPC : služby definované v /etc/rpc
  2. INTERNAL : služby přímo poskytované xinet démonem (echo, daytime, chargen a discard)
  3. UNLISTED : pro služby nedefinované ani v /etc/rcp a /etc/services
wait *
  • yes : jednovláknová služba - spustí pouze jednu instanci serveru a pro obsloužení dalšího dotazu bude čekat až dojde k ukončení serveru
  • no : vícevláknová služba
cps Maximální počet příchozích spojení.Pokud je překročen tento limit, služba se vypne. Sestává ze dvou parametrů, prvním je počet příchozích spojení za sekundu, druhý parametr udává dobu (v sekundách) za jakou se má služba opět obnovit
instances Definuje maximální počet serverů stejného typu spuštěných současně
max_load Maximální zatížení serveru, po překrošení tohoto limitu jsou všechna spojení odmítnuta
bind Připojení služby k IP adrese
redirect Funguje jako transparentní proxy, přesměruje požadavek z lokálu na port jiného počítače (redirect = 192.168.1.12 23)
per_source Integer nebo UNLIMITED - omezení počtu spojení uskutečněných ze stejného zdroje

* - požadované atributy u definice služby

Příklad sekce defaults:

defaults
{
  instances = 15
  log_type = FILE /var/log/servicelog
  log_on_success = HOST PID USERID DURATION EXIT
  log_on_failure = HOST USERID RECORD
  only_from =
  per_source = 5

  disabled = shell login exec comsat
  disabled = telnet ftp
  disabled = name uucp tftp
  disabled = finger systat netstat

  #INTERNAL
  disabled = time daytime chargen servers services xadmin

  #RPC
  disabled = rstatd rquotad rusersd walld
}

Příklad definice služby:

service ftp
{
  socket_type = stream
  wait = no
  user = root
  server = /usr/sbin/in.ftpd
  server_args = -1
  instances = 4
  access_times = 7:00-12:30 13:30-21:00
  nice = 10
  only_from = 192.168.1.0/24

}

Odkazy:

http://www.xinetd.org - domovská stránka xinetd



Autor: Roman Pěch
Vytvořeno: 16.03.2002
Oblast: Sítě