答案:通过 iptables 或 firewalld 配置 IP 白名单实现 Linux 防火墙访问控制。首先清空规则并允许本地和已建立连接,使用 iptables 添加特定 IP 访问 SSH 并拒绝其他请求,或通过 firewalld 将可信 IP 加入 trusted 区域并开放 SSH 服务,最后保存规则并重载;需确保备用访问、结合 fail2ban 增强安全、支持多 IP 或子网、定期审查规则,遵循默认拒绝原则,测试连通性。

在 Linux 系统中部署 防火墙 白名单机制,主要是通过配置 IP 策略来限制只有特定 IP 地址或网段可以访问服务器的服务。常用 工具 是iptables或更现代的firewalld(取决于发行版)。以下以这两种主流方式说明如何实现基于 IP 的访问控制白名单。
使用 iptables 配置 IP 白名单
iptables 是 Linux 传统且强大的包过滤工具,适合直接操作内核级网络规则。
场景 :只允许特定 IP(如 192.168.1.100)访问 SSH 服务( 端口22),拒绝其他所有 IP。
操作步骤:
- 清空现有规则(谨慎操作,建议先保存):
iptables -F - 允许本地回环接口通信:
iptables -A INPUT -i lo -j ACCEPT - 允许已建立的连接通过:
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT - 添加白名单 IP:
iptables -A INPUT -s 192.168.1.100 -p tcp –dport 22 -j ACCEPT - 拒绝其他所有访问 SSH 的请求:
iptables -A INPUT -p tcp –dport 22 -j REJECT - 保存规则(CentOS/RHEL):
service iptables save
保存后重启也不会丢失(需确保 iptables 服务启用)。
使用 firewalld 配置 IP 白名单(推荐用于 CentOS 7+/RHEL/Fedora)
firewalld 提供动态管理防火墙的能力,支持区域(zone)概念,更适合白名单场景。
思路:将可信 IP 加入特定区域(如 trusted),并在该区域开放所需服务。
- 启动并启用 firewalld:
systemctl start firewalld && systemctl enable firewalld - 创建 trusted 区域并添加白名单 IP:
firewall-cmd –permanent –add-source=192.168.1.100 –zone=trusted - 在 trusted 区域中允许 SSH 服务:
firewall-cmd –permanent –zone=trusted –add-service=ssh - 重新加载配置:
firewall-cmd –reload
这样只有来自 192.168.1.100 的流量会被允许访问 SSH,其他 IP 默认被拒绝(假设默认区域为 public 且未开放 SSH)。
补充建议与注意事项
- 配置前确保有备用访问方式(如控制台),避免被锁在服务器外。
- 可结合 fail2ban 自动封禁异常 IP,增强安全性。
- 多 IP 白名单可重复添加规则或使用 子网 表示(如 192.168.1.0/24)。
- 定期审查规则列表:
iptables 使用 iptables -L -n -v,
firewalld 使用 firewall-cmd –list-all-zones。
基本上就这些。选择 iptables 还是 firewalld 取决于系统环境和运维习惯,关键是明确“默认拒绝 + 白名单放行”的安全原则。配置完成后务必测试连通性和容错性。不复杂但容易忽略细节。