在 CentOS 7 系统中,若要通过/etc/hosts.deny限制117.50.50.0/24网段的 SSH 登录尝试,需遵循hosts.deny的配置语法和 SSH 服务的匹配规则,具体操作如下:
/etc/hosts.deny是 TCP Wrappers 的访问控制文件,优先级高于/etc/hosts.allow,语法格式为:
- 服务名:SSH 对应的服务名为
sshd(需确认系统 SSH 服务进程名);
- 客户端地址:支持网段、单个 IP、域名等格式,网段需用CIDR 或子网掩码表示。
使用vim或nano打开配置文件:
根据你提供的 “117.50.50.” 网段(默认补全为117.50.50.0/24,即子网掩码 255.255.255.0),添加以下规则:
或使用 CIDR 格式(两种写法等价):
若需封禁所有 117.50.50.x的单个 IP(无完整网段),也可写为通配符格式:
保存文件后,无需重启服务,TCP Wrappers 会实时加载新规则。
先确认sshd是否受 TCP Wrappers 管控:
ldd /usr/sbin/sshd | grep libwrap
若输出包含libwrap.so,说明sshd支持 TCP Wrappers(CentOS 7 默认支持)。
从117.50.50.0/24网段的机器发起 SSH 连接,会直接被拒绝;本地可通过日志验证:
若看到类似refused connect from 117.50.50.x的日志,说明规则生效。
- 优先级问题:若
/etc/hosts.allow中存在对该网段的放行规则(如sshd: 117.50.50.0/24),则hosts.deny的封禁规则会被覆盖,需确保hosts.allow无冲突配置。
- 网段格式:
117.50.50.是通配符写法,仅匹配117.50.50.x的 IP;若需精准匹配 / 24 网段,建议用 CIDR 或子网掩码格式。
- 补充防护:
hosts.deny仅为基础防护,建议结合fail2ban(防暴力破解)、防火墙(firewalld/iptables)实现多层 SSH 防护。
我可以帮你整理sshd 多维度防护的配置清单,包含 hosts.deny、fail2ban 和 firewalld 的联动规则,需要吗?