别再乱改防火墙了!OpenWrt 21.02 /etc/config/firewall 配置文件逐行解读与安全配置建议
OpenWrt防火墙配置深度解析从安全误区到最佳实践每次在OpenWrt路由器上随意修改防火墙设置时你是否想过那些看似无害的配置可能正在为网络攻击敞开大门作为Linux网络堆栈的核心组件OpenWrt防火墙的复杂性远超表面所见。本文将带您深入/etc/config/firewall的每个配置段揭示那些容易被忽视的安全陷阱并提供经过实战检验的配置方案。1. 防火墙架构与配置基础OpenWrt的防火墙系统本质上是对Linux内核netfilter框架的封装但通过fw3工具和UCI配置界面进行了高度抽象。这种设计虽然提升了易用性却也隐藏了关键的安全细节。理解以下核心概念是安全配置的前提四表五链体系虽然OpenWrt简化了iptables的原始结构但filter表的INPUT、FORWARD、OUTPUT链以及nat表的PREROUTING、POSTROUTING链仍然构成流量控制的基础框架fw3工作流程UCI配置文件 → fw3解析器 → iptables/nftables规则生成 → 内核netfilter加载配置生效机制修改/etc/config/firewall后必须执行/etc/init.d/firewall restart才能使变更生效直接使用iptables命令修改会绕过配置持久化典型的新手错误包括# 危险操作示例直接清空所有防火墙规则 iptables -F iptables -t nat -F这种操作会立即移除所有防护使设备完全暴露在网络中。正确的做法是通过UCI系统进行配置变更确保规则持久化和一致性。2. defaults段全局策略的安全平衡defaults段定义了防火墙的全局默认行为看似简单的参数选择实则影响整个网络的安全态势。以下是经过安全加固的推荐配置config defaults option syn_flood 1 option input REJECT # 严格模式建议改为REJECT option output ACCEPT option forward REJECT # 明确拒绝未授权的转发 option disable_ipv6 0 # 现代网络需要IPv6支持关键参数的安全考量参数安全值风险值潜在威胁inputREJECTACCEPT暴露管理接口和本地服务forwardREJECTACCEPT可能成为流量转发跳板syn_flood10易受SYN洪水攻击disable_ipv601导致IPv6流量绕过防火墙特别警告将input设置为ACCEPT是家用路由器常见的安全隐患这会使所有LAN设备都能访问路由器的管理界面。在商业环境中这可能导致内部横向渗透。3. zone配置网络边界的精确划分zone是OpenWrt防火墙的核心抽象概念正确划分安全域是构建防御体系的基础。以下是典型的两zone配置示例config zone option name lan list network lan option input ACCEPT option output ACCEPT option forward RECEPT # 严格控制LAN间转发 option masq 0 config zone option name wan list network wan list network wan6 option input REJECT option output ACCEPT option forward REJECT option masq 1 # 启用NAT伪装 option mtu_fix 1安全配置要点masq(NAT)配置仅在WAN zone启用LAN zone启用会导致双重NAT问题MTU修复PPPoE等连接必须设置mtu_fix 1避免分片攻击网络接口绑定确保每个物理接口只属于一个zone避免边界模糊常见错误案例# 危险配置将同一接口加入多个zone config zone option name dmz list network lan # 与lan zone重叠 ...这种配置会导致防火墙策略冲突可能意外允许WAN到LAN的直接访问。4. forwarding规则区域流量的精细控制forwarding段控制zone间的流量交互需要遵循最小权限原则。安全配置示范# 允许LAN到WAN的出口流量 config forwarding option src lan option dest wan # 禁止所有其他zone间转发 # 不配置任何额外的forwarding规则高级安全策略可以通过规则组合实现创建隔离区(DMZ)zoneconfig zone option name dmz list network dmz option input REJECT option output ACCEPT option forward REJECT精确控制DMZ访问config forwarding option src lan option dest dmz option family ipv4禁止DMZ发起向内连接config rule option name Block-DMZ-to-LAN option src dmz option dest lan option proto all option target REJECT5. rule规则服务访问的精准管控rule段提供最细粒度的流量控制能力需要特别注意规则顺序带来的影响。安全增强配置示例# 基础服务放行 config rule option name Allow-DHCP option src lan option proto udp option dest_port 67-68 option target ACCEPT option family ipv4 config rule option name Allow-DNS option src lan option proto udp option dest_port 53 option target ACCEPT # 严格限制WAN入站 config rule option name Block-WAN-Input option src wan option proto all option target REJECT option family ipv4关键安全实践默认拒绝策略先设置全局REJECT规则再逐步开放必要服务协议限定避免使用proto all明确指定tcp/udp/icmp等日志记录对关键规则添加option extra --log-prefix FIREWALL: 便于审计危险配置警示# 高风险规则开放所有WAN到LAN的ICMP config rule option name Allow-All-ICMP option src wan option dest lan option proto icmp option target ACCEPT这可能导致ICMP隧道攻击建议仅放行特定类型的ICMPlist icmp_type echo-request list icmp_type destination-unreachable6. redirect规则端口转发的安全实现端口转发是最大攻击面之一必须严格限制范围和目标。安全配置模板# 安全的SSH转发示例 config redirect option name SSH-Redirect option src wan option src_dport 2222 # 修改默认端口 option proto tcp option dest lan option dest_ip 192.168.1.100 option dest_port 22 option target DNAT option extra --match limit --limit 3/min --limit-burst 3安全增强措施端口伪装不使用标准服务端口(如80/22)速率限制通过extra参数添加iptables扩展IP限制结合rule段实现源IP白名单# IP白名单示例 config rule option name Allow-SSH-Office option src wan option src_ip 203.0.113.15 # 办公网络IP option proto tcp option dest_port 2222 option target ACCEPT绝对避免的配置# 危险的全端口DMZ转发 config redirect option src wan option proto all option dest_ip 192.168.1.2这相当于将内网主机完全暴露在公网应使用精确的端口映射替代。7. 高级安全配置技巧7.1 防御DDoS攻击在defaults段启用SYN cookie防护option syn_flood 1 option synflood_rate 25 option synflood_burst 507.2 防止IP欺骗添加规则阻止私有IP从WAN进入config rule option name Block-Private-IPs option src wan option src_ip 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 option proto all option target REJECT7.3 应用层防护利用iptables扩展防御常见攻击# 在/etc/firewall.user中添加 iptables -A INPUT -p tcp --dport 80 -m string --string cmd.exe --algo bm -j DROP iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP7.4 配置备份与恢复定期备份防火墙配置# 备份 uci export firewall /etc/firewall.backup.$(date %F) # 恢复 cat /etc/firewall.backup | uci import firewall /etc/init.d/firewall restart8. 安全审计与监控8.1 日志分析配置启用详细日志记录config rule option name Log-WAN-Attempts option src wan option proto all option target LOG option extra --log-level 4 --log-prefix WAN_ATTACK: 8.2 实时监控命令查看当前生效规则iptables-save -c监控实时连接conntrack -E8.3 安全扫描检测使用nmap自检nmap -sS -T4 -A -v 192.168.1.1检查开放服务netstat -tulnp