TCP Wrappers to mechanizm wykorzystywany do ograniczania dostępu do usług uruchomionych w systemie. TCP Wrappers mogą kontrolować dostęp do takich usług jak ftp, ssh, telnet, tftp, finger, rsh i talk. Pliki konfiguracyjne tego mechanizmu to /etc/host.allow
i /etc/hosts.deny.
Domyślnie pliki nie zawierają żadnych restrykcji. Jeżeli te pliki nie zawierają żadnych wpisów odnośnie użytkownika lub źródła, z którego pochodzi połączenie, to wrappery przyznają dostęp do usługi.
Gdy klient TCP żąda połączenia z usługą, demon tcpd sprawdza plik .allow
i zezwala na dostęp do usługi jeżeli znajdzie w pliku wpis pasujący do klienta. Jeżeli plik nie zawiera wpisu pasującego do klienta to demon zagląda do pliku .deny i odmawia dostępu jeżeli tutaj znajdzie pasujący do klienta wpis. Jeżeli w pliku .allow i .deny brak wpisów dotyczących klienta to demon przyznaje dostęp do usługi. Wrapper bierze pod uwagę tylko pierwszy znaleziony wpis we wspominanych plikach i po czym przerywa skanowanie plików.
Format obu plików jest identyczny i oparty jest na konstrukcji:
<nazwa usługi> : <użytkownik@host>
Jeżeli we wpisie brak użytkownika reguła pasuje do wszystkich użytkowników. Brak hosta we wpisie oznacza wszystkie hosty. Wrappery obsługują znaki wildcard takie jak: ALL, LOCAL, KNOWN, UNKNOWN oraz EXCEPT.
- ALL oznacza wszystkich klientów.
- LOCAL oznacza hosty z sieci lokalnej.
- KNOWN oznacza hosty, których nazwy domenowe mozna resolvować w adresy IP.
- UNKNOWN – przeciwne do KNOWN.
- oznacza wyjątek w regule.
Poniższa tabela zawiera przykłady.
service : user@source |
/etc/hosts.allow | /etc/hosts.deny |
ALL:ALL |
Zezwala na dostęp do wszystkich usług ze wszystkich hostów. | Zabrania dostępu do wszystkich usług ze wszystkich hostów. |
ALL:user1 |
Zezwala na dostęp do wszystkich usług użytkownikowi user1. | Zabrania dostępu do wszystkich usług użytkownikowi user1. |
ALL:user1@server1 |
Zezwala na dostęp do wszystkich usług użytkownikowi user1 z hosta server1. | Zabrania dostępu do wszystkich usług użytkownikowi user1 z hosta server1. |
ALL:.example.com |
Zezwala na dostęp do wszystkich usług hostom z domeny example.com. | Zabrania dostępu do wszystkich usług hostom z domeny example.com. |
ALL:192.168.0. |
Zezwala na dostęp do wszystkich usług hostom z podsieci 192.168.0.0/24. | Zabrania dostępu do wszystkich usług hostom z podsieci 192.168.0.0/24. |
sshd:ALL |
Zezwala na dostęp do ssh ze wszystkich hostów. | Zabrania dostępu do ssh ze wszystkich hostów. |
sshd:LOCAL |
Zezwala na dostęp do ssh z sieci lokalnej. | Zabrania dostępu do ssh z sieci lokalnej. |
vsftpd:192.168.0. |
Zezwala na dostęp do ftp z podsieci 192.168.0.0/24. | Zabrania dostępu do ftp z podsieci 192.168.0.0/24. |
vsftpd:192.168.0.0/24 |
Zezwala na dostęp do ftp z podsieci 192.168.0.0/24. | Zabrania dostępu do ftp z podsieci 192.168.0.0/24. |
vsftpd:192.168.0. EXCEPT 192.168.0.25 |
Zezwala na dostęp do ftp z podsieci 192.168.0.0/24 z wyjątkiem hosta 192.168.0.25. | Zabrania dostępu do ftp z podsieci 192.168.0.0/24 z wyjątkiem hosta 192.168.0.25. |
vsftpd:192.168.0. EXCEPT 192.168.0.25, 192.168.0.26 |
Zezwala na dostęp do ftp z podsieci 192.168.0.0/24 z wyjątkiem hostów 192.168.0.25, 192.168.0.26. | Zabrania dostępu do ftp z podsieci 192.168.0.0/24 z wyjątkiem hostów 192.168.0.25, 192.168.0.26. |
vsftpd,sshd:user1@192.168.0. |
Zezwala na dostęp do ftp i ssh użytkownikowi user1 z podsieci 192.168.0.0/24. | Zabrania dostępu do ftp i ssh użytkownikowi user1 z podsieci 192.168.0.0/24. |
vsftpd,sshd@192.168.0.110: 192.168.1. |
Zezwala na dostęp do ftp i ssh wszystkim użytkownikom z hosta 192.168.0.110 i podsieci 192.168.1.0/24. | Zabrania dostępu do ftp i ssh wszystkim użytkownikom z hosta 192.168.0.110 i podsieci 192.168.1.0/24. |
ALL EXCEPT sshd:192.168.0. |
Zezwala na dostęp do wszystkich usług z wyjątkiem ssh z podsieci 192.168.0.0/24. | Zabrania dostępu do wszystkich usług z wyjątkiem ssh z podsieci 192.168.0.0/24. |
Wszystkie komunikaty związane z wrapperami logowane są do pliku /var/log/secure.