配置文件
TCP 包装器依赖于两个配置文件作为访问控制的基础:
- /etc/hosts.allow
- /etc/hosts.deny
当客户端尝试连接到远程系统上的网络服务时,这些文件用于确定是允许还是拒绝客户端访问。
使用 /etc/hosts.allow 和 /etc/hosts.deny 来定义有选择地允许或者拒绝客户端访问本地系统上的服务器守护程序的规则。
两个文件的条目格式如下:
daemon_list : client_list [: command]
每个字段的说明如下:
- daemon_list :以逗号分隔的守护进程列表,或者所有守护进程的关键字 ALL
- client_list :逗号分隔的客户端列表,或者所有客户端的关键字 ALL
- command :当客户端尝试访问服务器守护进程时执行的可选命令
要允许客户端访问,请在 /etc/hosts.allow 中添加客户端主机名或者 IP 地址。
要拒绝客户端访问,请在 /etc/hosts.deny 中添加其名称或者 IP 地址。
首先读取 /etc/hosts.allow 文件,然后从上到下读取。
如果守护程序-客户端对与文件中的第一行匹配,则授予访问权限。
如果该行不匹配,则读取下一行并执行相同的检查。
如果所有行都被读取并且没有匹配发生,则读取 /etc/hosts.deny 文件,从顶部开始。
如果在拒绝文件中发现守护程序-客户端对匹配,则拒绝访问。
如果在任一文件中都没有找到守护进程-客户端对的规则,或者两个文件都不存在,则授予对服务的访问权限。
由于首先应用 hosts.allow 中的访问规则,因此它们优先于 hosts.deny 中指定的规则。
因此,如果在 hosts.allow 中允许访问服务,则会忽略 hosts.deny 中拒绝访问同一服务的规则。
以下是 /etc/hosts.allow 文件中条目的一些示例:
- 允许192.168.2子网的客户端访问FTP(守护进程是vsftpd):
# vi /etc/hosts.allow vsftpd : 192.168.2.*
- 允许所有客户端访问 ssh、scp 和 sftp(守护进程是 sshd):
# vi /etc/hosts.allow sshd : ALL
- 将以下条目放在 /etc/hosts.deny 文件中以拒绝除子网 192.168.2.* 之外的所有客户端的 FTP 服务(假设 vsftpd:192.168.2.* 的先前条目存在于 /etc/hosts 中。
允许):
# vi /etc/hosts.deny vsftpd : ALL
- 使用 .domain 语法来表示给定域中的任何主机。
以下示例允许从 example.com 域中的任何主机连接到 vsftpd(如果条目在 /etc/hosts.allow 中):
# vi /etc/hosts.allow vsftpd : .example.com
如果此条目出现在 /etc/hosts.deny 中,则连接被拒绝。
TCP 包装器提供传入网络流量的基本流量过滤。
可以允许或者拒绝从其他系统访问运行在 Linux 服务器上的“封装”网络服务。
TCP 包装服务是针对 libwrap.a 库编译的服务。
使用 ldd 命令确定网络服务是否链接到 libwrap.a。
下面的例子判断sshd服务的绝对路径名,然后列出sshd服务链接的共享库,使用grep命令搜索libwrap库:
# which sshd /sbin/sshd
# ldd /sbin/sshd | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f1fea580000)