firewalld防火墙(二):端口转发、自定义服务与应急模式

目录

一、原理与理论扩展

1. 富规则(Rich Rules)引擎

2. ICMP协议控制原理

​编辑

3. 应急模式(Panic Mode)

二、高级配置步骤详解

1. 端口转发(NAT映射)

2. 带日志记录的富规则

3. 自定义服务开发

4. ICMP策略精细化控制

三、生产环境问题解决方案

1. 端口转发失效排查

2. 自定义服务未生效

3. 误触发应急模式恢复方案

四、总结与最佳实践

高阶配置核心要点

监控与维护脚本


一、原理与理论扩展

1. 富规则(Rich Rules)引擎
  • 功能矩阵

    功能 底层实现 优势
    端口转发 NAT表+PREROUTING链  NAT 表+PREROUTING 链 无需修改应用配置
    日志记录 LOG动作+限制速率 审计攻击源且避免日志洪水
    复杂条件过滤 多字段组合(IP/端口/协议) 替代iptables复杂脚本
2. ICMP协议控制原理
firewalld防火墙(二):端口转发、自定义服务与应急模式_第1张图片
  • 关键类型:echo-reply(响应)/echo-request(请求)/destination-unreachable(目标不可达)

3. 应急模式(Panic Mode)
  • 触发时:立即丢弃所有进出流量(包括SSH连接)

  • 恢复方式:物理控制台执行firewall-cmd --panic-off


二、高级配置步骤详解

1. 端口转发(NAT映射)

场景:将公网IP 8080端口转发到内网Web服务器(192.168.1.100:80)

# 启用IP伪装(NAT必备)
firewall-cmd --permanent --zone=public --add-masquerade

# 配置端口转发
firewall-cmd --permanent --zone=public \
--add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.100

# 重载生效 && 验证
firewall-cmd --reload
firewall-cmd --list-forward-ports  # 查看规则

 

2. 带日志记录的富规则

场景:记录并限制SSH暴力破解(每分钟最多3次连接)

firewall-cmd --permanent --zone=public \
--add-rich-rule='rule service name="ssh" log prefix="SSH_ATTACK:" level="notice" limit value="3/m" accept'

# 日志路径:/var/log/messages (CentOS) / /var/log/syslog (Ubuntu)

 

3. 自定义服务开发

步骤:为自定义应用MyApp(TCP端口 9999)创建服务

  1. 创建服务文件:

    cat > /etc/firewalld/services/myapp.xml <
    
      MyApp Service
      Custom application for data processing
      
    
    EOF
  2.  加载并启用服务:
firewall-cmd --reload  # 加载新服务定义
firewall-cmd --permanent --zone=work --add-service=myapp
firewall-cmd --reload
4. ICMP策略精细化控制
# 允许ping请求(echo-request)
firewall-cmd --permanent --zone=public --add-icmp-block-inversion

# 禁止特定攻击类ICMP(如时间戳请求)
firewall-cmd --permanent --zone=public \
--add-icmp-block={timestamp-request,address-mask-request}

 5. 应急模式操作

# 触发应急模式(立即断网!)
firewall-cmd --panic-on

# 从物理服务器恢复(机房/云控制台)
firewall-cmd --panic-off

# 查看状态
firewall-cmd --query-panic  # 返回yes/no

 


三、生产环境问题解决方案

1. 端口转发失效排查
  • 症状:外部访问8080无响应

  • 诊断步骤

    1. 确认内核转发开启:sysctl net.ipv4.ip_forward (应为1)

    2. 检查MASQUERADE:firewall-cmd --query-masquerade  检查 MASQUERADE: firewall-cmd --query-masquerade

    3. 抓包验证:tcpdump -i eth0 port 8080

2. 自定义服务未生效
  • 根因:XML文件语法错误或权限问题

  • 验证工具

firewall-cmd --check-config  # 检测配置合法性
ls -Z /etc/firewalld/services/myapp.xml  # 确认SELinux上下文
3. 误触发应急模式恢复方案
  1. 物理机:通过本地控制台执行firewall-cmd --panic-off

  2. 云服务器:

    • AWS:使用 EC2 Serial Console
      AWS:使用 EC2 串行控制台

    • 阿里云:通过 救援模式 挂载磁盘修复


四、总结与最佳实践

高阶配置核心要点
  1. 端口转发铁律

    • 必须开启masquerade(相当于iptables MASQUERADE)

    • 目标服务器需配置回包路由

  2. 富规则设计原则

    • 精确匹配规则置顶(如IP白名单)

    • 通用拒绝规则置底(如reject全局策略)

  3. ICMP安全建议

    • 生产环境关闭echo-request防探测

    • 必须开放destination-unreachable避免连接僵死

监控与维护脚本
# 实时监控防火墙状态
watch -n 1 'firewall-cmd --list-all; echo; firewall-cmd --list-rich-rules'

# 备份配置(版本控制)
rpm -qa firewalld > ~/firewalld_version.txt
cp -r /etc/firewalld/ ~/firewalld_backup_$(date +%F)

你可能感兴趣的:(firewalld防火墙(二):端口转发、自定义服务与应急模式)