TCP wrappery poskytují základní filtrování příchozího síťového provozu. Přístup k „zabaleným“ síťovým službám běžícím na linuxovém serveru z jiných systémů lze povolit nebo zakázat. TCP zabalená služba je služba, která byla zkompilována proti knihovně libwrap.a. Pomocí příkazu ldd určete, zda je síťová služba propojena s libwrap.a. Následující příklad určuje název absolutní cesty ke službě sshd a poté uvádí sdílené knihovny propojené se službou sshd pomocí příkazu grep k vyhledání knihovny libwrap:
# which sshd /sbin/sshd
# ldd /sbin/sshd | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f1fea580000)
Konfigurační soubory
TCP wrappery spoléhají na dva konfigurační soubory jako základ pro řízení přístupu:
- /etc/hosts.allow
- /etc/hosts.deny
Když se klient pokusí připojit k síťové službě na vzdáleném systému, jsou tyto soubory použity k určení, zda je klientský přístup povolen nebo odepřen. Pomocí /etc/hosts.allow a /etc/hosts.deny definujte pravidla, která selektivně povolují nebo zakazují klientům přístup k serverovým démonům v lokálním systému. Formát záznamů je pro oba soubory následující:
daemon_list : client_list [: command]
Následuje popis každého pole:
- seznam_démonů :čárkami oddělený seznam démonů nebo klíčové slovo ALL pro všechny démony
- seznam_klientů :Čárkami oddělený seznam klientů nebo klíčové slovo VŠE pro všechny klienty
- příkaz :Volitelný příkaz, který se provede, když se klient pokusí o přístup k démonu serveru
Chcete-li povolit přístup klienta, přidejte název hostitele klienta nebo adresu IP do souboru /etc/hosts.allow. Chcete-li zakázat přístup klienta, přidejte jeho jméno nebo IP adresu do /etc/hosts.deny.
Soubor /etc/hosts.allow se čte jako první a čte se shora dolů. Pokud se pár démon-klient shoduje s prvním řádkem v souboru, přístup je udělen. Pokud se řádek neshoduje, přečte se další řádek a provede se stejná kontrola. Pokud jsou přečteny všechny řádky a nedojde k žádné shodě, přečte se soubor /etc/hosts.deny, počínaje shora. Pokud je v souboru odmítnutí nalezena shoda páru démon-klient, přístup je odepřen. Pokud nejsou v žádném souboru nalezena žádná pravidla pro pár démon-klient nebo pokud žádný soubor neexistuje, je přístup ke službě udělen.
Protože pravidla přístupu v hosts.allow jsou aplikována jako první, mají přednost před pravidly zadanými v hosts.deny. Pokud je tedy v hosts.allow povolen přístup ke službě, pravidlo zakazující přístup ke stejné službě v hosts.deny je ignorováno. Následuje několik příkladů položek v souboru /etc/hosts.allow:
1. Chcete-li klientům v podsíti 192.168.2 povolit přístup k FTP (démon je vsftpd):
# vi /etc/hosts.allow vsftpd : 192.168.2.*
2. Chcete-li všem klientům povolit přístup k ssh, scp a sftp (démon je sshd):
# vi /etc/hosts.allow sshd : ALL
3. Umístěním následující položky do souboru /etc/hosts.deny odepřete službu FTP všem klientům kromě podsítě 192.168.2.* (předpokládá se, že v /etc/hosts existuje předchozí položka vsftpd:192.168.2.*. povolit):
# vi /etc/hosts.deny vsftpd : ALL
4. Použijte syntaxi .domain k reprezentaci libovolného hostitele z dané domény. Následující příklad umožňuje připojení k vsftpd z libovolného hostitele v doméně example.com (pokud je záznam v /etc/hosts.allow):
# vi /etc/hosts.allow vsftpd : .example.com
Pokud se tato položka objeví v /etc/hosts.deny, připojení je odepřeno.
TCP Wrapper (hosts.allow &hosts.deny) Možnosti příkazů v Linuxu