答案:通过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 取决于系统环境和运维习惯,关键是明确“默认拒绝 + 白名单放行”的安全原则。配置完成后务必测试连通性和容错性。不复杂但容易忽略细节。










