Linux系统中的访问控制:hosts.deny & hosts.allow

hosts.deny和hosts.allow是Linux系统中用于访问控制的重要工具,起源于TCP Wrapper软件,旨在提供对网络服务的访问控制。这两个文件在系统安全性方面扮演关键角色,hosts.deny文件作为黑名单,用于拒绝特定主机或网络的访问,而hosts.allow文件作为白名单,用于允许特定主机或网络的访问。通过配置这两个文件,系统管理员可以限制或允许特定主机对服务器上的服务的访问,提高系统的安全性。

系统处理机制与配置
Linux系统处理hosts.deny和hosts.allow的机制是基于TCP Wrapper的规则。当有一个连接请求到达时,系统首先检查hosts.allow文件,确定是否允许该请求的主机进行连接。如果主机在hosts.allow中找到匹配项,则连接会被接受。如果主机不在hosts.allow中找到匹配项,系统会继续检查hosts.deny文件。如果主机在hosts.deny中匹配,则连接将被拒绝。如果主机既不在hosts.allow也不在hosts.deny中匹配,则系统使用默认策略(通常是拒绝连接)。
配置这两个文件的过程相对简单。管理员可以编辑hosts.allow和hosts.deny文件,添加规则。规则可以按照具体IP地址、子网、服务类型等进行定义。每个文件的每一行代表一个地址或地址段。可以使用IP地址、主机名或子网来指定,也可以使用通配符来表示一组地址。在配置时,需要注意以下事项:

1. 注意文件顺序:Linux系统对于hosts.deny和hosts.allow的规则处理是按照文件中的顺序进行的。因此,在配置文件时,应将较宽松的规则放在前面,较严格的规则放在后面。
2. 慎用通配符:通配符的使用使得配置更灵活,但要谨慎使用。不正确或过于宽泛的通配符配置可能意外地允许或禁止了一些不应该访问或被拒绝访问的主机。
3. 添加注释:为增加可读性和可维护性,添加注释是个好习惯。可以在文件中使用井号(#)来添加注释,以便自己和其他管理员理解和维护配置规则的意图。
4. 定期审查:由于网络环境的动态性,建议定期审查和更新hosts.deny和hosts.allow文件。随着时间的变化,可能需要添加新的规则或删除不再适用的规则。

常见场景与配置案例
hosts.deny和hosts.allow在实际应用中最常见的2个场景就是远程登录控制和特定服务访问限制。以下是两个配置案例:

1. 远程访问控制:仅允许特定IP访问SSH服务,其余IP默认拒绝。先在hosts.allow文件中添加允许访问的IP(如11.11.11.11),再在hosts.deny文件中添加默认拒绝规则。
在hosts.allow中添加规则:sshd: 11.11.11.11
在hosts.deny中添加默认拒绝规则:sshd: ALL

2. 限制特定服务访问:有时需要限制某些服务只能被特定的主机或网络访问。通过在hosts.allow中指定允许访问的规则,可以实现细粒度的访问权限控制。例如,仅允许11.11.11.0/24网段的主机访问vsftpd服务器。
在hosts.allow中添加规则:vsftpd: 11.11.11.0/24
在hosts.deny中添加默认拒绝规则:vsftpd: ALL

总之,hosts.deny和hosts.allow在Linux系统中起到了重要的访问控制作用。
通过配置这两个文件,管理员可以根据实际需求保护系统资源的安全性,并限制未经授权的访问。