云服务器防火墙基线配置:只开放必要端口并保留回滚路径

云服务器防火墙基线封面

这篇指南帮助你为云服务器([VPS](https://cn.hostease.com/vps/),[虚拟专用服务器](https://cn.hostease.com/vps/))配置防火墙基线:只开放业务必要端口、限制管理入口来源、并在每次变更前保留可回滚的快照路径。防火墙不是配一次就完事,配置变更后必须验证服务和远程访问都正常,否则可能把自己锁在服务器外面。

如果你的服务器之前做过 容器安全加固,防火墙基线和它是互补的两层防护:容器加固限制容器内进程权限,防火墙限制网络入口。Hostease 中文博客的 Fail2ban SSH 防护讲动态封禁,本文讲静态基线,两者配合才能形成完整防护。

一、盘点服务器开放的服务

配置防火墙基线前,先盘点服务器上实际运行的服务和监听端口。很多服务器开放了不必要的端口却不自知,成为攻击入口。

ss -tlnp
netstat -tlnp

这个命令列出所有监听端口和对应进程。对照业务需求,确认哪些端口是必需的、哪些是多余的。常见的安全隐患包括:数据库端口(3306、5432)直接暴露公网、Redis 端口(6379)无认证开放、调试端口(如 8080、8888)未关闭。

盘点结果应该形成一个”允许端口清单”,例如:80/443(Web 服务)、22(SSH 管理)、3306(仅限内网数据库连接)。清单之外的所有端口都应默认拒绝。把这张清单写入运维文档,作为防火墙基线的依据。

端口盘点与基线流程

二、配置防火墙基线

云服务器的防火墙配置方式有几种:安全组(云平台控制面板)、ufw(Ubuntu)、firewalld(CentOS)、iptables(底层)。推荐用云平台安全组 + 本地防火墙双保险。

以 ufw 为例,配置基线如下:

ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

ufw default deny incoming 表示默认拒绝所有入站流量,只有显式放行的端口(22、80、443)可以访问。default allow outgoing 让服务器主动发出的请求不受限制。

如果使用云平台安全组,建议把 SSH(22)端口仅限制为管理员的办公 IP,而不是对全网开放。这样即使 SSH 密码或密钥泄露,外部 IP 也无法连接。数据库端口(如 3306)在安全组层面只放行应用服务器内网 IP,不直接暴露公网。

三、限制管理入口

管理入口(SSH、数据库、管理后台)是最需要严格限制的。对 SSH 做三层防护:仅限来源 IP、使用密钥认证、配合 Fail2ban 动态封禁。

# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
AllowUsers admin@1.2.3.4

PermitRootLogin no 禁止 root 直接登录,PasswordAuthentication no 禁止密码登录强制用密钥,AllowUsers 限制只有指定用户从指定 IP 才能登录。这三条配置能大幅降低 SSH 被暴力破解的风险。

对于数据库和 Redis 等数据服务,绝不直接暴露公网。如果应用和数据库在同一台服务器,监听 127.0.0.1 即可;如果分机部署,通过内网地址连接并在安全组限制来源 IP。配置 Redis 持久化服务时,Redis 默认监听所有接口,必须改成绑定内网或本地地址,否则无认证的 Redis 会被公网扫描攻击。

四、变更前保留回滚路径

防火墙变更最怕把自己锁在外面。每次变更前先创建快照,配置变更后立即验证,异常时能快速回滚。

# 变更前备份当前规则
ufw status numbered > /root/ufw-backup-$(date +%Y%m%d).txt
 # 变更后验证 SSH 还正常
ssh -o ConnectTimeout=5 admin@你的IP echo "alive"

在云平台控制面板,每次防火墙变更前先创建服务器快照。快照可以在规则写错导致无法连接时,通过控制台的 VNC(远程控制台)或快照回滚恢复。很多运维事故就是改防火墙规则时没留后路,把自己锁在服务器外面。

对于使用 iptables 的场景,规则变更前保存当前规则到文件:

iptables-save > /root/iptables-backup-$(date +%Y%m%d).txt
 # 异常时恢复
iptables-restore < /root/iptables-backup-$(date +%Y%m%d).txt

建议在变更时保留一条"逃生通道":不直接断开当前 SSH 连接,先在一个新终端测试新规则是否放行,确认后再断开旧连接。如果测试失败,当前 SSH 连接仍然有效,可以立即回滚。

防火墙基线回滚流程

五、验证与监控

防火墙基线配置完成后,验证三个层面:端口开放情况、外部可达性、管理入口可用性。用 nmap 从外部扫描确认只有预期端口开放。

nmap -sS -p 1-65535 你的服务器IP

扫描结果应只显示允许的端口(22、80、443)。如果出现意外开放端口,说明还有服务暴露或防火墙规则配置错误。同时验证从外部尝试连接未开放端口会被拒绝(返回 filtered 或 timeout)。

监控方面,定期扫描并记录端口开放情况,对比基线变化。如果发现新增开放端口,应立即排查是否被攻破。防火墙日志也能反映攻击尝试:大量 SYN 扫描或连接被拒绝,通常是攻击者在探测端口。配置 Nginx 限流配置后,Web 端口的攻击流量会被限流拦截,进一步降低风险。

六、常见配置误区

第一种误区是默认放行所有端口再单独封禁,正确做法是默认拒绝再放行必要端口。第二种误区是防火墙配置只做一次不复查,服务器新增服务后端口被隐式开放。第三种误区是 SSH 端口对全网开放,应该限制来源 IP。第四种误区是忽略 IPv6 防火墙,如果只配置了 IPv4 规则而服务器有 IPv6 地址,IPv6 流量可能完全开放。第五种误区是变更前不留回滚快照,把自己锁在服务器外面。

总结

云服务器防火墙基线配置的核心是:只开放必要端口、限制管理入口来源、变更前保留回滚路径。先盘点服务器开放的服务形成允许端口清单,用默认拒绝策略配置防火墙,对 SSH 和数据库做来源 IP 限制,每次变更前创建快照并验证 SSH 正常。配置完成后定期扫描端口对比基线,监控新增开放端口。对于 Hostease 这类云服务器环境,防火墙基线配合密钥认证、Fail2ban、容器加固形成多层防护,能显著降低被入侵风险。

发表评论