当前位置:首页 > 系统教程 > 正文

CentOS Firewalld高级配置与实战案例 (从入门到精通:防火墙规则、端口转发与故障排查)

CentOS Firewalld高级配置与实战案例 (从入门到精通:防火墙规则、端口转发与故障排查)

CentOS Firewalld高级配置与实战案例 (从入门到精通:防火墙规则、端口转发与故障排查) Firewalld  防火墙规则配置 端口转发 富规则 第1张

在上一篇文章中,我们介绍了CentOS Firewalld的基本概念和常用命令。本篇将深入探讨防火墙规则配置的高级技巧,包括富规则、端口转发、masquerade等,并通过实战案例帮助您彻底掌握Firewalld。

1. 核心概念回顾:区域与规则

Firewalld使用区域来管理信任级别。常见区域包括public(默认)、internal、dmz、drop等。每个区域可以绑定网络接口,并定义允许的服务、端口和规则。使用firewall-cmd --get-default-zone查看当前默认区域。

2. 高级规则配置:富规则(Rich Rules)

富规则允许更精细的控制,比如基于源IP、目标端口、协议和日志的规则。例如,只允许192.168.1.100访问SSH,而拒绝其他:

    firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.1.100" service name="ssh" accept"firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" service name="ssh" reject"firewall-cmd --reload  

这里我们用到了富规则,第一条允许特定IP,第二条拒绝其他SSH请求。注意规则的顺序非常重要,允许规则必须在拒绝之前。

3. 端口转发与Masquerade

端口转发可以将到达本机某端口的流量转发到另一台机器的指定端口。例如,将80端口转发到内部Web服务器192.168.1.10的8080端口:

    firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.10firewall-cmd --reload  

如果需要进行源NAT(共享上网),需要开启masquerade:

    firewall-cmd --permanent --zone=public --add-masqueradefirewall-cmd --reload  

4. 实战案例:保护Web服务器

假设我们有一台CentOS服务器,需要提供Web服务(HTTP/HTTPS),同时SSH仅允许管理员IP(203.0.113.5)访问,并将外部8080端口转发到内部Tomcat的8080端口。

步骤1:清空当前配置,设置默认区域为public

    firewall-cmd --set-default-zone=publicfirewall-cmd --permanent --zone=public --remove-service={ssh,http,https} --remove-port=...  

步骤2:允许HTTP和HTTPS

    firewall-cmd --permanent --zone=public --add-service=httpfirewall-cmd --permanent --zone=public --add-service=https  

步骤3:限制SSH仅允许管理员IP

    firewall-cmd --permanent --zone=public --remove-service=sshfirewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="203.0.113.5" service name="ssh" accept"  

步骤4:配置端口转发(8080 -> 内网192.168.1.100:8080)

    firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.100:toport=8080  

步骤5:重新加载并验证

    firewall-cmd --reloadfirewall-cmd --list-all  

现在,服务器只允许特定IP的SSH,开放了80/443,并将8080转发到内部服务器。完美!

5. 故障排查与常用命令

  • firewall-cmd --state:查看firewalld运行状态。
  • firewall-cmd --list-all-zones:查看所有区域配置。
  • firewall-cmd --get-active-zones:查看当前活跃区域。
  • journalctl -u firewalld:查看firewalld日志。
  • firewall-cmd --panic-on/off:紧急切断/恢复所有流量。

通过以上命令,您可以快速定位问题。例如,如果端口转发不生效,检查是否开启了IP转发:sysctl net.ipv4.ip_forward需要为1。

总结

本文深入介绍了CentOS Firewalld的高级特性,包括防火墙规则配置端口转发富规则的使用,并通过实战案例展示了如何保护Web服务器。掌握这些技能,您就能轻松应对复杂的网络环境。希望本文对您有所帮助!