tcp_wrappers je základní systém pro zabránění (nebo výslovné povolení) přístupu ke službám ze specifikovaných hostitelských počítačů. V kostce to pracuje takto:
inetd (internet super-server) spouští mnoho různých serverů; mnoho jich je "wrapped" prostřednictvím tcpd. Jinými slovy, ty servery ve skutečnosti spouští tcpd, ale inetd to neví (a ani se o to nestará). tcpd zaznamená pokus o připojení a pak zkontroluje soubory /etc/hosts.allow a /etc/hosts.deny, aby se podíval, zda může být připojení povoleno.
Pravidla obsažená v těchto souborech mohou být poněkud komplexnější, ale předpokládejme, že pyramid.tdn je opravdu protivný a nenechá ubohého malého mojo.tdn napokoji. Tak mojo.tdn může vrhnout takovýto řádek do /etc/hosts.deny:
ALL: pyramid.tdn |
Tento řádek by měl být dost jasný: Zabraňuje pyramidovi užívat na počítači mojo jakékoliv služby, které jsou chráněny promocí tcpd. Když budu obtěžován celou doménou (kromě té pyramidy), mohl bych řádek takto vylepšit:
ALL: pyramid.tdn, .otravna.domena |
Jenže počkejme! Můj kámoš Hobbes sedí u počítače na .te.otravne.domene, ale já mu chci umožnit přístup ke mně (ostatním otravům ale ne). I to je snadné. Nechám už soubor hosts.deny tak jak je, a přidám následující řádek do hosts.allow, aby Hobbes mohl ke mně:
ALL: hobbes.otravna.domena |
Mnohem více toho najdete v tcpd(8), v hosts_access(5) a v hosts_options(5). Systém tcp_wrappers je mnohem flexibilnější než jak jsme si ukázali a stojí za námahu zabývat se jím mnohem hlouběji.