Firewalld 防火墙配置
1. 安装 firewalld
# 安装
sudo apt update
sudo apt install firewalld -y
# 启动并开机自启
sudo systemctl start firewalld
sudo systemctl enable firewalld
2. 检查 firewalld 状态
sudo firewall-cmd --state
# running / not running
# 查看更详细的状态
sudo systemctl status firewalld
3. 查看当前防火墙规则
# 查看默认区域(通常是 public)
sudo firewall-cmd --get-default-zone
# 查看活动区域及其规则
sudo firewall-cmd --list-all
# 查看所有预定义服务
sudo firewall-cmd --get-services
输出示例:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
4. 管理防火墙规则
允许服务
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
--permanent:使规则永久生效(重启后仍然有效)- 不加
--permanent,规则会在重启后失效
允许端口
# 添加端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 移除端口
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# 端口范围
sudo firewall-cmd --zone=public --add-port=5000-6000/udp --permanent
拒绝特定 IP
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject' --permanent
5. 应用更改
每次修改规则后必须重新加载才能生效:
sudo firewall-cmd --reload
# 或
sudo systemctl restart firewalld
6. 其他常用命令
| 命令 | 说明 |
|---|---|
sudo firewall-cmd --list-ports |
查看开放的端口 |
sudo firewall-cmd --list-services |
查看允许的服务 |
sudo firewall-cmd --get-active-zones |
查看活动的区域 |
sudo firewall-cmd --zone=public --remove-service=ftp --permanent |
移除某个服务 |
sudo firewall-cmd --zone=public --query-port=80/tcp |
检查 80 端口是否开放 |
7. 禁用 firewalld
如果想停止 firewalld 并改用 ufw 或 iptables:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
总结
- firewalld 提供更高级的防火墙管理(如动态规则、区域管理)
- 使用
firewall-cmd配置规则,记得加--permanent并--reload - 简单需求用 ufw 更易用(
sudo ufw enable+sudo ufw allow 22) - Ubuntu/Debian 优先用 ufw,CentOS/RHEL 用 firewalld
原文链接:https://www.ssssmy.com/notes/firewalld-fang-huo-qiang-pei-zhi