火山引擎 Linux 云服务器:Firewalld 防火墙配置实战指南(安装 + 场景 + 注意事项)
云服务器特惠入口通道
一、引言
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 实战经验 🛡️
更多推荐
所有评论(0)