Linuxové noviny | 01-02/2001 | |||
| ||||
Balíček tcp_wrappers umožňuje sledovat a filtrovat příchozí spojení řady běžně používaných síťových služeb. Kromě utility tcpd, která se používá pro kontrolu přístupu ke službám ve spojení s inetd obsahuje tcp_wrappers i knihovnu s jednoduchým rozhraním, s jejíž pomocí lze podporu tcp_wrappers zabudovat i do jiných aplikací, které nejsou spouštěny přes "super-server" inetd. Tcp_wrappers povolují či zamítají přístup ke službám na základě informace o jménu a IP adrese vzdáleného systému, případně i informace o vlastníkovi příchozího spojení na vzdáleném systému. Konfigurace je uložena v souborech /etc/hosts.allow a /etc/hosts.deny a je podrobně popsána v článku o konfiguraci inetd a tcp_wrappers; dále se jí zde nebudeme zabývat. Předmětem tohoto článku bude ukázka použití knihovny libwrap, tedy zabudování podpory tcp_wrappers do "stand-alone" síťových aplikací. Pro potřeby knihovny libwrap je informace o spojení uložena ve struktuře request_info, kterou je potřeba naplnit potřebnými údaji. Následně aplikace zavolá některou z funkcí pro kontrolu přístupu. Ve struktuře request_info je zejména potřeba naplnit následující položky:
Knihovna libwrap poskytuje pro manipulaci s request_info následující funkce:
Pro povolení přístupu ke službě jsou k dispozici následující dvě funkce:
Rozhraní knihovny libwrap je popsáno v manuálové stránce hosts_access(3), konfigurace přístupu k službám tcp_wrappers v hosts.access(5). Rovněž zdrojové kódy tcp_wrappers jsou velmi přehledné a komentované.
Uveďme příklad jednoduchého iterativního serveru, komunikujícího přes TCP. Příklad uvádí použití hosts_access() s využitím automatické identifikace vlastníka příchozího spojení knihovnou libwrap.
ShrnutíS pomocí tcp_wrappers můžeme jednoduchým způsobem kontrolovat a omezit přístup k síťovým službám. Tento způsob je běžně používán nejen v souvislosti se službami spouštěnými přes inetd, ale je využíván i v řadě jiných síťových služeb jako je např. ssh či portmap (NFS apod.). Knihovna libwrap umožňuje jednoduchým způsobem tuto funkčnost začlenit do libovolných síťových aplikací.![]() |