CentOS系统如何限制远程登录的来源IP地址?

在 CentOS 系统中,限制远程登录(如 SSH)的来源 IP 地址可以通过多种方式实现。以下是几种常用且有效的方法:


方法一:使用 firewalld(推荐,适用于 CentOS 7 及以上)

firewalld 是 CentOS 默认的防火墙管理工具。

步骤:

  1. 启动并启用 firewalld(如果未启用)

    sudo systemctl start firewalld
    sudo systemctl enable firewalld
  2. 只允许特定 IP 访问 SSH(默认端口 22)

    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'

    192.168.1.100 替换为允许访问的客户端 IP 地址。也可使用 IP 段,如 192.168.1.0/24

  3. 拒绝其他所有 IP 的 SSH 请求(可选,确保默认策略为 drop)
    通常,默认区域(如 public)的默认策略是 reject,但你可以显式设置更严格的规则。

  4. 重新加载防火墙配置

    sudo firewall-cmd --reload
  5. 验证规则是否生效

    sudo firewall-cmd --list-all

方法二:使用 iptables(传统方式)

如果你偏好使用 iptables,可以手动添加规则。

示例:只允许特定 IP 访问 SSH

# 允许特定 IP
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT

# 拒绝其他所有 IP 访问 SSH
sudo iptables -A INPUT -p tcp --dport 22 -j DROP

注意:顺序很重要,确保允许的规则在前面。

保存规则(CentOS 7+ 需安装 iptables-services)

sudo yum install iptables-services -y
sudo service iptables save

或使用:

sudo iptables-save > /etc/sysconfig/iptables

方法三:修改 SSH 配置文件(/etc/ssh/sshd_config

通过 OpenSSH 自身支持限制来源 IP。

编辑 SSH 配置:

sudo vi /etc/ssh/sshd_config

在文件末尾添加以下内容(例如只允许 192.168.1.0/24 网段):

AllowUsers *@192.168.1.*
# 或者指定用户和IP
# AllowUsers user1@192.168.1.100 user2@192.168.1.101

说明:

  • AllowUsers 后面可以跟 用户名@IP
  • 使用通配符 * 匹配任意用户名或 IP 段。
  • 也可以使用 AllowGroups 配合组进行控制。

重启 SSH 服务:

sudo systemctl restart sshd

⚠️ 注意:配置错误可能导致无法登录,请确保测试时保留备用连接(如控制台)。


方法四:使用 TCP Wrappers(/etc/hosts.allow/etc/hosts.deny

适用于支持 TCP Wrappers 的服务(包括 SSH)。

编辑允许列表:

sudo vi /etc/hosts.allow

添加:

sshd: 192.168.1.100
sshd: 192.168.1.0/255.255.255.0

编辑拒绝列表(可选):

sudo vi /etc/hosts.deny

添加:

sshd: ALL

这表示:先检查 hosts.allow,匹配则放行;否则查看 hosts.deny,匹配则拒绝。


安全建议

  1. 不要只依赖单一方法,可组合使用(如 firewalld + SSH 配置)。
  2. 更改默认 SSH 端口 可减少暴力扫描。
  3. 禁用 root 登录 和使用密钥认证提升安全性。
  4. 测试前保留本地或控制台访问权限,避免被锁在系统外。

总结

方法 推荐程度 说明
firewalld ⭐⭐⭐⭐⭐ 推荐,现代、易管理
iptables ⭐⭐⭐⭐ 强大但需手动维护
SSH 配置 ⭐⭐⭐⭐ 应用层控制,灵活
TCP Wrappers ⭐⭐⭐ 传统方式,兼容性好

✅ 建议优先使用 firewalld + AllowUsers in sshd_config` 双重防护。

如有更多需求(如 IPv6、动态 IP 处理等),可进一步扩展方案。