TCP Wrapper

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Principiální schéma ochrany síťových služeb prostřednictvím TCP Wrapperu v UNIXových operačních systémech

TCP Wrapper je mechanismus, který umožňuje v unixových operačních systémech řídit přístup ke službám serveru na základě adresy, ze které přicházejí požadavky klienta.

Vkládá se do komunikace mezi spouštěnou službu a tzv. „super-server“ inetd, který naslouchá požadavkům jím spravovaných služeb. +more Úkolem TCP Wrapperu je ochránit volanou síťovou službu před nepovoleným přístupem. Zavádí podporu pro vracení stavových zpráv klientovi při pokusu o připojení ke službě. Dále informuje správce operačního systému o příchozích požadavcích, které zapisuje do systémového logu.

Autorem původního kódu programu je respektovaný holandský programátor Wietse Venema, který působil na Eindhoven University of Technology. V roce 1990 totiž byla univerzita pod neustálými útoky neznámého holandského hackera, který objevil možnost jak povýšit svá oprávnění na stanicích s operačním systémem Unix a v utajení mazal často nezálohovaná vědecká data.

Přestože může být TCP Wrapper provozován jako samostatný program spuštěný prostřednictvím internetového démona (inetd), dnes se nejčastěji používá jako knihovna (libwrap) připojená k libovolnému programu, která následně komunikuje s internetovým démonem (inetd). Původně byl určen pro síťové služby na bázi TCP, později UDP, nyní již existuje i implementace pro filtrování ICMP paketů (např. +more pingd).

...

Vlastnosti

Výhody

zaručuje transparentnost spojení mezi klientem a chráněnou službou * umožňuje centralizovanou správu prostřednictvím sdílení konfiguračních souborů jednotlivými síťovými službami * v některých ohledech výkonnější než skutečný firewall

Nevýhody

neochrání služby před vyřazením z provozu opakovaným častým připojením známým jako „Denial of Service“ * neposkytuje ochranu službám zavedeným při bootování, které nadále běží na pozadí

Princip činnosti

Při požadavku klienta na spuštění nějaké konkrétní služby, se namísto /usr/sbin/inetd (démon inetd), spouští nejprve program /usr/sbin/tcpd (samotný TCP Wrapper), který na základě definovaných pravidel rozhodne, jestli má klient ke službě přístup. Po úspěšné autorizaci předává řízení démonu inetd, který klientovi službu poskytne. +more Postup zpracování požadavku znázorňuje obrázek vpravo.

Konfigurace služeb pro použití TCP Wrapperu

Jestliže chcete použít TCP Wrapper na kontrolu přístupu ke službám inetd, musíte nejprve příslušně upravit konfigurační soubor /etc/inetd.conf.

Příklad konfigurace např. pro službu FTP

Původně: :ftp stream tcp nowait root /usr/sbin/in.ftpd

* Po úpravě: :ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd

* Po aplikaci je nutné restartovat inetd nebo alespoň obnovit jeho konfiguraci příkazem: :$ /etc/init.d/inetd reload

Nastavení řízení přístupu

Pro správnou funkci TCP Wrapperu jsou důležité 2 textové soubory: /etc/hosts. allow a /etc/hosts. +moredeny. Obsah těchto souborů určuje, které služby ze kterých adres budou povolené resp. zakázané.

Pořadí zpracování

# jestliže požadavek určený dvojicí démon - adresa klienta vyhoví některému pravidlu v souboru /etc/hosts. allow, přístup bude umožněn; # jestliže požadavek určený dvojicí démon - adresa klienta vyhoví některému pravidlu v souboru /etc/hosts. +moredeny, přístup nebude umožněn; # v ostatních případech je přístup implicitně povolen.

Upozornění: Jestliže by se soubory v požadovaném umístění nenacházely, byly by systémem považovány za prázdné, přičemž důsledkem jejich absence by bylo vyřazení 'TCP Wrapperu' z činnosti a všechny požadavky na služby by tak byly automaticky schváleny!

Struktura konfiguračních souborů /etc/hosts.allow a /etc/hosts.deny

: [: : : . ] * Každé pravidlo musí být na samostatném řádku. +more * Prázdné řádky nebo řádky uvozené znakem # (komentář) jsou ignorovány. * V poli seznam_demonu je dovoleno uvést více názvů démonů vzájemně oddělených čárkami. * V poli adresy_klientu je možné specifikovat klienta pomocí klauzule @. * Do oddělení volitelne lze dosadit ke každému pravidlu allow (povolit) nebo deny (blokovat). To umožňuje administrátorovi konsolidovat pravidla do jednoho souboru. * Oba soubory by měly být zakončeny prázdným řádkem. V opačném případě skončí testování posledního pravidla chybou, která bude zaznamenána do /var/log/messages nebo do /var/log/secure.

Speciální výrazy

Místo jména démona můžete použít výraz ALL, který vyhovuje jménu libovolného démona.

