前言
在CentOS 7中,firewalld是默认的防火墙管理工具,它提供了一种简化和易于使用的方法来配置和管理防火墙规则。
firewalld简介
- 引入:从CentOS 7开始,默认使用firewalld来配置防火墙,而不是传统的iptables。
- 配置文件:firewalld的配置文件以xml格式存储,主要位于/usr/lib/firewalld/和/etc/firewalld/目录中。
- /usr/lib/firewalld/:系统配置目录,存放定义好的网络服务和端口参数等,通常不建议直接修改。
- /etc/firewalld/:用户配置目录,管理员可以在这里进行自定义配置。
特性与功能
- 动态更新:firewalld支持动态更新防火墙规则,无需重启服务即可添加、删除或修改规则。
- 区域(Zone)概念:firewalld引入了“zone”的概念,可以理解为防火墙的单位或规则集。预定义的区域包括public、external、dmz、work、home、internal和trusted等。
- 运行时和永久配置:firewalld支持运行时配置和永久配置。运行时配置在系统重启后会失效,而永久配置则会持久保存。
- 服务和端口管理:通过定义服务和端口来管理访问控制。服务是一组预定义的规则,用于允许或拒绝特定的网络服务。
- 连接跟踪:firewalld使用连接跟踪来跟踪网络连接状态,自动识别和允许与现有连接相关的回复流量。
- D-Bus接口:提供了一个D-Bus接口,允许其他应用程序通过API与其交互,实现更高级的防火墙配置和管理。
区域(Zones)详解
- 每个区域都有自己的防火墙规则集合,可以根据网络环境的不同选择适当的区域。
- 常见的区域包括:
- public:在公共区域内使用,不能信任网络内的其他计算机。
- external:特别是为路由器启动了伪装功能的外部网。
- dmz:用于非军事区内的电脑,此区域内可公开访问。
- work、home、internal:分别用于工作区、家庭网络和内部网络,可以基本信任网络内的其他计算机。
- trusted:可接受所有的网络连接。
安装 firewall
- 如果系统中尚未安装 firewall,可以使用以下命令进行安装:
yum -y install firewalld
查看防火墙状态
- 查看 firewalld 服务的状态,包括是否正在运行等信息。
systemctl status firewalld
启动、停止和重启防火墙
systemctl start firewalld #启动 firewalld 服务。
systemctl stop firewalld #停止 firewalld 服务。
systemctl restart firewalld #重启 firewalld 服务。
设置防火墙开机启动或禁止开机启动
systemctl enable firewalld #设置 firewalld 服务开机启动。
systemctl disable firewalld #禁止 firewalld 服务开机启动。
开放和关闭端口
#在 public 区域永久开放 TCP 80 端口。
firewall-cmd --zone=public --add-port=80/tcp --permanent#重新加载防火墙配置,使更改生效。
firewall-cmd --reload#在 public 区域永久关闭 TCP 80 端口。
firewall-cmd --remove-port=80/tcp --permanent```bash
#允许HTTP和HTTPS通信:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload#打开2222端口
firewall-cmd --zone=public --add-port=2222/tcp --permanent
firewall-cmd --reload#关闭2222端口
firewall-cmd --zone=public --remove-port=2222/tcp --permanent
firewall-cmd --reload
批量开放端口
#在 public 区域永久开放 TCP 100 到 500 端口。
firewall-cmd --permanent --zone=public --add-port=100-500/tcp
查看已开放的端口
#查看 public 区域已开放的端口。
firewall-cmd --zone=public --list-ports
其他常用命令
#查看 firewall-cmd 的版本信息。
firewall-cmd --version#查看 firewall-cmd 的帮助信息。
firewall-cmd --help#查看已激活的 Zone 信息。
firewall-cmd --get-active-zones#查看指定接口(如 eth0)所属的区域。
firewall-cmd --get-zone-of-interface=eth0
规则管理和备份
- 你可以使用 firewall-cmd 提供的各种选项来添加、删除和查询防火墙规则。 如果需要备份防火墙规则,可以考虑将
firewall-cmd 的输出重定向到一个文件中,或者利用其他系统备份工具来备份 /etc/firewalld/ 目录下的配置文件。 - 信任级别和区域(Zones)
CentOS 7 的 firewall 支持多个区域(Zones),每个区域都有不同的信任级别和规则集。例如,public 区域通常用于公共连接,而 internal 区域则用于受信任的内部网络。你可以使用 firewall-cmd 来设置和查询区域信息。
结束言
- 这些命令和选项为管理 CentOS 7 中的 firewall 提供了丰富的功能,使你能够根据自己的需求配置和管理防火墙规则。