很多人第一次把网站或业务搬到云上,关心的多半是速度和价格,安全往往排在后面。等服务器CPU被挖矿程序占满,或者数据库被人拖走,才开始补救。阿里云服务器安全没有什么玄妙之处,基本就是几件日常习惯叠在一起。这篇文章按账号、网络、系统、应用和数据五层来拆,每层哪些必须做、为什么做,都写在下面。

一、先守住账号,它往往是最大的入口
云账号的权限通常比单台服务器大得多。阿里云主账号的AccessKey一旦泄露,攻击者可以创建实例、修改安全组、删掉快照,也可以直接把资源拿去挖矿。服务器本身配置得再细,账号没管好,也等于把钥匙放在门口。
案例:一组AccessKey引出的账单
某电商团队的开发人员把AccessKey写进了开源项目的配置文件,又把代码推到了公开仓库。三天后账单上出现大量华东地区GPU实例的费用,总额超过两万元。排查下来,攻击者正是用这组密钥开了挖矿实例。
这件事有两个教训。AccessKey不该出现在代码里,应该用环境变量,或者RAM角色的临时凭证。另外,主账号不适合日常操作。平时用RAM子账号,按需授权,不要图省事直接给AdministratorAccess。
- 给主账号开启多因素认证(MFA),定期看一下登录记录
- 日常操作用RAM子账号,只授予当前任务需要的权限
- AccessKey定期轮换,长期不用的直接废弃
- 开启操作审计(ActionTrail),重点盯住异常的创建和删除记录
二、安全组:先把不必要的端口关掉
安全组是云服务器的第一道防线。不少安全事件的起点,都是有人把3306(MySQL)、6379(Redis)或22(SSH)直接对0.0.0.0/0开放了。端口本身不危险,危险的是全网都能连上。
原则很朴素:只开放业务必需的端口,并尽量限定来源IP。数据库和缓存不应该出现在公网上,只允许同一VPC里的应用服务器访问。SSH可以只对运维人员的固定出口IP开放,或者统一走堡垒机。
案例:未设密码的Redis被写入挖矿脚本
一家在线教育公司的测试环境装了Redis,安全组对全网开放了6379端口,也没有设置密码。攻击者利用Redis可以写文件的特性,往服务器里写入定时任务,最后植入了挖矿脚本。团队发现时,CPU长期接近100%,业务接口大面积超时。
修复并不复杂:关掉公网访问,设置强密码,把Redis绑定到内网地址。问题在于测试环境常被当成“不重要”,而攻击者偏偏喜欢这种没人照看的机器。测试环境的安全组规则,同样要认真对待。
三、系统层:补丁、账户和登录方式
长期不打补丁的Linux服务器,很容易被已知漏洞盯上。能开自动安全更新就开。实在不敢自动更新的,至少每月人工检查一次补丁。
账户上,禁止root直接远程登录,改用普通用户加sudo。SSH建议用密钥登录,确认密钥可用之后再关闭密码登录。如果一定要保留密码登录,就配合fail2ban限制暴力破解。
- 禁用root远程登录(PermitRootLogin no)。改SSH配置前,先保留一个已登录的会话,改错了还能回滚,不至于把自己锁在外面
- 修改SSH默认端口能减少扫描噪音,但它替代不了前面几条措施
- 用密钥对代替密码,定期清理离职人员或旧设备的公钥
- 安装fail2ban,限制短时间内的多次失败登录
- 删除不用的系统账户和服务,每少一个服务,就少一个可被利用的入口
四、善用阿里云自带的安全产品
阿里云提供了一批安全服务,组合使用能省掉不少自建工作。云安全中心可以扫描主机上的弱口令、异常进程和已知漏洞,并给出处理建议。Web应用防火墙(WAF)用来拦截SQL注入、跨站脚本这类常见攻击。DDoS防护则用于缓解大流量攻击对业务的冲击。
这些产品是辅助手段,替代不了基础配置。如果安全组仍对全网开放数据库端口,再好的防护也很难起作用。选产品之前,先看业务规模和预算,排个优先级。中小团队通常可以先从云安全中心的基础能力用起。
五、应用和数据:最后一道防线
服务器本身再稳,应用层的漏洞仍可能导致数据泄露。输入校验、参数化查询、给数据库账号最小权限,这些说了很多年,却依然是最有效的防护。
案例:越权漏洞导致批量读取收货信息
某SaaS平台的订单接口只检查了用户是否登录,没有检查订单是否属于当前用户。攻击者只要改掉请求里的订单编号,就能批量读取其他客户的收货信息。问题暴露后,团队在服务端加上了基于用户ID的归属校验,并对接口做了访问频率限制。
这个案例说明,登录只是第一步。每一次数据访问,都要确认操作者有没有权限看这条数据。另外,敏感数据应加密存储,日志里不要打印完整的手机号、身份证号或密码。
六、把安全做成日常习惯
安全配置做一次就过去了,之后还得持续维护。建议定期做三件事:检查安全组和账户权限是否仍然合理;查看云安全中心和操作日志里的告警;重要数据做异地备份,并定期验证能不能真正恢复。不少团队遇到勒索或误删,才发现备份从来没有成功过,这一点最容易被忽略。
归结起来就三条:权限尽量小,暴露尽量少,补丁和配置持续更新。今天先检查一遍安全组和AccessKey,通常就能排掉最大的几个风险。