通过/etc/hosts.deny限制一个网段的 SSH 登录尝试

在 CentOS 7 系统中,若要通过/etc/hosts.deny限制117.50.50.0/24网段的 SSH 登录尝试,需遵循hosts.deny的配置语法和 SSH 服务的匹配规则,具体操作如下:

一、核心配置原理

/etc/hosts.deny是 TCP Wrappers 的访问控制文件,优先级高于/etc/hosts.allow,语法格式为:
plaintext
 
 
服务名: 客户端地址列表 [: 动作]
 
  • 服务名:SSH 对应的服务名为sshd(需确认系统 SSH 服务进程名);
  • 客户端地址:支持网段、单个 IP、域名等格式,网段需用CIDR 或子网掩码表示。

二、具体配置步骤

1. 编辑/etc/hosts.deny文件

使用vimnano打开配置文件:
bash
 
运行
 
 
 
 
vim /etc/hosts.deny
 

2. 添加网段封禁规则

根据你提供的 “117.50.50.” 网段(默认补全为117.50.50.0/24,即子网掩码 255.255.255.0),添加以下规则:
bash
 
运行
 
 
 
 
# 封禁117.50.50.0/24网段的SSH登录
sshd: 117.50.50.0/255.255.255.0
 
或使用 CIDR 格式(两种写法等价):
bash
 
运行
 
 
 
 
sshd: 117.50.50.0/24
 
若需封禁所有 117.50.50.x的单个 IP(无完整网段),也可写为通配符格式:
bash
 
运行
 
 
 
 
sshd: 117.50.50.
 

3. 保存并生效

保存文件后,无需重启服务,TCP Wrappers 会实时加载新规则。

三、验证配置有效性

1. 检查 TCP Wrappers 是否生效

先确认sshd是否受 TCP Wrappers 管控:
bash
 
运行
 
 
 
 
ldd /usr/sbin/sshd | grep libwrap
 
若输出包含libwrap.so,说明sshd支持 TCP Wrappers(CentOS 7 默认支持)。

2. 模拟测试(可选)

117.50.50.0/24网段的机器发起 SSH 连接,会直接被拒绝;本地可通过日志验证:
bash
 
运行
 
 
 
 
tail -f /var/log/secure
 
若看到类似refused connect from 117.50.50.x的日志,说明规则生效。

四、注意事项

  1. 优先级问题:若/etc/hosts.allow中存在对该网段的放行规则(如sshd: 117.50.50.0/24),则hosts.deny的封禁规则会被覆盖,需确保hosts.allow无冲突配置。
  2. 网段格式:117.50.50.是通配符写法,仅匹配117.50.50.x的 IP;若需精准匹配 / 24 网段,建议用 CIDR 或子网掩码格式。
  3. 补充防护:hosts.deny仅为基础防护,建议结合fail2ban(防暴力破解)、防火墙(firewalld/iptables)实现多层 SSH 防护。
我可以帮你整理sshd 多维度防护的配置清单,包含 hosts.deny、fail2ban 和 firewalld 的联动规则,需要吗?

posted on 2025-12-11 16:05  sunny_2016  阅读(2)  评论(0)    收藏  举报

导航