一、CentOS7防火墙firewalld介绍
1. 基本概念

Firewalld是CentOS7中引入的动态管理防火墙工具,旨在简化防火墙管理,提供更灵活和动态的控制,它通过定义不同的区域(zones)来管理网络流量,每个区域代表一组防火墙规则,可以根据网络接口或源地址分配到不同的区域,与iptables相比,Firewalld支持在不中断现有连接的情况下动态更改规则,且配置更加直观和人性化。
2. 核心概念
区域(Zones):Firewalld将网卡对应到不同的区域,每个区域有不同的规则,默认共有9个区域,如block、dmz、drop、external、home、internal、public、trusted、work等,不同区域的对待数据包的默认行为不同,例如public区域不信任任何传入的网络数据包,只选择接受传入的网络连接。
服务(Services):预定义的服务代表一组端口和协议,便于管理,http服务代表80端口的TCP协议,用户可以通过服务名称而不是端口号来配置规则。
规则(Rules):决定哪些流量被允许或拒绝,规则由三部分组成:目标(如IP地址、MAC地址)、条件(如端口号、协议类型)和动作(如接受、拒绝)。
接口绑定:可以将网络接口绑定到特定的区域,以应用该区域的规则。

3. 安装与启动
安装:使用sudo yum install firewalld y命令安装firewalld(如果未预装)。
启动并设置开机自启:sudo systemctl start firewalld启动firewalld服务,sudo systemctl enable firewalld设置为开机自启动。
验证状态:使用sudo systemctl status firewalld命令查看firewalld状态,确保其正常运行。
4. 常用命令
查看状态:sudo firewallcmd state查看firewalld服务状态。

查看所有区域:sudo firewallcmd getzones列出所有可用的区域。
查看指定区域的规则:sudo firewallcmd zone=<zone> listall查看指定区域的详细规则。
开放端口:sudo firewallcmd zone=<zone> addport=<port>/<protocol> permanent永久开放指定端口。
删除端口:sudo firewallcmd zone=<zone> removeport=<port>/<protocol> permanent永久删除指定端口。
添加服务:sudo firewallcmd zone=<zone> addservice=<service> permanent永久添加指定服务。
删除服务:sudo firewallcmd zone=<zone> removeservice=<service> permanent永久删除指定服务。
二、相关FAQs
Q1: Firewalld和iptables有什么区别?
A1: Firewalld是一个动态管理防火墙的工具,支持在不中断现有连接的情况下动态更改规则;而iptables使用静态规则集,更改规则时可能需要重新应用整个规则集,可能导致短暂的网络中断,Firewalld提供了基于区域的网络流量管理,使得配置更加直观和灵活。
Q2: 如何查看当前活动的防火墙区域和规则?
A2: 可以使用sudo firewallcmd getactivezones命令查看当前活动的防火墙区域,以及sudo firewallcmd zone=<zone> listall命令查看指定区域的详细规则。
