开启服务器防火墙是保障系统安全的第一道防线,其核心原则在于默认拒绝所有非必要的入站连接,仅开放业务必需的端口,无论是Linux还是Windows服务器,开启防火墙的操作虽然因系统版本和工具不同而有所差异,但根本逻辑是一致的:启动防火墙服务、配置放行规则(如SSH的22端口或Web的80/443端口)、并确保规则在重启后依然生效,对于云服务器用户,还需要特别注意云厂商提供的“安全组”策略,必须将服务器内部防火墙与云安全组协同配置,才能构建严密的网络安全体系。

Linux服务器防火墙配置详解
Linux服务器是目前企业应用的主流,其防火墙管理工具主要分为两类:基于CentOS/RHEL系列的firewalld(或旧版的iptables)以及基于Ubuntu/Debian系列的UFW(Uncomplicated Firewall),专业的运维人员应根据系统环境选择合适的工具。
CentOS 7及以上版本(使用firewalld)
firewalld是动态防火墙管理守护进程,支持区域(Zone)概念,配置更加灵活。
启动与开机自启
需要检查防火墙状态并启动服务,使用以下命令可以确保防火墙立即运行并在系统重启后自动加载:
systemctl start firewalld
systemctl enable firewalld
配置常用端口规则
开启防火墙后,首要任务是放行远程管理端口(如SSH)和Web服务端口,否则会导致服务器连接中断,开放SSH服务(22端口)和HTTP服务(80端口):
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=ssh --permanent
firewall-cmd --reload
关键点在于:--permanent参数表示将规则写入永久配置,--reload则是让规则在不中断现有连接的情况下重新加载。
查看与删除规则
专业的安全管理要求定期审计防火墙规则,查看当前所有生效规则可使用:
firewall-cmd --list-all
若需删除不再使用的端口,例如移除8080端口:
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
firewall-cmd --reload
Ubuntu/Debian系统(使用UFW)
UFW旨在简化iptables的配置复杂度,非常适合快速部署,同时底层依然具备强大的过滤能力。
启用防火墙
在启用之前,务必先允许SSH端口,否则将把自己关在门外,操作顺序如下:
ufw allow ssh
ufw enable
执行ufw enable时,系统会提示可能会中断现有的SSH连接,确认即可继续。
精细化端口控制
除了允许服务名,UFW还支持直接指定端口号和协议,只允许特定IP访问数据库端口3306,这是一种极高安全性的做法:
ufw allow from 192.168.1.100 to any port 3306
这种基于IP的白名单机制能有效防止数据库被暴力破解。

Windows服务器防火墙配置详解
Windows Server自带的高级安全Windows防火墙提供了基于状态检测的包过滤功能,既能通过图形界面操作,也支持PowerShell脚本化管理,适合大规模自动化运维。
图形界面基础配置
通过服务器管理器打开“高级安全Windows防火墙”,首先确认入站规则和出站规则,对于Web服务器,核心在于配置入站规则。
新建入站规则
点击“新建规则” -> 选择“端口” -> 选择“TCP”并输入特定本地端口(如80, 443) -> 选择“允许连接” -> 勾选“域”、“专用”、“公用”三个配置文件 -> 命名规则。建议在命名时包含管理员姓名和日期,便于后续追溯规则来源。
PowerShell专业配置
为了提高效率,资深管理员通常使用PowerShell进行批量配置,开启防火墙并放行RDP(3389端口)的命令如下:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
New-NetFirewallRule -DisplayName "Allow RDP" -Direction Inbound -LocalPort 3389 -Protocol TCP -Action Allow
禁用不必要的规则
Windows默认开启了许多可能存在安全隐患的规则,如“远程卷管理”等,应定期检查并禁用非业务必须的规则,减少攻击面。
云服务器安全组与防火墙的协同策略
在使用阿里云、腾讯云或AWS等云服务器时,存在一个常见的误区:认为开启了服务器内部防火墙就万事大吉,云平台提供的安全组是作用于虚拟化层面的第一道关卡,而服务器内部防火墙是第二道关卡,两者必须配合使用。
独立见解与最佳实践:建议将安全组配置为“粗粒度”管理,例如只开放80、443、22端口;而将服务器内部防火墙配置为“细粒度”管理,例如在内部防火墙中限制22端口仅允许特定的管理IP访问,这种纵深防御策略能有效弥补单一层面的配置疏漏。
防火墙配置的常见陷阱与解决方案
锁死服务器
这是新手最容易犯的错误,即在未放行SSH端口的情况下直接开启防火墙。解决方案:在云厂商控制台使用VNC登录(物理连接方式),或者利用iptables-save预先备份规则,对于生产环境,建议使用cron任务添加一个定时指令,每隔5分钟关闭防火墙,直到确认配置无误后再移除该任务。

规则顺序冲突
在iptables或复杂的防火墙策略中,规则的匹配顺序是从上到下,一旦有一条“拒绝所有”的规则排在前面,后续的“允许”规则将失效。解决方案:始终遵循“具体规则在前,通用规则在后”的原则,并将默认拒绝策略放在规则链的最后。
忽略出站流量
大多数管理员只关注入站流量,忽略了出站流量,如果服务器被植入木马,攻击者会利用出站流量窃取数据。解决方案:配置默认拒绝出站策略,仅允许DNS(53端口)、HTTP/HTTPS(80/443)等必要的出站请求,并定期审查出站日志。
相关问答
问题1:开启了防火墙后,网站无法访问,但SSH可以连接,是什么原因?
解答:这种情况通常是因为只放行了SSH(22端口)而未放行Web服务端口,请检查防火墙规则列表,确保HTTP(80端口)和HTTPS(443端口)的入站规则已添加并生效,如果是云服务器,还需同时检查云控制台的安全组设置,确认安全组内也放行了对应的Web端口。
问题2:如何临时关闭防火墙进行故障排查,排查完后又如何快速恢复?
解答:
对于CentOS(firewalld):临时关闭使用systemctl stop firewalld,恢复使用systemctl start firewalld。
对于Ubuntu(UFW):临时关闭使用ufw disable,恢复使用ufw enable。
对于Windows:在PowerShell中输入Set-NetFirewallProfile -Enabled False关闭,输入Set-NetFirewallProfile -Enabled True恢复。
注意:生产环境中临时关闭防火墙具有极高风险,建议仅在维护窗口期且受控的网络环境下进行,并尽量使用日志分析代替直接关闭防火墙来排查问题。
如果您在配置服务器防火墙的过程中遇到任何报错或特殊情况,欢迎在评论区留言,我们将为您提供一对一的技术支持。

















