创建Linux类型系统实例时应避免使用root账号登录,推荐使用ecs-user账号登录。
安全风险
root账号拥有系统中最高的权限。虽然它为系统管理提供了便利,但也带来了巨大的安全风险。一旦root账户的凭证(密码或SSH密钥)被泄露,攻击者将完全控制您的服务器。这可能导致:
数据破坏: 攻击者可以删除所有业务数据、日志和备份。
恶意软件植入: 攻击者可以安装勒索软件、挖矿程序、后门程序等。
敏感信息窃取: 业务代码、客户数据、支付信息等核心资产将被一览无余。
横向移动攻击: 以此服务器为跳板,攻击您内网中的其他服务器,造成更大范围的破坏。
操作痕迹抹除: 攻击者可以轻易地修改或删除日志文件,极大地增加了安全事件后的追溯和调查难度。
最佳实践
创建实例时使用ecs-user进行日常登录和管理,这不仅限制了潜在的攻击面,也使得所有特权操作都必须通过sudo执行,从而留下了清晰、可审计的操作记录,明确了操作责任人。
控制台
通过实例购买页创建实例时,设置登录名选择ecs-user。
特定版本的Linux镜像支持ecs-user,若不支持,请参考多用户远程登录自行创建ecs-user,并为该用户授予sudo权限。

API
通过RunInstances或者CreateInstance接口创建实例时,指定ImageOptions.LoginAsNonRoot参数为true,实例将不再使用root登录名,而会使用ecs-user用户名,重置账密时也无法重置为root用户名。
若无密钥对,可通过CreateKeyPair接口创建密钥对。
合规能力
检查:是否存在使用root账号登录的Linux实例
选择安全性能力页签,单击检查项使用非 root 账号登录 Linux 实例,可以查看使用root账号登录的Linux实例。
拦截:预防新购实例等操作使用root账号
通过RAM Policy策略,在组织或账户层面设置策略,主动拦截在新购Linux实例等操作中使用root账号的行为。
针对企业用户:
使用阿里云主账号登录资源目录控制台,单击左侧菜单栏的管控策略,创建自定义权限策略,粘贴以下JSON内容。
限制使用
root身份进行创建实例、系统盘挂载、更换系统盘等操作。{ "Version": "1", "Statement": [ { "Action": [ "ecs:RunInstances", "ecs:CreateInstance", "ecs:ReplaceSystemDisk", "ecs:AttachDisk", "ecs:InvokeCommand" ], "Resource": "*", "Condition": { "Bool": { "ecs:LoginAsNonRoot": [ "false" ] } }, "Effect": "Deny" } ] }在资源目录中选择合适的节点绑定策略,策略将对目录下的账号产生拦截效果。
针对非企业用户:
修复:禁用root账号登录
创建普通用户:创建一个普通用户,用户ssh登录。具体操作,请参见多用户远程登录。
登录实例:使用root用户或普通用户登录到您的Linux实例。
禁用root账号登录:登录实例内部,执行以下脚本,修改SSH服务的配置文件。
#!/bin/bash # 备份原始配置文件 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F) # 禁用root用户ssh登录::将 PermitRootLogin 参数修改为 no sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config # 重启 SSH 服务以使配置生效 # 注意:不同发行版的 SSH 服务名可能不同(例如 sshd 或 ssh),请根据实际情况修改。 systemctl restart sshd || service sshd restart验证:操作完成后,请保持当前会话不要断开,另外打开一个新的终端窗口,尝试使用root用户登录,此时应登录失败。然后,再尝试使用您的普通用户登录,确认可以成功登录并能通过
sudo执行特权命令。验证成功后,方可安全断开所有会话。按照以上操作验证后,检查的结果可能不会改变,请忽略。