服务器自带的防火墙一般指操作系统内置的防火墙服务,Windows Server用的是Windows Defender防火墙(在“服务器管理器”和“控制面板”中配置),Linux服务器常见的是firewalld和iptables(通过命令行操作),而云服务器厂商控制台里的“安全组”属于外部防火墙,不算系统自带。
很多朋友在配置服务器时,第一反应是装第三方安全软件,其实系统自带的防火墙已经能满足大部分场景的安全需求,只是不同系统的设置入口差异较大,加上云服务器还有一层“安全组”概念,容易让人绕晕,这篇文章不扯虚的,直接告诉你每一步点哪里、敲什么命令。
服务器防火墙在哪里设置?先看懂三种“自带”
搞清楚三个概念,后面找设置入口就不会迷路,第一类是物理服务器或自建机房里的机器,防火墙完全靠操作系统自己管,第二类是云服务器,系统内部自带防火墙之外,云厂商控制台里还有一层安全组,第三类是面板型环境,比如宝塔面板自带的“安全”菜单,这其实是把系统防火墙做了图形化封装。
行业共识认为,服务器自带防火墙的管理核心在操作系统层,云服务器安全组优先于系统防火墙生效,两者是叠加关系,不是二选一,多数情况下,安全组一道墙,系统防火墙一道墙,全部放行才能通。
Windows服务器自带防火墙的具体设置路径
打开Windows防火墙设置界面的三种方式
Windows Server 2008到2026版本,自带防火墙都是Windows Defender防火墙,进入路径不复杂,任选其一:
- 开始菜单搜索“防火墙”,点击“Windows Defender防火墙”
- 打开“服务器管理器”,点右上角“工具”菜单,选“Windows Defender防火墙”
- 按Win+R键,在运行框输入
wf.msc,回车直接打开高级安全界面
注意,Windows Server Core版本没有图形界面,只能用PowerShell命令,后面会讲到。
配置入站和出站规则的具体操作
默认状态下,Windows防火墙对入站连接是阻断模式,出站全部允许,实操时要创建一个放行端口,比如Web服务器要开放80和443:
- 在防火墙界面左侧点击“入站规则”
- 右侧操作栏点击“新建规则”
- 规则类型选“端口”,点击下一步
- 协议选“TCP”,特定本地端口填
80,443 - 操作选“允许连接”
- 配置文件三个选项全勾选(域、专用、公用)
- 填写规则名称,Web服务-HTTP和HTTPS”,点完成
修改默认放行优先级要优先于其他规则,入站规则列表右侧有“操作”栏,可以点击“排序”或“禁用规则”来调整生效顺序,Windows防火墙的默认策略是“块规则优先”,如果已有阻止规则覆盖了你的放行规则,放行不生效。
用命令快速操作Windows防火墙
图形界面之外,管理员身份打开PowerShell,可以直接敲:
- 查看所有规则:
Get-NetFirewallRule - 放行指定端口:
New-NetFirewallRule -DisplayName "开放3389远程桌面" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow - 禁用防火墙:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False(非特殊情况不建议执行) - 恢复启用:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
执行完命令后用 Get-NetFirewallRule | Where-Object {$_.DisplayName -eq "开放3389远程桌面"} 验证规则是否生效,确认状态是Enabled。
Linux服务器自带防火墙:firewalld和iptables的实际用法
firewalld是主流CentOS/RHEL系统的默认防火墙
CentOS 7及以上、Rocky Linux、AlmaLinux默认自带的是firewalld,通过D-Bus接口管理动态防火墙规则,查看状态和设置端口:
- 启动并开机自启:
systemctl start firewalld和systemctl enable firewalld - 查看防火墙状态:
firewall-cmd --state - 查看当前开放的所有端口:
firewall-cmd --list-all - 永久放行8080端口:
firewall-cmd --permanent --add-port=8080/tcp,firewall-cmd --reload重新加载配置 - 移除端口:
firewall-cmd --permanent --remove-port=8080/tcp,再reload
配置firewalld最常踩的坑是忘记执行--reload,直接加--permanent参数后不重载,新规则不会生效,重载之后用 firewall-cmd --list-ports 验证。
iptables是Debian/Ubuntu和旧系统的底层防火墙
Ubuntu自带的ufw其实是对iptables的封装,而很多老系统直接使用iptables,查看规则和添加放行:
- 查看现有规则(带序号):
iptables -L -n --line-numbers - 放行某个端口:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT - 保存规则(CentOS 6及部分旧系统):
service iptables save - Ubuntu系统需先安装iptables-persistent才能持久化:
apt install iptables-persistent,保存规则用netfilter-persistent save
无论是firewalld还是iptables,对云服务器而言,系统防火墙规则和云安全组是分开管理的,如果系统防火墙已经放行某个端口但外部还是连不上,大概率是云控制台的安全组没放行。
宝塔面板自带的防火墙设置在哪里
使用宝塔面板的服务器,面板左侧菜单栏找到“安全”,这里展示的就是系统防火墙已放行的端口列表,在“端口规则”那一行点击“添加端口规则”,输入端口号和协议(TCP/UDP),面板会自动调用firewalld或ufw底层命令完成放行。
宝塔的安全菜单还有一个“SSH管理”进不去的情况多数是防火墙拦截,检查一下系统防火墙放行了22端口没有,如果你同时装了云锁、安全狗这类软件,宝塔面板不能完全替代系统自带防火墙,它是基于系统防火墙做的二次封装。
云服务器安全组和系统自带防火墙的区别
云服务器ECS、轻量应用服务器等产品,控制台里的“安全组”是云计算厂商提供的虚拟防火墙,是独立于操作系统的一层过虑,安全组在数据包到达网卡之前生效,系统防火墙在操作系统内核网络栈中生效。
排查连接问题的正确顺序是:先看安全组有没有放行,再看系统自带防火墙有没有放行,比如你买了一台酷番云服务器,放行了系统防火墙的80端口,但控制台安全组没有添加入站规则80端口,网站依然访问不了,反之亦然,安全组放行了但系统防火墙没放,同样不通。
新购的简米云、酷番云服务器在首次使用时,控制台会弹窗让你配置安全组规则,默认只放行22或3389端口,很多人反馈“服务器自带防火墙在哪里设置”搜半天找不到,就是因为把安全组和系统防火墙混在一起了。
常见端口和防火墙规则设置速查表
| 应用场景 | 默认端口 | 放行位置 |
|---|---|---|
| SSH远程登录 | 22 | 系统防火墙入站规则 + 安全组 |
| Web服务HTTP | 80 | 系统防火墙入站规则 + 安全组 |
| Web服务HTTPS | 443 | 系统防火墙入站规则 + 安全组 |
| 远程桌面RDP | 3389 | 系统防火墙入站规则 + 安全组 |
| MySQL数据库 | 3306 | 系统防火墙入站规则 + 安全组 |
| Redis服务 | 6379 | 系统防火墙入站规则 + 安全组 |
| FTP服务 | 20/21 | 系统防火墙入站规则 + 安全组 |
数据库类端口(3306、6379)只建议对指定IP放行,不要直接开放对所有人,否则容易被暴力破解,系统防火墙支持在规则中限定“远程IP地址”范围,安全组也支持源IP限制,双重限定加在一起才更安全。
防火墙放行端口后还是不生效?按这个顺序排查
- 先确认服务本身在监听端口,Linux执行
netstat -tlnp | grep 3306,Windows执行netstat -ano | findstr 3306,状态不是LISTENING说明服务没起来 - 确认安全组已放行,登录云控制台,查看安全组入站规则是否包含对应端口
- 确认系统防火墙已放行,Windows执行
Get-NetFirewallRule | select DisplayName查看规则状态,Linux执行firewall-cmd --list-all或iptables -L -n - 确认云厂商的额外限制,部分服务商会默认开启DDoS防护策略或黑洞,触发后会自动封禁端口
- 测试本地回环:在服务器本机执行
curl http://127.0.0.1:端口能通,说明服务正常,问题出在外部链路或防火墙
业内专家指出,相当一部分服务器“防火墙关了还是连不上”的案例,最终定位都是安全组或云平台网络ACL没放行,系统防火墙反而是背锅的,先把安全组这层排除掉,再折腾系统防火墙会高效得多。
常见问题解答
服务器自带防火墙和第三方软件防火墙能共存吗?
可以共存,但不建议装多个,企业服务器如果装了云锁、安全狗或ModSecurity这类软件,和系统防火墙规则可能会出现冲突,比如第三方软件拦截了合法连接,系统防火墙日志看不到任何记录,只需要保留系统自带防火墙加云安全组,对大多数业务已经足够;等业务有特殊防CC、WEB攻击的需求时再上专业WAF。
Windows防火墙和Linux防火墙的规则有办法导出备份吗?
Windows防火墙导出路径是控制面板的“Windows Defender防火墙”界面,右侧有“导出策略”选项,生成.wfw文件保存,Linux的firewalld直接备份 /etc/firewalld/ 目录下的.xml文件,iptables规则在CentOS 6中通过 service iptables save 写入 /etc/sysconfig/iptables,Ubuntu中用iptables-save重定向到任意文件做备份,恢复用iptables-restore导入。
服务器迁移到新环境后防火墙规则怎么快速重配?
先查看旧服务器的开放端口列表,Windows用 netsh advfirewall firewall show rule name=all 导出端口清单,Linux用 firewall-cmd --list-all 拿到服务端口集合,然后只迁移必要端口,不要把历史遗留的无用规则一起带过去新环境按最小化原则放行,只开业务必需的端口,将会话维持时间调短,安全性和可维护性都会更好。