在Linux中了解TCP包装器,/etc/hosts.allow&/etc/hosts.deny

  TCP包装器提供对传入网络流量的基本流量过滤。可以允许或拒绝从其他系统访问在Linux服务器上运行的“包装”网络服务。TCP包装服务是针对libwrap.a库编译的服务。使用ldd命令来确定网络服务是否链接到libwrap.a。以下示例确定sshd服务的绝对路径名,然后使用grep命令搜索libwrap库,列出链接到sshd服务的共享库:

#哪个sshd
/ sbin / sshd
#ldd / sbin / sshd | grep libwrap
        libwrap.so.0 => /lib64/libwrap.so.0(0x00007f1fea580000)

配置文件

  TCP包装器依赖于两个配置文件作为访问控制的基础:

  • /etc/hosts.allow
  • /etc/hosts.deny

当客户端尝试连接到远程系统上的网络服务时,这些文件用于确定是允许还是拒绝客户端访问。使用/etc/hosts.allow和/etc/hosts.deny定义规则,这些规则有选择地允许或拒绝客户端访问本地系统上的服务器守护程序。两个文件的条目格式如下:

daemon_list:client_list [:命令]

  每个字段的说明如下:

  • 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文件中条目的一些示例:

  1.要允许192.168.2子网上的客户端访问FTP(守护程序为vsftpd):

#vi /etc/hosts.allow
vsftpd:192.168.2。*

  2.要允许所有客户端访问ssh,scp和sftp(守护程序为sshd):

#vi /etc/hosts.allow
sshd:全部

  3.将以下条目放置在/etc/hosts.deny文件中,以拒绝对除子网192.168.2。*以外的所有客户端的FTP服务(假定vsftpd:192.168.2。*的先前条目存在于/ etc / hosts中。允许):

#vi /etc/hosts.deny
vsftpd:全部

  4.使用.domain语法表示给定域中的任何主机。以下示例允许从example.com域中的任何主机连接到vsftpd(如果该条目位于/etc/hosts.allow中):

#vi /etc/hosts.allow
vsftpd:.example.com

 如果该条目出现在/etc/hosts.deny中,则连接被拒绝。

https://www.thegeekdiary.com/understanding-tcp-wrappers-in-linux/