CentOS防火墙添加IP白名单:全面指南提升服务器安全(2025年最新版)

在当今网络安全形势日益严峻的背景下,合理配置服务器防火墙是保障系统安全的第一道防线。作为广泛使用的Linux发行版之一,CentOS 7 默认采用 firewalld 作为其动态防火墙管理工具。本文将为您详细介绍如何在 CentOS 7 系统中通过 firewalld 配置 IP 白名单,仅允许指定 IP 地址访问关键服务(如 SSH 22 端口),从而有效防止未授权访问和暴力破解攻击。

CentOS防火墙添加IP白名单:全面指南提升服务器安全(2025年最新版)


🔐 为什么需要设置防火墙IP白名单?

开放公网的服务器若允许所有IP访问SSH等服务,极易成为黑客扫描和暴力破解的目标。通过设置IP白名单,您可以:

  • ✅ 仅允许公司、运维团队或可信设备的IP访问关键端口

  • ✅ 大幅降低被恶意登录的风险

  • ✅ 满足企业安全合规与漏洞扫描要求

  • ✅ 提升系统整体安全性与稳定性

⚠️ 重要提示:在配置白名单前,请确保您已通过其他方式(如控制台登录)能够访问服务器,避免因误操作导致远程连接中断。


🛠️ 前提准备:确认firewalld服务状态

在开始配置前,请确保 firewalld 服务已安装并运行:

# 检查firewalld服务状态
systemctl status firewalld

# 若未启动,启动服务
systemctl start firewalld

# 设置开机自启
systemctl enable firewalld

# 查看当前防火墙规则
firewall-cmd --list-all

输出示例:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: ssh dhcpv6-client
  ports: 
  ...

默认情况下,ssh 服务是开放的,即所有IP均可尝试连接22端口。


✅ 方法一:使用Rich Rules(推荐)为特定IP开放指定端口

firewalldRich Rules(富规则) 功能允许您精细控制基于IP、端口、协议的访问策略。

🔧 步骤1:添加IP白名单规则(允许指定IP访问22端口)

# 允许单个IP访问SSH(22端口)
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.100" port protocol="tcp" port="22" accept'

# 允许整个IP段访问(如192.168.1.0/24子网)
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'

📌 参数说明

  • --permanent:永久生效(重启后仍有效)

  • --zone=public:作用于public区域(默认)

  • source address:白名单IP或网段

  • port protocol="tcp" port="22":指定TCP协议的22端口

  • accept:允许通过

🚫 步骤2:移除默认的SSH服务开放规则

默认的 ssh 服务规则允许所有IP访问,需将其删除以确保白名单生效:

# 移除所有IP可访问SSH的默认规则
sudo firewall-cmd --permanent --zone=public --remove-service=ssh

🔁 步骤3:重新加载防火墙配置

# 重新加载规则,使更改生效
sudo firewall-cmd --reload

✅ 验证配置是否成功

# 查看当前所有规则
firewall-cmd --list-all

# 查看富规则列表
firewall-cmd --list-rich-rules

输出应包含类似内容:

rule family="ipv4" source address="192.168.0.100" port port="22" protocol="tcp" accept

🧩 其他实用白名单配置方法

方法二:为特定IP开放所有访问(谨慎使用)

⚠️ 不推荐生产环境,仅用于测试或极信任网络。

# 允许192.168.0.200访问所有服务
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.200" accept'
sudo firewall-cmd --reload

方法三:为特定IP开放服务(如HTTP/HTTPS)

# 允许10.0.1.50访问HTTP服务
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.1.50" service name="http" accept'

# 允许10.0.1.50访问HTTPS服务
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.1.50" service name="https" accept'

sudo firewall-cmd --reload

🚫 如何删除已添加的白名单规则?

若需调整或回滚配置,可使用 --remove-rich-rule

# 删除之前添加的SSH白名单规则
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.0.100" port protocol="tcp" port="22" accept'

# 重新加载
sudo firewall-cmd --reload

🔁 如何恢复默认SSH访问?

若需恢复为所有IP可访问SSH:

# 添加SSH服务规则
sudo firewall-cmd --permanent --zone=public --add-service=ssh

# 删除之前添加的富规则(可选)
sudo firewall-cmd --permanent --remove-rich-rule='rule ...'

sudo firewall-cmd --reload

📌 最佳实践与注意事项

  1. 双重验证:配置完成后,从白名单内外分别测试SSH连接,确保策略生效。

  2. 定期审计:使用 firewall-cmd --list-rich-rules 定期检查规则,清理过期IP。

  3. 结合Fail2ban:建议搭配 fail2ban 工具,自动封禁多次尝试登录失败的IP。

  4. 备份规则:重要服务器建议备份 /etc/firewalld/ 目录。

  5. 使用密钥登录:关闭SSH密码登录,仅允许密钥认证,进一步提升安全。


📚通过本文,您已掌握在 CentOS 7 系统中使用 firewalld 配置IP白名单的核心方法。无论是为运维团队设置SSH访问权限,还是限制特定服务的访问来源,合理使用 Rich Rules 都能显著提升服务器安全性。

🔐 安全无小事,防护从细节做起。立即为您的服务器配置IP白名单,筑牢第一道安全防线!

发表评论

评论列表

还没有评论,快来说点什么吧~