文章目录
- Linux Firewalld 入门及命令使用指南
- Firewalld 的基本概念
- Zone(区域)
- 服务和端口
- 永久与临时规则
- Firewalld 基本命令
- 查看 firewalld 状态
- 查看当前区域
- 查看某个区域的配置
- 添加服务到指定区域
- 删除服务
- 开放端口
- 删除端口
- 重新加载配置
- 查看所有已打开的端口
- 启用/禁用 Firewalld
- 创建和管理自定义区域
- 创建自定义区域
- 将接口分配到自定义区域
- 删除自定义区域
- Firewalld 高级用法
- 启用/禁用 IP 转发
- 设置端口转发
- 配置富规则(Rich Rules)
- 防火墙日志记录
- 总结
Linux Firewalld 入门及命令使用指南
firewalld
是 Linux 上一个动态管理防火墙的工具,提供了比传统 iptables
更简单、更灵活的防火墙管理方式。firewalld
默认使用 zones
(区域)的概念来管理网络流量,它允许管理员根据不同的区域进行安全性配置,从而实现更细粒度的网络访问控制。
本指南将介绍 firewalld
的基本概念及其常用命令,帮助你快速掌握该工具的使用方法。
Firewalld 的基本概念
Zone(区域)
Firewalld 使用 zone 来对网络接口进行分区,并为每个区域设置不同的防火墙规则。不同的区域对应不同的安全级别。常见的 zone 有:
- trusted: 信任所有网络连接。
- home: 家庭网络,信任大部分网络连接。
- public: 公共网络,具有较严格的安全规则。
- block: 丢弃所有传入流量,不返回响应。
- drop: 丢弃所有流量,无响应,完全静默。
服务和端口
Firewalld 可以根据服务或端口进行防火墙规则的管理。服务包含了一系列预定义的端口和协议,常见的服务如 http
、https
等。
永久与临时规则
Firewalld 提供了两种规则:临时规则和永久规则。临时规则在重启后失效,而永久规则则会保存在配置文件中,重启后依然有效。
Firewalld 基本命令
查看 firewalld 状态
firewall-cmd --state
输出 running
表示防火墙正在运行。
查看当前区域
firewall-cmd --get-active-zones
输出会显示当前系统中使用的区域以及它们所绑定的网络接口。
查看某个区域的配置
firewall-cmd --zone=public --list-all
这条命令会列出 public
区域的详细配置,包括开放的端口、允许的服务等。
添加服务到指定区域
比如要允许 HTTP 服务:
firewall-cmd --zone=public --add-service=http
这条命令会立即生效,但它是临时的。要永久生效,需要添加 --permanent
选项:
firewall-cmd --zone=public --add-service=http --permanent
删除服务
假如要从 public
区域中移除 HTTP 服务:
firewall-cmd --zone=public --remove-service=http
开放端口
除了添加服务,你也可以直接通过端口号进行配置。例如,开放端口 8080:
firewall-cmd --zone=public --add-port=8080/tcp
删除端口
关闭之前开放的 8080 端口:
firewall-cmd --zone=public --remove-port=8080/tcp
重新加载配置
任何永久性的规则更改之后,都需要重新加载防火墙配置才能生效:
firewall-cmd --reload
查看所有已打开的端口
查看当前防火墙规则中已打开的所有端口:
firewall-cmd --list-ports
启用/禁用 Firewalld
启动 firewalld
:
systemctl start firewalld
禁用 firewalld
:
systemctl stop firewalld
创建和管理自定义区域
有时你可能需要根据自己的需求创建自定义区域,以管理不同的网络接口或流量类型。
创建自定义区域
firewall-cmd --permanent --new-zone=myzone
将接口分配到自定义区域
firewall-cmd --zone=myzone --change-interface=eth0
删除自定义区域
firewall-cmd --permanent --delete-zone=myzone
Firewalld 高级用法
启用/禁用 IP 转发
IP 转发使得 Linux 系统可以作为路由器工作。启用 IP 转发:
firewall-cmd --add-masquerade
禁用 IP 转发:
firewall-cmd --remove-masquerade
设置端口转发
Firewalld 允许你配置端口转发,比如将外部的 80 端口流量转发到内部服务器的 8080 端口:
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
配置富规则(Rich Rules)
富规则允许你定义更复杂的规则,例如基于源 IP 地址的流量控制:
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' service name='ssh' accept"
防火墙日志记录
Firewalld 支持日志记录功能,开启日志功能可以帮助你监控防火墙的运行情况:
firewall-cmd --set-log-denied=all
总结
firewalld
提供了动态、区域化的防火墙管理机制,用户可以通过简单的命令实现复杂的防火墙配置。无论是管理服务、端口还是设置端口转发,firewalld
都能提供强大的功能。结合永久规则和临时规则,你可以在生产环境和开发环境中灵活管理 Linux 系统的网络访问控制。