Linux中的hosts.deny 文件属于TCP Wrapper 配置的部分,存储在/etc/hosts.deny。是通过指定不允许连接的主机或网络范围提高系统安全性。hosts.deny不能直接防止所有类型的工具,但是它在可以在一定场景中降低攻击的成功率。
可以拒绝来自已知的恶意IP访问。通过在hosts.deny中列出已知的恶意IP地址或是网络段,就可以阻止这些IP或网络段访问特定服务。以此来减少扫描、探测和未经授权的访问。
限制服务访问,仅允许受信任IP地址访问特定服务,把其他来源的连接全部拒绝。杜绝未经过授权用户通过开发端口进行工具,如SSH爆破/SMTP滥用等。
减少破解工具,在hosts.deny设置拒绝策略,再配置host.allow允许特定IP或者IP范围,拒绝不可信来源连接,降低SSH、FTP等服务的破解风险。
组织对特定服务的连接,减少服务对外暴露的可能性,防止攻击者通过网络扫描工具探测开放服务端口和版本信息。
减少DDOS攻击,限制IP或者IP范围访问的特定服务,避免大量恶意连接占用资源。降低小规模拒绝服务DOS对系统可用性的影响。
在hosts.deny中配置访问策略,基本格式为:
service_name : client_address
service_name:需要控制访问的服务名称,可以是具体服务(如 sshd)或 ALL。
client_address:需要拒绝访问的客户端地址,可以是单个 IP、IP 段、域名、或者 ALL。
如,阻止所有服务的所有客户端访问(此规则阻止所有服务的所有访问,是最严格的设置,应谨慎使用):
ALL : ALL
组织特定发uwde所有客户端访问(此规则只阻止 SSH 服务的所有客户端访问,其他服务不受影响):
sshd : ALL
阻止特定IP或IP段的访问(这两条规则分别阻止单个 IP 和 IP 段的所有服务访问):
ALL : 192.168.1.100
ALL : 192.168.1.0/24
结合 hosts.allow 设置允许访问,
/etc/hosts.allow:
sshd : 192.168.1.0/24
/etc/hosts.deny(这种配置允许来自 192.168.1.0/24 网络段的 SSH 连接,但拒绝其他所有 IP 的连接):
sshd : ALL
华纳云温馨提示:
与hosts.allow 配合使用:hosts.deny 应与 hosts.allow 配合使用,系统首先检查 hosts.allow 中的规则。如果某个连接请求匹配 hosts.allow 中的规则,则允许连接;否则,检查 hosts.deny 中的规则。如果请求匹配 hosts.deny 中的规则,则拒绝连接。
不适用于所有服务:只有使用了 TCP Wrapper 的服务会受到 hosts.allow 和 hosts.deny 的影响。通常包含 libwrap 库的服务(如 sshd、vsftpd、telnetd)会支持这些配置。
需要仔细配置:误配置可能导致合法连接被拒绝,应仔细检查规则,确保仅阻止不需要的连接。
日志记录:使用 tcpd 时,可以通过日志记录访问尝试,帮助管理员分析拒绝情况和潜在攻击:
sshd : ALL : severity auth.info
动态更新:配置 hosts.deny 和 hosts.allow 可以动态更新,无需重启服务。但应定期审查规则,确保安全策略符合最新需求。
另外,可以同hosts.deny组合使用的安全设置,如防火墙策略如 iptables、firewalld等可以提高安全性;考虑使用入侵检测系统(IDS)和入侵防御系统(IPS)监控和响应更复杂的攻击;定期检查和更新访问策略,以适应变化的安全需求和威胁环境。
hosts.deny属于简单有效的工具,可以组织特定来源连接,即便不可以防止所有攻击,但结合其他安全措施,依然可以有效的提高系统的安全性,减少未授权访问的风险。利用合理配置和持续监控,可以更好的保护 Linux 免受更多安全威胁。