2026-10-31 12:04:35
Linux防火墙规则配置主要通过firewalld或iptables实现,具体方法因工具和发行版而异,以下是两种主流工具的实用配置指南:
一、使用firewalld配置防火墙规则(推荐CentOS 7+及桌面环境)firewalld支持动态规则管理,通过区域(zone)分类网络环境,适合快速部署和日常管理。
1. 启动并启用服务
sudo systemctl start firewalld # 启动服务sudo systemctl enable firewalld # 设置开机自启2. 查看状态与默认区域
sudo firewall-cmd --state # 检查服务状态(running/not running)sudo firewall-cmd --get-default-zone # 查看默认区域(如public)3. 开放端口或服务
开放单个端口(如HTTP的80端口):sudo firewall-cmd --permanent --add-port=80/tcp # --permanent表示永久生效sudo firewall-cmd --reload # 重载配置使规则生效
开放预定义服务(如SSH、HTTP):sudo firewall-cmd --permanent --add-service=sshsudo firewall-cmd --reload
4. 查看当前规则
sudo firewall-cmd --list-all # 显示所有规则(包括端口、服务、源地址等)sudo firewall-cmd --list-ports # 仅查看开放的端口5. 区域管理(高级用法)
切换默认区域:sudo firewall-cmd --set-default-zone=trusted # 设置为信任区域(谨慎使用)
为特定网络接口分配区域:sudo firewall-cmd --permanent --zone=external --add-interface=eth1
适用场景:Web服务器、数据库等需要快速放行标准服务的场景,或桌面环境简化管理。
二、使用iptables配置防火墙规则(适合精细控制)iptables直接操作内核Netfilter模块,功能强大但需手动管理规则链,适合需要深度定制的场景。
1. 查看当前规则
sudo iptables -L -n -v # 显示规则列表(-n禁用域名解析,-v显示详细信息)2. 基础规则配置
允许本地回环通信(防止锁死本地服务):sudo iptables -A INPUT -i lo -j ACCEPT
允许已建立的连接(如已连接的SSH、HTTP):sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
开放特定端口(如SSH的22端口):sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
3. 设置默认策略
拒绝所有入站连接(需确保必要端口已放行):sudo iptables -P INPUT DROP # 慎用!先测试或保留SSH访问
允许所有出站连接(根据需求调整):sudo iptables -P OUTPUT ACCEPT
4. 保存规则
CentOS/RHEL:sudo service iptables save # 或使用 /sbin/iptables-save > /etc/sysconfig/iptables
Debian/Ubuntu:sudo apt-get install iptables-persistent # 安装持久化工具sudo netfilter-persistent save # 保存规则
适用场景:需要精细控制数据包流程(如NAT、端口转发)或使用非主流发行版时。
三、关键注意事项与优化建议工具选择:
桌面环境或快速部署:优先用firewalld(命令简洁,支持热更新)。
精细控制或旧系统:使用iptables(功能更灵活)。
安全增强:
生产环境建议结合fail2ban自动封禁恶意IP,防止暴力破解。
远程配置时,先测试规则或设置定时任务恢复默认配置,避免误锁。
规则优化:
遵循“最小权限原则”,仅开放必要端口。
定期审计规则,删除无用条目(如测试端口)。
总结:掌握firewalld和iptables的基本用法后,可根据系统环境选择合适工具,合理规划出入站规则,构建系统的第一道网络防线。