找回密码
 立即注册
首页 业界区 安全 Linux如何限制ssh连接总结

Linux如何限制ssh连接总结

敖雨燕 2025-6-25 17:04:20
在Linux服务器上,如果没有使用堡垒机的话,那么需要去限制/允许哪些IP能够通过ssh连接访问服务器,下面简单总结一下限制ssh连接访问的方法.
TCP Wrappers控制

一般需要通过配置/etc/hosts.allow和/etc/hosts.deny来允许/限制用户ssh连接. 其中/etc/hosts.allow 是 Linux 系统中用于控制网络服务访问权限的重要配置文件,属于 TCP Wrappers 机制的核心组件。其工作原理是:当外部主机尝试访问本地服务时,系统会先检查 hosts.allow,若匹配规则则允许访问;若不匹配则继续检查 hosts.deny,若仍不匹配则默认允许访问(部分系统可能默认拒绝,需视具体配置)
语法如下所示:
:  [ :  ]
/etc/hosts.allow
  1. all:192.168.7.100:allow     #允许单个IP以任何协议访问
  2. sshd:192.168.7.101:allow    #允许单个IP以sshd协议访问
  3. all:192.168.196.0/24:allow  #允许IP段段以任何协议访问
复制代码
注意:  IP地址后的:allow是可以省略的.
/etc/hosts.deny
  1. sshd:192.168.9.98
  2. sshd:all:deny
复制代码
注意:sshd:192.168.9.98没有配置动作deny,它是可选项,也是默认选项, sshd:192.168.9.98 跟sshd:192.168.9.98:deny是一致的.
一些常用的配置命令
  1. echo "sshd:ALL" | sudo tee -a /etc/hosts.deny
  2. echo "sshd:192.168.9.100:allow" | sudo tee -a /etc/hosts.allow    # 单个IP
  3. echo "sshd:192.168.9.0/24:allow" | sudo tee -a /etc/hosts.allow   # IP段
复制代码
注意事项:

  • TCP Wrappers控制依赖 TCP Wrappers 机制,需 SSH 服务端(sshd)编译时启用 libwrap 支持。否则上面配置可能不生效.
  1. # ldd /usr/sbin/sshd |grep libwrap.so.0
复制代码
上面命令结果:

  • 无输出结果‌:说明 SSH 未集成 TCP Wrappers 功能,规则无效.
  • 正确输出‌:libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0

  • 在SSH 服务(sshd)中,当 UseTCPWrappers 配置项设置为 yes 时,sshd 会使用 TCP Wrappers 来检查 /etc/hosts.allow 和 /etc/hosts.deny文件中的规则,以决定是否允许来自特定主机的连接。
  1. # grep UseTCPWrappers /etc/ssh/sshd_config
复制代码

  • 这两个文件用于控制对系统服务的访问,且hosts.allow的优先级高于hosts.deny。
由于配置麻烦,有许多依赖项,所以一般来说,倒是比较少用这种方式.大部分都会选项下面ssh配置限制的方式. 不过这种方式强大的地方在于它不仅仅可以控制ssh连接,还可以控制ftp等各种方式.
ssh配置文件(sshd_config)

ssh的配置文件一般为/etc/ssh/sshd_config, 它可以限制用户和IP. 具体如下所示:
允许指定IP登录:
在sshd_config配置文件中,添加或修改AllowUsers选项来指定允许登录的 IP。修改完成后,重启SSH服务使配置生效,命令为systemctl restart sshd。
  1. AllowUsers oracle@192.168.7.100    # 允许单个IP使用oracle(可以指定某个具体用户)登录/访问.
  2. AllowUsers oracle@192.168.7.0/24   # 允许IP段使用oracle(可以指定某个具体用户)登录/访问.
  3. AllowUsers *@192.168.7.100         # 允许单个IP使用任意用户(*表示任意用户)
复制代码
限制指定IP登录:
使用DenyUsers选项来拒绝特定 IP 登录。如要禁止 IP 为192.168.7.200的主机以root用户登录,添加DenyUsers root@192.168.7.200,然后重启SSH服务。
  1. DenyUsers root@192.168.7.200       # 禁止单个IP
  2. DenyUsers root@192.168.7.0/24      # 禁止IP段
复制代码
当然,你还可以使用AllowGroups和DenyGroups,具体如下所示:
  1. AllowUsers: 允许某个用户、某些用户能登录,其它都不能登录
  2. AllowGroups:允许某个组、某些组能登录,其它都不能登录
  3. DenyUsers:  拒绝某个用户、某些用户登录,其它都能登录
  4. DenyGroups: 拒绝某个组、某些组登录,其它都能登录.
复制代码
如果在sshd_config中有这样的配置, 192.168.9.98可以通过ssh访问吗?
  1. DenyUsers *@192.168.9.98
  2. AllowUsers *@192.168.9.98
复制代码
  1. AllowUsers *@192.168.9.0/24
  2. DenyUsers *@192.168.9.98
复制代码
测试验证如下,DenyUsers的优先级要高于AllowUsers.
  1. ssh 192.168.9.97
  2. Authorized uses only. All activity may be monitored and reported.
  3. oracle@192.168.9.97's password: 
  4. Permission denied, please try again.
复制代码
防火墙限制ssh连接

通过防火墙设置:
firewalld方式:
  1. # 允许IP访问SSH端口(默认22)
  2. sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.196.178' port port='22' protocol='tcp' accept"

  3. # 拒绝指定IP访问
  4. sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.9.98'  port port='22' protocol='tcp' reject"

  5. # 拒绝其他IP访问
  6. sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' port port='22' protocol='tcp' reject"

  7. # 重载防火墙
  8. sudo firewall-cmd --reload
复制代码
iptables方式:
  1. # 允许IP
  2. sudo iptables -A INPUT -p tcp -s 192.168.196.178 --dport 22 -j ACCEPT

  3. # 拒绝其他IP
  4. sudo iptables -A INPUT -p tcp --dport 22 -j DROP

  5. # 保存规则(临时)
  6. sudo iptables-save > /etc/sysconfig/iptables   # RHEL/CentOS
复制代码
如果防火墙屏蔽了ssh连接的话,会提示下面错误信息:
  1. $ ssh 192.168.9.97
  2. ssh: connect to host 192.168.9.97 port 22: Connection refused
复制代码
fail2ban方式

Fail2Ban 是一款基于 Python 开发的开源网络安全防护工具,专为 Linux/Unix 系统设计,用于‌自动化防御暴力破解、恶意扫描和拒绝服务(DDoS/CC)等自动化攻击.虽然它的用途是安全防护,但是它也可以用来限制ssh连接.
封禁IP使用ssh访问
  1. fail2ban-client set sshd banip 192.168.9.97
复制代码
扫描上面二维码关注我如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册