欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限

深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限

2025/3/1 13:17:28 来源:https://blog.csdn.net/weixin_42434700/article/details/145909330  浏览:    关键词:深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限

文章目录

  • 深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限
  • 引言
  • 什么是 TCP Wrappers?
    • 工作原理
  • 什么是 /etc/hosts.allow 和 /etc/hosts.deny?
  • 匹配规则
  • 配置语法详解
    • 配置示例
      • 允许特定 IP 访问 SSH 服务
      • 拒绝整个子网访问 FTP 服务
      • 允许内网,拒绝外网
      • 记录非法访问尝试
    • 注意事项
  • 高级配置与技巧
    • 允许特定 IP 地址访问服务
    • 拒绝某个网段的访问
  • 混合使用/etc/hosts.allow和 /etc/hosts.deny
  • 常见问题及调试
  • 实际应用场景
    • 限制管理端口访问
    • 防止暴力破解
    • 内外网隔离
  • 与防火墙的对比
  • 总结


深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限

引言

在 Linux 服务器管理中,保障服务的安全性至关重要。除了防火墙(如 iptablesfirewalld),TCP Wrappers 是一个轻量级但高效的工具,可通过 /etc/hosts.allow/etc/hosts.deny 文件快速定义网络服务的访问规则。本文将深入探讨这两个文件的作用、配置方法以及实际应用场景。

什么是 TCP Wrappers?

TCP Wrappers 是一个基于主机的访问控制系统,通过封装网络服务(如 sshdvsftpd 等),在服务请求到达前进行权限验证。只有支持 libwrap 库的服务才能使用此机制(可以通过 ldd /usr/sbin/sshd | grep libwrap 来验证服务是否启用了 TCP Wrappers)。

工作原理

TCP Wrappers 通过检查 /etc/hosts.allow/etc/hosts.deny 文件来决定是否允许远程主机访问本机服务。其工作流程如下:

  1. 系统首先检查 /etc/hosts.allow 文件,查看是否有匹配的规则。如果匹配成功,则允许访问。
  2. 如果 /etc/hosts.allow 中没有匹配项,系统会继续检查 /etc/hosts.deny 文件。如果找到匹配项,则拒绝访问。
  3. 如果两个文件都没有匹配项,系统默认允许访问。

这种访问控制机制简单、直接,适用于大多数 Linux 系统服务。

什么是 /etc/hosts.allow 和 /etc/hosts.deny?

/etc/hosts.allow/etc/hosts.deny 文件是 TCP Wrappers 的一部分,用于控制主机对系统上服务的访问权限。它们的主要作用是通过 IP 地址、主机名或网络地址来允许或拒绝远程主机的访问。

  • /etc/hosts.allow:定义允许访问指定服务的主机或网络。
  • /etc/hosts.deny:定义拒绝访问指定服务的主机或网络。

匹配规则

  1. 客户端发起请求时,系统首先检查 /etc/hosts.allow
  2. 若匹配到允许规则,则直接放行。
  3. 若未匹配,则继续检查 /etc/hosts.deny
  4. 如果 hosts.deny 中有匹配规则,则拒绝访问。
  5. 如果两个文件都没有匹配规则,默认情况下允许访问。

这两个文件的作用是互补的:如果 /etc/hosts.allow 中匹配到某个主机或 IP 地址,则允许访问;如果 /etc/hosts.deny 中匹配到,则拒绝访问。

配置语法详解

/etc/hosts.allow/etc/hosts.deny 的配置格式类似,每一行都包含三个部分:

