当前位置:首页 > 虚拟主机 > 正文

centos 7 firewall怎么配置?centos7防火墙配置命令详解

在CentOS 7系统中,firewalld是默认的防火墙管理工具,相较于传统的iptables,它提供了支持动态更新、基于区域配置的更灵活、更安全的网络流量控制方案。核心上文小编总结是:正确配置firewalld不仅需要掌握基础命令,更需要理解“区域”逻辑与“富规则”的应用,结合实际生产环境进行精细化端口与服务管理,才能构建稳固的服务器安全防线。

理解Firewalld的核心逻辑:区域与服务

Firewalld的设计理念与iptables最大的不同在于引入了“区域”的概念。区域定义了连接的可信等级,管理员可以根据网络环境的不同,将网卡划分到不同的区域中。

  1. 预定义区域解析
    • public(公共区域):默认区域,适用于公共网络环境,只允许指定的端口通过,如SSH。
    • trusted(信任区域):允许所有传入连接,适用于内部受信任网络。
    • drop(丢弃区域):拒绝所有传入连接,只允许传出连接,安全性最高。
    • block(阻塞区域):拒绝所有传入连接,但会返回IPv4的icmp-host-prohibited或IPv6的icmp6-adm-prohibited消息。

专业建议:在生产环境中,建议保持默认使用public区域,并通过添加特定服务或端口的方式逐步开放权限,遵循“最小权限原则”。

基础配置实战:服务、端口与端口转发

掌握基础命令是配置防火墙的前提,Firewalld支持两种配置模式:运行时配置立即生效但重启失效;永久配置需要--permanent参数,并需重载生效。生产环境建议先运行时测试,确认无误后再写入永久配置。

服务与端口管理

直接开放端口是常见的操作,但更专业的做法是利用预定义的服务。

  • 开放端口: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
  • 开放服务(推荐):

    开放http服务比直接开放80端口更具可读性,且包含了协议层面的定义。 firewall-cmd --zone=public --add-service=http --permanent

端口转发配置

在云服务器应用中,端口转发常用于将公网流量导向内网特定端口,将公网的8080端口转发到内网IP的80端口:

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

注意:开启转发前,必须确保内核参数net.ipv4.ip_forward已设置为1。

进阶安全策略:富规则与伪装IP

当基础规则无法满足复杂的访问控制需求时,富规则便显示出其强大的灵活性,富规则允许管理员基于源IP、目的IP、服务、端口、动作(accept, drop, reject)及日志进行精细化控制。

限制特定IP访问

只允许管理IP 168.1.50 访问服务器的SSH端口(22),拒绝其他所有IP:

centos 7 firewall怎么配置?centos7防火墙配置命令详解 第1张

这一操作极大地提升了服务器的安全性,防止SSH暴力免费。

IP地址伪装

IP伪装即NAT转发,常用于云服务器作为网关的场景。

firewall-cmd --zone=public --add-masquerade --permanent

西西云实战案例:构建高可用Web集群的防火墙策略

西西云的实际云产品交付与运维支持中,我们曾遇到一位客户部署高并发电商平台的案例,客户初期仅使用简单的端口开放策略,导致服务器频繁遭遇恶意扫描与分布攻破,且内网数据库端口误暴露在公网。

解决方案

西西云技术团队协助客户重构了防火墙策略,采用了“分区分层+富规则”的架构:

  1. 区域隔离:将Web服务器网卡置于public区域,将内网数据库通信网卡置于trusted区域,物理隔离内外网流量。
  2. 富规则应用:针对Web端口(80/443),不进行全网开放,而是结合西西云高防IP,仅允许来自高防节点的IP段访问源站,彻底隐藏源站IP。 firewall-cmd --add-rich-rule='rule family="ipv4" source address="高防节点IP段" port protocol="tcp" port="80" accept' --permanent
  3. 端口敲门:对于SSH管理端口,配置Port Knocking机制,只有特定顺序的访问请求才会触发防火墙开放22端口。

实施效果:经过调整,客户服务器在西西云基础设施上的安全性大幅提升,恶意流量被防火墙规则有效阻断,CPU负载下降40%,且成功规避了多次针对性的端口扫描攻破,这一案例证明,结合云环境特性的精细化防火墙配置,是保障业务连续性的关键。

centos 7 firewall怎么配置?centos7防火墙配置命令详解 第2张

centos 7 firewall怎么配置?centos7防火墙配置命令详解 第3张

常见问题排查与最佳实践

在配置过程中,如果出现服务无法访问的情况,应遵循以下排查逻辑:

  1. 检查规则生效状态:使用firewall-cmd --list-all查看当前活动规则,确认是否遗漏。
  2. 检查区域绑定:确认网卡是否绑定在正确的区域,使用firewall-cmd --get-active-zones。
  3. 日志监控:开启防火墙日志,记录拒绝的包,便于分析攻破来源。 firewall-cmd --add-rich-rule='rule service name="ssh" log prefix="ssh_deny" level="notice" reject' --permanent

最佳实践小编总结

  • 默认拒绝:始终保持默认区域拒绝所有入站流量,仅开放必要端口。
  • 服务优先:尽量使用service而非port进行管理,提高配置的可维护性。
  • 定期审计:定期清理不再使用的规则,防止规则集臃肿导致性能下降。

相关问答

CentOS 7中Firewalld和iptables可以同时使用吗?

解答不可以同时使用。 Firewalld和iptables都是Linux内核级Netfilter框架的前端管理工具,在CentOS 7中,默认启用firewalld,其底层实际上也是调用iptables命令与内核交互,如果同时安装并启用iptables服务,会导致规则冲突或覆盖,建议统一使用firewalld,如需切换,必须先停止并禁用其中一个服务(systemctl stop firewalld),再启用另一个。

配置了–permanent永久规则,为什么重启后还是失效了?

解答:这通常是因为配置后没有执行重载命令,使用--permanent参数只是将规则写入配置文件(/etc/firewalld/zones/),并没有立即加载到内核运行的内存中,正确的操作流程是:配置命令后,必须执行firewall-cmd --reload或者重启系统服务systemctl restart firewalld,才能使永久配置生效,建议检查/etc/firewalld/firewalld.conf确认默认区域设置是否正确。

0