互联网服务器暴露在公网,每时每刻都会遭遇扫描、暴力破解攻击。
防火墙就是服务器的第一道安全屏障。
今天重点讲解企业主流 firewalld (CentOS/RHEL系列默认防火墙),学会端口开放、IP黑名单、端口转发、区域规则管理。掌握防火墙策略,大幅度降低服务器被入侵风险。
一、今日学习目标
✅ firewalld 服务启停、基础状态查看
✅ 理解zone区域概念(public、trusted、drop)
✅ 实现端口永久放行/关闭
✅ 配置指定IP访问、黑名单封禁恶意IP
✅ 掌握端口转发、富规则高级配置
✅ 学会策略永久生效、排错、保存与重载
二、firewalld 基础操作
bash
# 查看运行状态
systemctl status firewalld
# 启动、停止、重启
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld
# 开机自启/关闭开机启动
systemctl enable firewalld
systemctl disable firewalld
# 查看默认区域
firewall-cmd --get-default-zone
# 查看当前生效规则
firewall-cmd --list-all
重要:firewalld 默认运行时策略临时生效,重启失效,需要加 --permanent 持久化配置,重载后生效!
三、Zone 区域简单理解
firewalld 使用区域管理网络流量,不同区域代表不同信任级别:
- public 默认区域:外部网络,仅允许少量服务通行
- trusted 信任区域:全部流量允许通行(内网常用)
- drop 丢弃区域:所有流量直接丢弃,无响应
日常公网服务器默认使用 public。
四、高频实战配置(最常用)
1、放行单个端口(永久生效)
示例开放80端口 Nginx
bash
firewall-cmd --permanent --add-port=80/tcp
# 重载策略生效
firewall-cmd --reload
2、放行一段连续端口
开放 3000-4000端口
bash
firewall-cmd --permanent --add-port=3000-4000/tcp
firewall-cmd --reload
3、删除关闭端口
bash
firewall-cmd --permanent --remove-port=80/tcp
firewall-cmd --reload
4、直接放行服务名称(内置服务)
bash
# 放行ssh
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
# 查看支持的内置服务
firewall-cmd --get-services
五、高级功能:IP访问控制(富规则 rich-rule)
场景1:只允许指定IP访问22端口(SSH加固核心!)
只允许 192.168.1.100 连接SSH,其余IP全部拒绝
bash
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='22' accept"
firewall-cmd --reload
场景2:拉黑恶意IP,直接拦截
bash
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='111.22.33.44' reject"
firewall-cmd --reload
删除一条富规则
复制创建命令,把 --add-rich-rule 改成 --remove-rich-rule
六、端口转发实战
需求:访问服务器8080端口,转发到内网 192.168.1.200:80
bash
# 开启IP转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
# 添加转发规则
firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.200:toport=80
firewall-cmd --reload
七、实用查询命令
bash
# 查看所有放行端口
firewall-cmd --list-ports
# 查看所有富规则
firewall-cmd --list-rich-rules
# 测试规则是否永久配置
firewall-cmd --permanent --list-all
八、新手高频踩坑汇总
1. 不加 --permanent
策略重启服务器消失!凡是需要永久保存的配置必须携带此参数,执行后重载。
2. 修改防火墙后没有执行 firewall-cmd --reload
策略不会生效。
3. 云服务器防火墙放行端口依然无法访问
👉 注意:阿里云/腾讯云还有安全组,防火墙放行端口后,安全组也要同步开放!
4. 错误拉黑自己IP,远程连不上服务器
测试规则建议先临时不加 --permanent ,测试没问题再持久化。
5. SSH不要轻易直接清空所有规则,防止远程断开无法登录
九、补充:Ubuntu 常用 ufw 简要说明
Ubuntu 默认没有firewalld,自带ufw防火墙
bash
ufw allow 80/tcp
ufw delete allow 80/tcp
ufw enable
ufw status
企业生产CentOS服务器优先使用 firewalld。
十、今日实操作业
bash
# 1.查看防火墙状态与现有规则
firewall-cmd --list-all
# 2.临时放行8090端口测试,然后删除
firewall-cmd --add-port=8090/tcp
# 3.永久放行8080端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
# 4.练习添加一条IP黑名单规则,随后删除测试
十一、今日知识点总结
1. firewalld是CentOS主流防火墙,区分临时规则与永久规则
2. --permanent 持久配置 + firewall-cmd --reload 标准流程
3. 常规业务:开放端口、开放内置服务
4. 富规则rich-rule实现精细化IP黑白名单访问控制
5. 支持端口转发,适合内网服务暴露场景
6. 云服务器 = 系统防火墙 + 云平台安全组双重防护
✅ 学会防火墙,完成服务器基础网络安全加固!
实操过程中遇到报错或者疑问,欢迎在评论区留言一起探讨。关注「嘟嘟嘟的运维冒险」,持续更新Linux实战学习干货。#Linux 入门 #firewalld #服务器安全 #运维新手