服务列表 : 客户端列表 [: 操作选项]
  • 服务列表:多个服务用逗号分隔(如 sshd, vsftpd),或者使用 ALL 表示所有服务。
  • 客户端列表:可以使用以下格式:
    • 单个 IP 地址(192.168.1.10
    • 网段(192.168.1.0/255.255.255.0192.168.1.
    • 域名(.example.com 匹配所有子域)
    • 特殊关键字:ALL(所有客户端)、LOCAL(本地网络)、KNOWN(可解析的主机名)等。
  • 操作选项:可以指定网络接口、用户名等额外限制。

配置示例

允许特定 IP 访问 SSH 服务

sshd: 192.168.1.0/24
sshd: 192.168.1.20, 10.0.0.5
httpd: .mydomain.com
  • 允许 192.168.1.0/24 网段的主机访问 SSH 服务(sshd
  • 允许 192.168.1.2010.0.0.5 访问 SSH 服务(sshd
  • 允许来自 .mydomain.com 域名的所有主机访问 HTTP 服务(httpd

拒绝整个子网访问 FTP 服务

# /etc/hosts.deny
vsftpd: 192.168.2.0/255.255.255.0
ALL: ALL

这里一个ALL已经是全部了,我把vsftpd加到这,是表示可以拒绝FTP服务的意思

  • 拒绝 192.168.2.0/24 网段的所有主机访问 FTP 服务(vsftpd)。
  • ALL: ALL 会拒绝所有未在 /etc/hosts.allow 中明确允许的访问。

允许内网,拒绝外网

# /etc/hosts.allow
ALL: 192.168.1.0/24, LOCAL# /etc/hosts.deny
ALL: ALL
  • 允许 192.168.1.0/24 网段和本地网络访问所有服务。
  • 拒绝所有其他来源的访问。

记录非法访问尝试

# /etc/hosts.deny
sshd: ALL : spawn /bin/echo "Blocked %a at %d" >> /var/log/secure.log
  • 每次拒绝 SSH 访问时,记录拒绝的 IP 地址和时间到 /var/log/secure.log 文件中。

注意事项

  1. 优先级与顺序/etc/hosts.allow 的规则优先于 /etc/hosts.deny。如果同一服务在两个文件中都有配置,hosts.allow 中的规则将优先生效。
  2. 立即生效:修改后无需重启服务,规则会自动生效。
  3. 服务兼容性:只有支持 TCP Wrappers 的服务(如 sshdxinetd 管理的服务)才会受此控制。可以通过 ldd 命令检查服务是否链接了 libwrap 库(例如:ldd /usr/sbin/sshd)。
  4. 避免冲突:如果同时在两个文件中为同一服务配置规则,可能会导致意外的访问控制行为,需确保规则清晰明确。

高级配置与技巧

允许特定 IP 地址访问服务

如果希望只允许某个特定 IP 地址访问某个服务,可以这样配置:

sshd: 192.168.1.10

这表示只允许 IP 地址为 192.168.1.10 的主机访问 SSH 服务。

拒绝某个网段的访问

你可以拒绝某个网段的所有访问:

ALL: 192.168.2.0/24

这表示拒绝 192.168.2.0/24 网段的主机访问所有服务。

混合使用/etc/hosts.allow和 /etc/hosts.deny

你可以灵活配置这两个文件。以下是允许特定 IP 地址访问 SSH 服务,同时拒绝其他所有主机的配置:

  • /etc/hosts.allow
sshd: 192.168.1.10
  • /etc/hosts.deny
sshd: ALL

常见问题及调试

  1. 配置没有生效

    • 如果修改后规则没有生效,可能是因为使用的服务没有启用 TCP Wrappers 支持。你可以通过 ldd 命令检查服务是否链接了 libwrap 库。例如:ldd /usr/sbin/sshd
  2. 优先级问题
    /etc/hosts.allow 中的规则优先于 /etc/hosts.deny。因此,如果在 hosts.allow 中明确允许某个主机,而在 hosts.deny 中拒绝了该主机的访问,hosts.allow 中的规则会优先生效。

  3. 服务未使用 TCP Wrappers
    不是所有服务都支持 TCP Wrappers 访问控制。你需要查阅服务的文档来确认是否支持此机制。如果不支持,建议使用防火墙(如 iptables)进行访问控制。

实际应用场景

限制管理端口访问

通过限制只允许特定 IP(如管理员 IP)访问 SSH 服务,可以提高安全性:

  • /etc/hosts.allow
sshd: 192.168.1.0/24
  • /etc/hosts.deny
sshd: ALL

防止暴力破解

结合 Fail2Ban 动态更新 /etc/hosts.deny 来封禁暴力

破解攻击者的 IP 地址。

内外网隔离

允许内网访问数据库服务,拒绝外网连接,以保护数据库的安全。

与防火墙的对比

特性TCP Wrappers防火墙(iptables)
配置复杂度简单,基于文本文件复杂,需学习规则语法
作用层级应用层(服务进程)网络层(IP/端口)
适用场景快速控制服务访问权限全面控制网络流量

总结

/etc/hosts.allow/etc/hosts.deny 是 Linux 系统中简单却强大的访问控制工具。它们适合快速配置黑白名单,尤其在小规模环境中效果显著。对于复杂的网络控制,仍然需要结合防火墙进行全面防护。掌握其用法,能够在安全与便捷之间找到完美平衡。

提示:修改前务必备份原文件,并通过 telnetnc 等工具测试规则是否生效!在配置这些文件时,务必小心,避免误配置导致合法用户无法访问系统。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词