服务器安全组配置指南:别让端口随便开

服务器安全组配置指南:别让端口随便开

你买了一台云服务器,默认安全组规则是“允许所有IP访问所有端口”。你知道这不对,但懒得改。或者你改了,但开了一大堆端口,自己都记不清哪些开着。

安全组是云服务器的第一道防火墙。它配错了,后面的安全配置(SSH密钥、fail2ban、防火墙)都白搭,因为攻击者根本进不到那一步。今天聊安全组怎么配,哪些端口该开,哪些不该开。


先看一个数据

某云厂商统计,超过60%的被入侵服务器,安全组规则存在明显问题。最常见的是:22端口对全网开放、3306端口对全网开放、Redis端口对全网开放且无密码。

这不是黑客技术多高,是你把门开着了。


安全组是什么?

安全组是云厂商提供的虚拟防火墙,在云基础设施层面控制进出服务器的流量。它工作在操作系统之前,你的iptables、firewalld还没见到包,安全组就决定放行或拒绝。

安全组规则有两个关键参数:

  • 协议端口:比如TCP 22、UDP 53
  • 来源IP:允许哪些IP访问(单个IP、IP段、安全组)

和操作系统防火墙的区别:安全组在云网络边缘,流量进不来就不消耗服务器资源。你把22端口对全网开放,攻击者能对你发起暴力破解,消耗你的CPU和带宽。

安全组拒绝,攻击者的包压根到不了你服务器。


最小开放原则

安全组配置的核心原则:只开必需的端口,只给必需的IP。

什么端口必需

  • 80(HTTP):网站访问
  • 443(HTTPS):加密网站访问
  • 22(SSH):远程管理

其他端口一律不开,除非你知道为什么开。

什么IP必需

  • 22端口只对你自己的IP开放,或对你公司的出口IP开放
  • 80/443对全网开放(0.0.0.0/0)

常见端口清单

端口服务是否必需建议来源IP
22SSH你的IP 或 VPN IP段
80HTTP是(有网站时)0.0.0.0/0
443HTTPS是(有网站时)0.0.0.0/0
3306MySQL只允许内网IP或应用服务器IP
6379Redis只允许内网IP
27017MongoDB只允许内网IP
21FTP你的IP,且建议用SFTP替代
25SMTP视情况你的IP或特定服务商
3389Windows RDP视情况你的IP

规则:数据库、缓存、消息队列这类服务,永远不要对全网开放。它们设计时假设在内网运行,没考虑公网攻击。


各云厂商安全组配置位置

阿里云:控制台 → 云服务器ECS → 安全组 → 配置规则

腾讯云:控制台 → 云服务器 → 安全组 → 编辑规则

华为云:控制台 → 弹性云服务器 → 安全组 → 配置规则

AWS:控制台 → EC2 → 安全组 → 入站规则

界面略有不同,核心操作一样:添加入方向规则、授权策略(允许/拒绝)、协议端口、来源。


推荐的安全组配置

以下配置假设标准Web服务器:

入方向规则

优先级协议端口来源IP说明
1TCP:22你的办公IP/公司出口IPSSH管理,只对你开放
2TCP:800.0.0.0/0HTTP,全网开放
3TCP:4430.0.0.0/0HTTPS,全网开放
4全部拒绝0.0.0.0/0默认拒绝其他所有流量

出方向规则

一般保持默认:允许所有出站流量。服务器需要主动访问外网(更新软件、调用API)。如果你有特殊安全要求,可以限制出站,但99%场景不需要。


特殊场景配置

只允许特定IP访问80/443

公司内部系统(后台管理系统、监控面板),不希望被公网访问。来源IP设成办公网络出口IP,或配置VPN。

数据库服务器

数据库服务器不应该有公网IP。如果必须有,安全组只允许应用服务器的内网IP访问3306,且设置非常严格的来源IP。

跳板机架构

只允许从跳板机IP访问22端口。登录服务器时先连跳板机,再跳转到目标服务器,这是企业标配方案。


安全组 vs iptables

两个都要配吗?安全组是云网络层面的墙,iptables是操作系统层面的墙。安全组拒绝,包进不来。安全组放行,iptables还能再过滤。推荐:安全组做粗粒度控制(什么IP能进来),iptables做细粒度控制(什么端口、什么行为)。


常见配置错误

错误一:22端口对全网开放

你的SSH端口暴露给全世界。攻击者可以暴力破解。修改建议:来源IP改成你的IP。如果是动态IP,用安全组的IP地址簿功能定期更新。或配置VPN。

错误二:3306端口对全网开放

MySQL暴露在公网,任何人都能尝试连接。暴力破解数据库密码、利用漏洞。修改建议:删除该规则。如果需要远程管理数据库,用SSH隧道或VPN。

错误三:Ping协议对全网开放

虽然不直接危险,但ICMP协议可能被用于探测网络结构。不加限制时攻击者可批量扫描存活主机。修改建议:允许Ping方便你自己测试,但对来源加限制或评估业务是否需要。大部分情况可关闭。

错误四:规则过于宽松

来源IP写成0.0.0.0/0但端口范围写成1-65535。这是把服务器全权交给公网。修改建议:逐个端口添加,不用范围。

错误五:出方向完全不限制

如果服务器被入侵,出方向不限制,攻击者可以往外传数据。生产环境可以限制出方向,只允许必要的端口(HTTP/HTTPS、NTP、DNS)。


真实案例

一家创业公司,数据库服务器安全组规则配错了,3306端口对全网开放。攻击者扫描到开放端口,用弱密码字典爆破出root密码,拖走了整个用户表。用户数据泄露,公司被罚款,声誉受损。

事后复盘:如果安全组只允许应用服务器的内网IP访问3306,攻击者根本连不上数据库。


最后一句

安全组是云服务器的第一道门。你把门开大了,后面的锁再好也没用。

去检查一下你的安全组规则:22端口对谁开放?3306呢?Redis呢?不该开给全网的,马上关掉。SSH只留你的IP。数据库端口删掉。

配安全组不花时间。不配,可能花很多时间。

知识库

GitHub Actions入门:代码推送自动部署到服务器

2026-5-29 16:11:58

知识库

当防御策略追不上Pod重启:云原生环境下的“攻击面漂移”与动态免疫架构

2026-1-19 14:26:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