阿里云服务器安全加固指南是一套用于对阿里云ECS实例进行账号、网络、系统、应用、数据与审计层面安全配置和防护的操作手册,目标是降低攻破面、防止未授权访问和数据泄露。
账号与认证加固
禁用root远程登录
修改SSH配置文件 /etc/ssh/sshd_config,将 PermitRootLogin 设置为 no,创建普通用户并加入sudo组,日常操作通过 sudo -i 提权,配置完成后执行 systemctl restart sshd 生效,若必须使用root,可设置仅允许密钥登录并限制来源IP。
强制密钥登录
关闭密码认证,设置 PasswordAuthentication no 和 ChallengeResponseAuthentication no,使用 ssh-keygen -t ed25519 -C "user@host" 生成密钥对,将公钥追加到服务器 ~/.ssh/authorized_keys,权限设置为600,.ssh 目录权限700,同时设置 PubkeyAuthentication yes。
启用多因素认证
控制台和RAM用户必须绑定MFA,服务器SSH可通过 libpam-google-authenticator 实现动态验证码,在 /etc/pam.d/sshd 中增加 auth required pam_google_authenticator.so,并在sshd_config中设置 ChallengeResponseAuthentication yes,AuthenticationMethods publickey,keyboard-interactive。
RAM最小权限与密钥轮换
使用RAM子账号登录阿里云控制台,按岗位分配只读、运维或审计权限,禁止使用主账号AK,定期禁用超过90天未使用的AccessKey,并在代码中避免硬编码密钥,改用ECS实例RAM角色获取临时凭证。
网络与安全组加固
安全组默认拒绝
安全组规则应遵循最小开放原则,不要使用放行所有端口的规则,入方向仅开放80、443等业务端口,对于管理端口22、3389,源地址设置为固定出口IP或跳板机安全组,不使用 0.0.0/0。
公网暴露管理
将后端服务如数据库、Redis、Elasticsearch部署在VPC私网子网中,不分配公网IP,对外仅通过SLB或NAT网关发布,对必须公网访问的服务启用访问控制,并限制来源。
使用VPC与网络ACL
ECS实例加入专有网络VPC,通过子网划分隔离前端、应用、数据层,在子网层添加网络ACL规则,对135、137、138、139、445等高危端口设置拒绝,网络ACL规则需同时考虑入方向和出方向。
关闭无用公网IP与端口
定期检查实例绑定的弹性公网IP,释放不再使用的IP,使用 ss -lntp 查看监听端口,关闭非必要服务,对公网开放端口列表形成资产台账,变更时更新。
系统与补丁加固
定期更新补丁
Linux系统执行 yum update -y --security 或 apt update && apt upgrade -y 安装安全补丁,Windows Server开启自动更新,或在阿里云云安全中心中设置漏洞修复策略,优先修复高危漏洞。
最小化软件安装
仅安装业务必需软件,使用 rpm -qa 或 dpkg -l 检查已安装包,移除telnet-server、rsh、talk等多余服务,使用 systemctl disable 关闭无关自启动项,如蓝牙、打印服务。
内核参数加固
编辑 /etc/sysctl.conf 增加:
net.ipv4.tcp_syncookies=1 net.ipv4.conf.all.rp_filter=1 net.ipv4.conf.default.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.all.accept_redirects=0
执行 sysctl -p 使配置生效,防止SYN Flood、源地址欺骗和ICMP放大攻破。
配置自动安全更新
CentOS/Anolis可使用 yum-cron,Ubuntu可使用 unattended-upgrades,设置每天检查安全更新,自动下载并应用,邮件或日志通知管理员,减少已知漏洞的暴露时间。
应用与中间件加固
Web服务降权与权限隔离
Nginx和Apache使用独立低权限用户运行,禁止以root启动,网站根目录属主与运行用户分离,目录权限建议755,文件644,上传目录设置禁止执行脚本,Nginx可配置 location ~* /uploads/.*\.(php|pl|py|sh)$ { deny all; }。
数据库加固
MySQL和Redis默认只监听内网IP或127.0.0.1,MySQL删除匿名用户和测试库,执行 ALTER USER 'root'@'localhost' IDENTIFIED BY '强密码';,Redis设置 requirepass 强密码,禁用 FLUSHALL、CONFIG、EVAL 等高危命令,可通过 rename-command 或ACL实现。
隐藏版本与关闭目录浏览
Nginx设置 server_tokens off,Apache设置 ServerTokens Prod 和 ServerSignature Off,关闭目录浏览,Nginx使用 autoindex off,Apache使用 Options -Indexes,防止攻破者根据版本号搜索已知漏洞。
管理后台限制
phpMyAdmin、宝塔面板、Adminer等工具修改默认路径,绑定内网地址,并通过安全组或Web服务器设置IP白名单,增加HTTP Basic认证,限制登录失败次数,设置访问日志审计。
数据与备份加固
云盘加密与快照
创建ECS时选择ESSD云盘并启用加密,使用阿里云KMS托管密钥,对系统盘和数据盘设置自动快照策略,核心业务每天创建快照,保留7天以上,快照不可改动,可用于恢复索要软件加密、误删或系统崩溃。
异地备份与版本控制
将数据库备份文件同步至对象存储OSS,开启版本控制,防止误删和覆盖,重要数据开启跨区域复制,实现异地容灾,定期进行恢复演练,验证备份数据完整性和RTO/RPO指标。
敏感数据保护
日志、配置文件中禁止明文保存密码、AccessKey和私钥,使用KMS加密敏感字段,或将密钥放入环境变量和RAM角色中,对包含用户数据的数据库字段进行脱敏,限制导出和下载权限。
日志与监控加固
云监控与告警
安装阿里云云监控Agent,监控CPU、内存、磁盘IO、网络流量等指标,设置阈值告警,例如CPU持续超过90%、公网入流量突增、磁盘使用率超过85%时通过短信、邮件或钉钉通知。
操作审计
在控制台开通ActionTrail,将API调用和登录事件投递到日志服务SLS或OSS长期保存,重点关注创建实例、修改安全组、删除快照、更换密钥等高危操作,设置告警规则。
系统日志集中收集
使用rsyslog或Filebeat收集 /var/log/secure、/var/log/auth.log、/var/log/nginx/access.log 至SLS,对SSH登录失败、sudo提权、敏感文件访问等事件建立关键字告警,发现暴力免费及时封禁。
入侵检测
部署阿里云云安全中心或开源HIDS如Wazuh、OSSEC,监控文件完整性、异常进程、反弹Shell、提权行为,对WebShell上传、可疑计划任务和容器逃逸行为进行实时告警。
基线检查与应急响应
定期基线扫描
使用云安全中心的基线检查功能,参照CIS标准扫描Linux和Windows配置,重点修复弱口令、高危端口、未授权访问、关键文件权限和漏洞未修复项,输出报告并跟踪整改。
关键文件防改动
对 /etc/passwd、/etc/shadow、/etc/group、/etc/sudoers 设置 chattr +i 不可变属性,对计划任务目录 /etc/cron.d、/var/spool/cron 设置审计规则,发现新增或修改时告警。
应急响应准备
制定应急响应流程:发现异常后先对实例打快照保留现场,将可疑实例移出安全组或断网隔离,更换密钥、重置密码,检查启动项和计划任务,必要时从干净镜像重建实例并恢复数据。
定期渗入测试
每季度或重大版本变更后,进行内部渗入测试,验证安全组规则、应用权限、接口鉴权和数据越权,发现漏洞及时修复。