* Místo adresy klienta můžete použít např.: :192.168.1. - vyhoví všechny IP adresy začínající 192.168.1. (např. 192.168.1.254)

:192.168.1.0/255.255.255.0 - vyhoví všechny IP adresy odpovídající zadané masce (tj. 192.168.1.0 - 192.168.1.255)

: - IPv6 adresu uzavřenou do '[ ] (hranatých závorek)

:.domena.cz - vyhoví všechny adresy končící doménou domena.cz (např. server.domena.cz)

:/cestu/k/souboru - odkazuje např. na soubor s dlouhým seznamem adres klientů

* Adresu klienta lze nahradit také následujícími výrazy: :ALL - vyhoví libovolné adrese

:LOCAL - splněno pro adresy z lokální sítě

:UNKNOWN - splněno pro případy, kdy nelze získat ze zadané adresy odpovídající IP adresu (kontroluje se DNS a reverzní DNS záznam)

:KNOWN - přesný opak předchozího, vyhoví tedy pouze v případě, kdy lze získat IP adresu a opačně

:PARANOID - nejprve zjistí reverzní záznam pro IP adresu klienta a následně pro tento záznam zjistí IP adresu. Paranoidní podmínka je splněna v případě, že se zjištěné záznamy nerovnají. +more To může nastat například v případě, kdy klient maskuje svoji skutečnou IP adresu nebo v případě chybného reverzního záznamu v DNS.

:EXCEPT - slouží pro zápis výjimky z pravidla

Doporučení:' Z hlediska bezpečnosti se doporučuje klienty identifikovat prostřednictvím IP adres namísto doménových jmen vzhledem k možnému ochromení DNS serverů.

Bezpečnostní přístupy

a) Otevřený systém

:„Důvěřujeme téměř všem, ostatním zakážeme explicitně přístup.“ (jinými slovy: „Co není zakázané, je tedy povolené.“)

* Obsah souboru /etc/hosts.allow: :ALL : ALL * Příklad obsahu souboru /etc/hosts.deny: :ipop3d : server.domena.cz 192.168.10.

b) Uzavřený systém

:„Nedůvěřujeme téměř nikomu, když někomu důvěřujeme, explicitně mu povolíme přístup.“

* Obsah souboru /etc/hosts. deny: :ALL : ALL * Příklad obsahu souboru /etc/hosts. +moreallow: :ipop3d : ALL EXCEPT PARANOID - přístup na POP3 povolen všem těm, kteří nefalšují svoji IP adresu.

Testování funkčnosti TCP Wrapperu

Pro testování funkčnosti TCP Wrapperu existují v balíčku [ftp://ftp. porcupine. +moreorg/pub/security/tcp_wrappers_7. 6. tar. gz tcp_wrappers] následující dvě utility:.

tcpdchk

- umístění: /usr/sbin/tcpdchk

- zkoumá konfigurační soubory TCP Wrapperu a hlásí všechny potenciální problémy, které mohou obsahovat: * absence názvů cest v /etc/inetd. conf * služby nastavené tcpd, ale ne v /etc/inetd. +moreconf * služby, které nemohou být chráněny pomocí TCP Wrapperu * syntaktické chyby v konfiguračních souborech tcpd nebo /etc/inetd. conf.

Příklad použití

:$ tcpdchk -v # přepínač -v zajišťuje podrobný výpis

tcpdmatch

- umístění: /usr/sbin/tcpdmatch

- testuje funkčnost zavedených pravidel

- na příkazové řádce očekává jako parametry jméno testovaného démona a adresu, ze které se připojuje klient, následně prohledá soubory s pravidly /etc/hosts. allow resp. +more /etc/hosts. deny a vyhodnotí přístup; výstupem programu je granted (povoleno) nebo denied (zamítnuto) spolu s řádkem, na kterém se uplatnilo pravidlo.

Příklad na testování

:$ tcpdmatch in.ftpd 192.168.1.10 # testování přístupu k démonu ftpd z adresy 192.168.1.10

Více možností poskytnou manuálové stránky pro #tcpdchk|tcpdchk a #tcpdmatch|tcpdmatch nebo trochu skrytý manuál k souborům /etc/hosts. allow a /etc/hosts. +moredeny dostupný pod $ man 5 hosts_access.

Odkazy

Poznámky

Reference

Související články

Inetd * Firewall * Denial of Service * Hosts soubor

Externí odkazy

[ftp://ftp. porcupine. +moreorg/pub/security/index. html Wietse's tools and papers] (anglicky) * [url=https://web. archive. org/web/20111204053517/http://www. centos. org/docs/5/html/Deployment_Guide-en-US/ch-tcpwrappers. html]TCP Wrappers and xinetd[/url] - dokumentace pro CentOS (anglicky).

Kategorie:BSD Kategorie:Bezpečnostní_software Kategorie:Síťový software Kategorie:Software pro Unix Kategorie:Svobodný software

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top