如何在CentOS上有效配置防火墙策略?
CentOS防火墙策略配置全攻略:从入门到精通
最近帮朋友处理服务器安全时,发现很多人对CentOS的防火墙配置还是一头雾水,要么直接关闭防火墙图省事,要么配置规则后连自己都访问不了服务,今天就结合我踩过的坑和实际案例,手把手教大家如何科学配置CentOS防火墙策略。
为什么必须重视防火墙?
去年有家电商公司因为没配置防火墙,被黑客扫描到22端口弱密码,直接植入挖矿程序,等发现时服务器CPU已经100%运行了三天,订单系统完全瘫痪,这个教训告诉我们:防火墙不是摆设,而是服务器的第一道安全门。

CentOS 7/8默认使用firewalld作为防火墙管理工具(之前版本用iptables),它采用区域(zone)概念管理规则,比传统iptables更直观,但很多新手看到firewall-cmd
的参数就头晕,其实掌握核心逻辑后非常简单。
基础操作:先会走再会跑
-
状态检查
先执行systemctl status firewalld
确认服务是否运行,如果显示inactive
,用systemctl start firewalld
启动,记得设置开机自启:systemctl enable firewalld
。 -
区域概念
firewalld把网络环境分为9个区域,常用的是:public
:默认区域,允许SSH和DHCPtrusted
:允许所有流量(慎用)drop
:直接丢弃所有包(调试用)
查看当前区域:
firewall-cmd --get-default-zone
修改默认区域(例如改为internal):firewall-cmd --set-default-zone=internal
-
基础放行规则
放行80端口(HTTP):firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
注意
--permanent
参数表示永久生效,不加的话重启后规则消失,最后必须执行--reload
使规则生效。
进阶配置:按需定制规则
-
服务级管理
firewalld预定义了很多服务(如http、ssh、mysql),直接放行服务比写端口更规范:firewall-cmd --zone=public --add-service=http --permanent
查看所有可用服务:
firewall-cmd --get-services
-
富规则(高级过滤)
需要限制特定IP访问时,富规则就派上用场,例如只允许192.168.1.100访问SSH:firewall-cmd --add-rich-rule=' rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept ' --permanent
拒绝其他所有SSH连接:
firewall-cmd --add-rich-rule=' rule family="ipv4" source not address="192.168.1.100" port protocol="tcp" port="22" reject ' --permanent
-
端口转发实战
某次需要把外部8080端口转发到内部80端口,配置如下:firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80 --permanent
如果是转发到另一台服务器(192.168.1.200的80端口):
firewall-cmd --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.200:toport=80 --permanent
常见问题解决方案
-
配置后不生效
检查是否漏了--permanent
和--reload
,可以用firewall-cmd --list-all
查看当前生效规则。 -
误封自己IP
建议先在测试环境配置,或保留一个备用SSH会话,真被封了可以通过控制台登录,用firewall-cmd --remove-service=ssh --permanent
解除限制。 -
与SELinux冲突
如果配置了端口但服务仍无法访问,可能是SELinux阻止,临时解决方案:setenforce 0
(不推荐生产环境使用),正确做法是为端口添加SELinux上下文:semanage port -a -t http_port_t -p tcp 8080
最佳实践建议
- 最小化原则:只开放必要端口,定期审查规则
- 日志监控:启用防火墙日志
/var/log/firewalld/
,分析异常连接 - 备份规则:修改前用
firewall-cmd --list-all > firewall_backup.txt
备份 - 自动化工具:复杂环境可考虑使用Ansible等工具管理防火墙规则
记得去年给某金融公司做安全加固时,通过精细化的firewalld配置,成功拦截了98%的恶意扫描请求,其实只要掌握核心逻辑,CentOS防火墙配置并没有想象中复杂,希望这篇文章能帮大家少走弯路,真正把服务器安全掌握在自己手中。
文章评论
按教程配置CentOS防火墙后,网络访问安全又高效!