云服务器特惠入口通道
一、引言

Firewalld 是Linux 系统动态防火墙管理工具,相比传统 iptables 更灵活(支持动态更新规则无需重启服务),是火山引擎 Linux 云服务器的核心安全防护组件。它与火山引擎安全组(实例外部防火墙)配合,实现「外部 + 内部」双重防护,有效阻挡非法访问、限制端口暴露。
二、环境准备

火山实例要求:CentOS 7+/RHEL 7+(默认预装 firewalld)、Ubuntu 20.04+(需手动安装);
SSH 登录:通过公网 IP 登录实例(如 ssh root@123.45.67.89);
权限要求:所有配置需sudo权限(root 用户可直接执行);
前置确认:先查看火山引擎安全组规则(控制台→实例→安全组),避免外部防火墙拦截基础连接。
三、Firewalld 安装与基础配置
3.1 CentOS/RHEL 系统(默认预装)

1. 启动firewalld服务

sudo systemctl start firewalld

2. 设置开机自启

sudo systemctl enable firewalld

3. 查看服务状态(确认running)

sudo systemctl status firewalld

4. 查看当前规则(默认public zone)

sudo firewall-cmd --list-all
3.2 Ubuntu 系统(默认用 ufw,需切换)

1. 停止并禁用ufw

sudo systemctl stop ufw
sudo systemctl disable ufw

2. 安装firewalld

sudo apt update && sudo apt install firewalld -y

3. 启动+自启(同CentOS)

sudo systemctl start firewalld
sudo systemctl enable firewalld
四、Firewalld 常用核心命令(实战必备)

Firewalld 规则分临时(重启失效) 和永久(需重载) 两类,以下是火山场景高频命令:

命令示例 功能说明
sudo firewall-cmd --list-all 查看当前 zone(public)的所有规则
sudo firewall-cmd --add-port=80/tcp 临时开放 80 端口(重启失效)
sudo firewall-cmd --add-port=80/tcp --permanent 永久开放 80 端口(需重载)
sudo firewall-cmd --add-service=http --permanent 永久开放 HTTP 服务(预定义,含 80/tcp)
sudo firewall-cmd --remove-port=3306/tcp --permanent 永久删除 3306 端口规则
sudo firewall-cmd --add-source=192.168.1.100 --zone=public --permanent 永久允许指定 IP 访问所有端口
sudo firewall-cmd --add-icmp-block=echo-request --permanent 永久禁止 ping(隐藏实例存活)
sudo firewall-cmd --reload 重载永久规则(无需重启服务)
sudo firewall-cmd --get-active-zones 查看活跃 zone 及绑定接口
五、火山引擎云服务器上的实战场景
5.1 场景 1:开放公网 HTTP/HTTPS 服务

需求:让公网用户访问实例的 Web 服务(Nginx/Apache)
步骤:

火山安全组配置:控制台→安全组→添加规则(入方向):
协议:TCP
端口范围:80/443
源地址:0.0.0.0/0(公网)
Firewalld 配置:

永久开放HTTP/HTTPS服务

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

重载规则

sudo firewall-cmd --reload

验证:公网浏览器访问实例公网 IP(如 http://123.45.67.89)。
5.2 场景 2:限制 SSH 仅允许指定 IP 访问

需求:避免公网 22 端口被暴力破解(仅允许公司 / 个人 IP 登录)
命令示例:

1. 永久允许指定IP(如192.168.1.100)访问所有端口

sudo firewall-cmd --add-source=192.168.1.100/32 --zone=public --permanent

2. (可选)删除默认允许所有IP的SSH规则(若存在)

sudo firewall-cmd --remove-service=ssh --permanent

3. 重载规则

sudo firewall-cmd --reload

注意:保持当前 SSH 会话不关闭,用新会话测试是否能登录(避免误封)。
5.3 场景 3:允许 VPC 内实例访问数据库

需求:VPC 内应用服务器(172.16.0.10)连数据库实例(172.16.0.20:3306)
命令示例:

1. 永久允许VPC网段(172.16.0.0/24)访问3306端口

sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --add-source=172.16.0.0/24 --zone=trusted --permanent # 信任VPC网段

2. 重载规则

sudo firewall-cmd --reload
5.4 场景 4:禁止公网 ping 实例

需求:隐藏实例存活状态,避免被扫描
命令示例:

sudo firewall-cmd --add-icmp-block=echo-request --permanent
sudo firewall-cmd --reload
六、火山引擎环境下的重要注意事项
6.1 安全组与 Firewalld 的配合逻辑

优先级:火山安全组是实例外部防火墙(优先生效),Firewalld 是实例内部防火墙(二次过滤);
规则生效条件:需同时满足「安全组允许 + Firewalld 允许」才会放行;
排查顺序:先查火山安全组(控制台)→ 再查 Firewalld 规则(–list-all)。
6.2 绝对避免「误封 SSH」

不要直接删除public zone 的ssh服务,优先用源 IP 限制;
测试规则时,保持一个 SSH 会话不关闭,用新会话验证;
若误封,可通过火山控制台的远程连接(VNC) 修复(无需公网 SSH)。
6.3 永久规则必须重载

所有带–permanent的命令,需执行firewall-cmd --reload才能生效(临时规则无需重载)。
6.4 合规性与权限

禁止配置非法规则(如拦截合法业务流量、恶意攻击),违反火山服务条款可能导致账号封禁;
所有 Firewalld 操作需sudo权限(非 root 用户需授权)。
6.5 预定义服务优先

Firewalld 内置常见服务(http、mysql、redis等),用服务名比直接开端口更安全(含协议和默认端口)。
七、总结

Firewalld 是火山引擎 Linux 云服务器的核心内部防火墙,配合安全组实现双重防护:

重点关注「安全组 + Firewalld 规则配合」「避免误封 SSH」「永久规则重载」;
建议定期审计规则(–list-all),删除不必要的端口 / IP 规则。
附录

火山引擎安全组配置指南:点击查看
Firewalld 官方文档:点击查看

小提示:若 Firewalld 配置后服务无法访问,先检查安全组规则(火山控制台),再检查 Firewalld 规则!

欢迎留言讨论你的 Firewalld 实战经验 🛡️

更多推荐