CentOS8 Firewalld 高级规则中级实操教程
一、服务概述
Firewalld 是 CentOS8 默认动态防火墙,区别于传统 iptables,支持区域管理、富规则、端口转发、IP 黑名单、服务放行、定时规则,无需重启即可生效,是生产环境首选防火墙。
二、实验环境
系统:CentOS8
关闭 SELinux,开启 firewalld
|-----------------------------------------------------------|
| bash systemctl start firewalld systemctl enable firewalld |
三、基础核心操作实操
3.1 查看防火墙状态与区域
|-----------------------------------------------------------------------------------|
| bash firewall-cmd --state firewall-cmd --get-active-zones firewall-cmd --list-all |
3.2 放行端口与服务
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash # 放行80、443端口永久生效 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp # 放行http服务 firewall-cmd --permanent --add-service=http # 重载生效 firewall-cmd --reload |
四、高级富规则实操(企业核心)
富规则可实现基于 IP、网段、协议、端口精准控制。
4.1 允许指定 IP 访问所有端口
|----------------------------------------------------------------------------------------------------|
| bash firewall-cmd --permanent --rich-rule='rule family=ipv4 source address=192.168.10.0/24 accept' |
4.2 禁止指定 IP 访问服务器
|--------------------------------------------------------------------------------------------|
| bash firewall-cmd --permanent --rich-rule='rule family=ipv4 source address=10.0.0.10 drop' |
4.3 仅允许指定 IP 连接 22 端口
|----------------------------------------------------------------------------------------------------------------------------|
| bash firewall-cmd --permanent --rich-rule='rule family=ipv4 source address=192.168.10.50 port protocol=tcp port=22 accept' |
五、端口转发与内网穿透实操
将本机 8080 端口流量转发至内网机器:
|---------------------------------------------------------------------------------------------------------------------------|
| bash firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toaddr=192.168.10.90:toport=80 firewall-cmd --reload |
六、规则查询与删除
|--------------------------------------------------------------------------------------------------------|
| bash # 查看所有规则 firewall-cmd --list-all --permanent # 删除端口 firewall-cmd --permanent --remove-port=80/tcp |
七、常见报错排错
- 规则不生效:未加 --permanent、未 reload
- 远程连接断开:错误禁止 22 端口
- 转发无效:未开启内核转发
八、运维最佳实践
- 生产环境禁止关闭防火墙,只做精准放行
- 外网服务器使用富规则限制访问源 IP
- 业务端口最小化放行,杜绝全端口开放
- 定期清理无效防火墙规则