Linux安全提升–SSH仅允许指定IP访问的三种方法

💡 原文中文,约3900字,阅读约需10分钟。
📝

内容提要

为了加强服务器安全性,使用堡垒机限制业务服务器的SSH访问。可以通过修改配置文件允许指定用户/用户组或IP登录,禁止指定用户登录。还可以使用DenyHosts允许或禁止指定IP通过SSH登录。通过配置防火墙开放指定端口,添加过滤规则屏蔽IP。配置完成后需保存并添加到自启动。

🔎

延伸解读

三种方法的选择与组合

文章介绍了三种限制SSH访问的方法:修改sshd_config、使用hosts.allow/deny、配置iptables。它们作用层面不同:sshd_config控制用户和IP的登录权限,hosts.allow/deny基于TCP包装器,iptables则过滤网络包。实际部署时可组合使用,例如用iptables限制来源IP,再用sshd_config细化用户权限,形成多层防护。

配置生效与持久化要点

修改sshd_config后需重启sshd服务,CentOS 6与7/EulerOS命令不同。hosts.allow/deny修改后立即生效,无需重启。iptables规则默认保存在内存,重启丢失,必须执行service iptables save保存,并用chkconfig或systemctl enable iptables.service加入自启动。忽略保存步骤会导致重启后规则失效。

防火墙规则顺序与默认策略

iptables规则按顺序匹配,删除时需指定规则序号,如iptables -D INPUT 2。添加过滤规则有两种方式:设置默认策略iptables -P INPUT DROP,或追加拒绝规则iptables -A INPUT -j REJECT。前者改变链的默认行为,后者保留默认ACCEPT但显式拒绝未匹配流量。选择时需注意对现有连接的影响。

云服务器额外注意事项

文章特别提醒,如果使用阿里云服务器,除了在系统内配置iptables,还需在阿里云后台安全组中开放相应端口,否则外部仍无法访问。此外,屏蔽攻击IP时可使用CIDR格式,如-s 170.64.130.0/24 -j DROP,一次性屏蔽整个网段。配置后可通过开放/关闭80端口验证防火墙是否生效。

❓

Q&A

如何通过配置文件限制SSH访问的用户和IP?

可以通过修改/etc/ssh/sshd_config文件,使用AllowUsers选项允许指定用户登录,使用DenyUsers选项禁止指定用户登录。

DenyHosts文件的作用是什么?

DenyHosts文件用于限制或允许特定IP通过SSH登录,优先级高于hosts.allow文件。

如何配置iptables防火墙以限制SSH访问?

可以通过iptables命令开放指定端口(如22),并添加过滤规则以禁止所有非允许的请求。

如何保存iptables配置以防止重启后丢失?

执行命令service iptables save可以保存iptables配置,并将其添加到自启动项。

如何屏蔽特定IP地址以防止攻击?

可以使用iptables命令指定IP地址进行屏蔽,例如使用-s选项和DROP动作。

重启sshd服务后需要做什么?

重启sshd服务后,新的配置更改将生效,允许或禁止的用户和IP访问将被更新。

🏷️

标签

➡️

继续阅读