Skip to main content

firewalld 服务教程

1. 什么是 firewalld? 🤔

firewalld 是一款基于区域的动态防火墙管理工具,适用于 Linux 系统。它提供了比传统 iptables 更易用的界面,可以通过命令行或图形化工具配置。firewalld 默认基于 zones(区域)来管理网络流量,可以根据不同的信任级别和网络接口设置规则。🌐

特点描述
区域管理使用区域(zones)来管理不同的网络接口。
动态管理不需要重启服务即可应用配置,便于实时管理。
支持丰富的协议支持 TCP、UDP、ICMP 等协议的配置。

2. 安装 firewalld 📥

2.1 安装 firewalld

在大多数 Linux 发行版中,firewalld 可能已经预装。如果没有,可以使用以下命令安装它:

在 Ubuntu 或 Debian 系统上:

sudo apt update
sudo apt install firewalld

在 CentOS 或 RHEL 系统上:

sudo yum install firewalld

2.2 启动 firewalld 服务

安装完成后,启动 firewalld 服务:

sudo systemctl start firewalld

2.3 设置 firewalld 开机自启

为了确保 firewalld 在系统启动时自动启用,使用以下命令:

sudo systemctl enable firewalld

2.4 检查 firewalld 服务状态

检查 firewalld 是否正在运行:

sudo systemctl status firewalld

3. 配置 firewalld 防火墙 ⚙️

3.1 firewalld 区域(Zones)

firewalld 使用“区域”来表示不同网络接口的信任级别。每个区域可以拥有不同的规则,允许或拒绝某些类型的网络流量。默认情况下,firewalld 提供了以下几种区域:

  • public: 适用于不信任的网络,默认拒绝大多数连接。
  • home: 适用于家庭网络,通常允许大多数流量。
  • work: 适用于公司网络。
  • trusted: 允许所有流量的区域。

你可以使用以下命令查看当前系统支持的区域:

sudo firewall-cmd --get-zones

3.2 设置活动区域

查看当前网络接口所在的区域:

sudo firewall-cmd --get-active-zones

如果你想更改某个接口的区域,可以使用:

sudo firewall-cmd --zone=public --change-interface=eth0

3.3 查看当前区域规则

你可以查看某个区域的规则,例如查看 public 区域的规则:

sudo firewall-cmd --zone=public --list-all

3.4 配置防火墙规则

3.4.1 允许某个端口的访问

例如,要允许 SSH(端口 22)访问:

sudo firewall-cmd --zone=public --add-port=22/tcp --permanent

3.4.2 允许服务(如 HTTP 和 HTTPS)

可以通过服务名称添加规则:

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

3.4.3 拒绝 ICMP(Ping)请求

如果你想阻止 ICMP 请求(即禁用 Ping):

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" reject' --permanent

3.4.4 允许来自特定 IP 地址的流量

你可以限制只允许来自某个 IP 地址的流量访问某个服务,例如只允许 IP 地址为 192.168.1.100 的机器访问 SSH:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' --permanent

3.4.5 设置默认区域

如果你想将默认区域更改为 home,可以使用以下命令:

sudo firewall-cmd --set-default-zone=home

4. 临时应用和永久配置 🔧

4.1 临时应用规则

通过 firewalld 命令添加的规则默认为临时的,会在重启后失效。如果你想立即应用规则,但不保存到配置文件,可以使用:

sudo firewall-cmd --zone=public --add-port=8080/tcp

4.2 保存规则

为了确保规则在重启后仍然有效,使用 --permanent 参数保存规则:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

4.3 重载防火墙配置

修改防火墙配置后,需要重新加载配置:

sudo firewall-cmd --reload

5. 管理 firewalld 服务 🛠️

5.1 查看防火墙规则

要查看当前防火墙的状态和规则,可以使用:

sudo firewall-cmd --list-all

5.2 删除规则

要删除某个端口的规则,可以使用:

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

5.3 禁用防火墙

如果你暂时不需要防火墙,可以通过以下命令禁用 firewalld:

sudo systemctl stop firewalld

5.4 开启防火墙

要重新启用 firewalld,可以使用:

sudo systemctl start firewalld

6. 使用 rich rules 进行复杂配置 🔐

firewalld 支持使用 rich rules 来定义更复杂的防火墙规则。rich rules 提供了更多的灵活性,如限制来源、目标等。

例如,允许来自某个 IP 地址的 SSH 请求:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' --permanent

7. 小结 🎉

通过本教程,你已经学习了如何安装、配置和管理 firewalld 防火墙,增强了 Linux 系统的安全性。firewalld 提供了简单而强大的网络流量管理功能,能够灵活地配置不同区域、服务和端口。希望这篇教程对你有所帮助!🚀 别忘了收藏 在线知识库www.zxzsk.com )哦!😊