Vyhledávání na webu

Jak zabezpečit síťové služby pomocí TCP Wrapperů v Linuxu


V tomto článku vysvětlíme, co jsou to TCP wrappery a jak je nakonfigurovat, aby omezily přístup k síťovým službám běžícím na linuxovém serveru. Než začneme, musíme si však ujasnit, že použití TCP wrapperů neodstraňuje nutnost správně nakonfigurovaného firewallu.

V tomto ohledu můžete tento nástroj považovat za seznam řízení přístupu založený na hostiteli, a nikoli za konečné bezpečnostní opatření pro váš systém. Použitím firewallu a TCP wrapperů místo upřednostňování jednoho před druhým zajistíte, že váš server nezůstane s jediným bodem selhání.

Porozumění hosts.allow a hosts.deny

Když síťový požadavek dorazí na váš server, TCP wrappery pomocí hosts.allow a hosts.deny (v tomto pořadí) určí, zda má mít klient povoleno používat danou službu. .

Ve výchozím nastavení jsou tyto soubory prázdné, všechny zakomentované nebo neexistují. Vše je tedy povoleno přes vrstvu TCP wrappers a váš systém se může spoléhat na firewall pro plnou ochranu. Protože to není žádoucí, z důvodu, který jsme uvedli v úvodu, ujistěte se, že oba soubory existují:

ls -l /etc/hosts.allow /etc/hosts.deny

Syntaxe obou souborů je stejná:

<services> : <clients> [: <option1> : <option2> : ...]

kde,

  1. služby je čárkami oddělený seznam služeb, na které by se mělo použít aktuální pravidlo.
  2. klienti představují seznam názvů hostitelů nebo IP adres oddělených čárkami, kterých se pravidlo týká. Přijímají se následující zástupné znaky:

    1. VŠE odpovídá všemu. Platí pro klienty i služby.
    2. LOCAL odpovídá hostitelům bez tečky v jejich FQDN, jako je localhost.
    3. ZNÁMÝ označuje situaci, kdy je znám název hostitele, adresa hostitele nebo uživatel.
    4. NEZNÁMÝ je opakem ZNÁMÝ.
    5. PARANOID způsobí přerušení připojení, pokud zpětné vyhledávání DNS (nejprve na IP adresu k určení názvu hostitele, poté na název hostitele k získání IP adres) vrátí v každém případě jinou adresu.
  3. Nakonec volitelný seznam akcí oddělených dvojtečkou označuje, co by se mělo stát, když je dané pravidlo spuštěno.

Možná budete chtít mít na paměti, že pravidlo povolující přístup k dané službě v /etc/hosts.allow má přednost před pravidlem v /etc/hosts.deny zakazující to. Pokud se navíc na stejnou službu vztahují dvě pravidla, bude se brát v úvahu pouze to první.

Bohužel ne všechny síťové služby podporují použití TCP wrapperů. Chcete-li zjistit, zda je daná služba podporuje, postupujte takto:

ldd /path/to/binary | grep libwrap

Pokud výše uvedený příkaz vrátí výstup, může být zabalen do TCP. Příkladem jsou sshd a vsftpd, jak je uvedeno zde:

Jak používat TCP Wrappers k omezení přístupu ke službám

Při úpravách /etc/hosts.allow a /etc/hosts.deny nezapomeňte přidat nový řádek stisknutím klávesy Enter za posledním neprázdný řádek.

Chcete-li povolit přístup SSH a FTP pouze k 192.168.0.102 a localhost a zakázat všechny ostatní, přidejte tyto dva řádky do /etc/hosts.deny :

sshd,vsftpd : ALL
ALL : ALL

a následující řádek v /etc/hosts.allow:

sshd,vsftpd : 192.168.0.102,LOCAL
#
hosts.deny	This file contains access rules which are used to
#		deny connections to network services that either use
#		the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		The rules in this file can also be set up in
#		/etc/hosts.allow with a 'deny' option instead.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : ALL
ALL : ALL
#
hosts.allow	This file contains access rules which are used to
#		allow or deny connections to network services that
#		either use the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : 192.168.0.102,LOCAL

Tyto změny proběhnou okamžitě bez nutnosti restartu.

Na následujícím obrázku můžete vidět účinek odstranění slova LOCAL z posledního řádku: server FTP bude pro localhost nedostupný. Poté, co přidáme zástupný znak zpět, bude služba opět dostupná.

Chcete-li povolit všechny služby hostitelům, jejichž název obsahuje example.com, přidejte tento řádek do hosts.allow:

ALL : .example.com

a chcete-li zakázat přístup k vsftpd počítačům na 10.0.1.0/24, přidejte tento řádek do hosts.deny:

vsftpd : 10.0.1.

Na posledních dvou příkladech si všimněte tečky na začátku a na konci seznamu klientů. Používá se k označení „VŠICHNI hostitelé a/nebo klienti, kde název nebo IP obsahuje tento řetězec“.

Byl pro vás tento článek užitečný? Máte nějaké dotazy nebo připomínky? Neváhejte nám napsat poznámku pomocí formuláře komentáře níže.