避免使用弱口令登录实例

避免使用弱口令(弱密码、简单密码)登录ECS实例,推荐采用密钥对认证方式、较高强度密码认证登录或者使用Workbench免密连接,并配合定期更换策略提高实例访问安全性,消除弱口令带来的安全风险。

安全风险

使用用户名和密码登录服务器是一种便捷但风险较高的身份验证方式,弱口令是最容易出现的也是最容易被利用的漏洞之一,许多用户出于简单易记的目的,设置诸如123456、admin@123这样的弱口令,导致系统存在安全风险:

  • 暴力破解:攻击者使用自动化工具(如Hydra、John the Ripper)快速尝试常见密码组合,短时间内即可破解弱密码。

  • 数据泄露:破解密码后,攻击者可窃取敏感数据(如个人隐私、财务信息)或冒充用户进行欺诈。

  • 横向攻击:攻击者通过弱口令入侵低权限账户(如普通员工邮箱),进一步渗透内网,获取管理员权限或关键系统控制权。

  • 撞库攻击:用户在不同平台重复使用同一弱密码,一旦某平台泄露,攻击者利用“撞库”入侵其他账户。

最佳实践

Linux实例

建议使用密钥对认证,相比密码认证更安全。

控制台

通过实例购买页创建实例时,设置登录凭证密钥对,然后选择已创建的密钥对

没有密钥对,创建密钥对后再进行选择。

image.png

API

通过RunInstances或者CreateInstance接口创建实例时,指定KeyPairName参数为密钥对名称,此时password参数将忽略。

若无密钥对,可通过CreateKeyPair接口创建密钥对。

Windows实例

建议使用较高强度密码认证(不支持使用密钥对认证)。

通过实例购买页创建实例时,登录凭证选择自定义密码,然后根据提示设置复杂(高强度)登录密码

  • 设置复杂密码,复杂密码应同时满足以下要求:

    • 密码长度大于等于8个字符。

    • 至少包含大写字母(A~Z)、小写字母(a~z)、数字(0~9)、特殊字符(~、!、@、$、%、^、&、*、-、_、=、+、#、/、?)中的三种字符组合。

    • 密码不能为用户名或用户名的倒序。

  • 不使用常见或公开的弱口令,常见或公开的弱口令举例如下:

    • 已公开的常用弱口令。例如abcd1234、admin、root、admin@123等。

    • 数字或字母连排或混排,键盘字母连排。例如123456、abcdef、123abc、qwerty、1qaz2wsx等。

    • 短语密码。例如5201314、woaini1314等。

    • 公司名称、生日、姓名、身份证、手机号、邮箱名、用户ID、时间年份等。

  • 定期修改密码

    建议每隔90天更改一次密码。

image

合规能力

检查:是否存在未使用密钥认证登录的Linux实例

ECS使用成熟度评估与洞察

  1. 前往ECS使用成熟度评估与洞察

  2. 选择安全性能力页签,单击检查项使用密钥对(仅 Linux),可以查看未使用密钥认证登录的Linux实例。

云安全中心

  1. 前往云安全中心控制台

  2. 在左侧菜单栏选择风险治理 > 云安全态势管理,选择云产品配置风险页签,查找名为使用SSH密钥对登录的检查项,单击操作列的扫描按钮。

    image

    若状态显示为未通过,表示存在未使用密钥认证登录的Linux实例,可单击详情进行查看。

拦截:禁止创建Linux实例等操作中配置密码认证

在组织或账户层面通过RAM Policy策略,主动拦截为Linux实例设置密码的行为。

  • 针对企业用户:

    1. 使用阿里云主账号登录资源目录控制台,单击左侧菜单栏的管控策略创建自定义权限策略,粘贴以下JSON内容。

      禁止在创建实例、系统盘挂载、更换系统盘、修改实例属性以及修改密码等操作中配置密码认证方式。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ecs:RunInstances",
                      "ecs:CreateInstance",
                      "ecs:ReplaceSystemDisk"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "Bool": {
                          "ecs:PasswordCustomized": [
                              "true"
                          ]
                      },
                      "StringEquals": {
                          "ecs:ImagePlatform": "linux"
                      }
                  },
                  "Effect": "Deny"
              },
              {
                  "Action": [
                      "ecs:ModifyInstanceAttribute",
                      "ecs:InvokeCommand",
                      "ecs:AttachDisk"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "Bool": {
                          "ecs:PasswordCustomized": [
                              "true"
                          ]
                      }
                  },
                  "Effect": "Deny"
              }
          ]
      }
    2. 在资源目录中选择合适的节点绑定策略,策略将对目录下的账号产生拦截效果。

  • 针对非企业用户:

    1. 使用阿里云主账号登录RAM控制台,单击左侧菜单栏的权限策略,创建一条与上述内容相同的自定义策略。

    2. 通过管理权限策略授权将该条权限策略授权给RAM用户、RAM用户组或RAM角色。

修复:将现有实例切换至密钥登录

如果检查发现已有Linux实例正在使用密码登录,将其切换到密钥对认证。

  1. 绑定密钥对选择绑定一个已有的密钥对,或为其创建一个新的密钥对并完成绑定。

    绑定密钥对后,请先用新的密钥对尝试登录一次,确保可以成功访问实例。

  2. 禁用密码登录登录实例内部,执行以下脚本,修改SSH服务配置文件。

    #!/bin/bash
    # 备份原始配置文件
    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F)
    
    # 禁用密码认证:将 PasswordAuthentication 参数修改为 no
    sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
    
    # 重启 SSH 服务以使配置生效
    # 对于不同操作系统,命令可能为 sshd 或 ssh
    systemctl restart sshd || service sshd restart
  3. 验证:操作完成后,请重新启动实例,尝试使用密码认证登录,此时应登录失败。然后,再尝试使用密钥对登录,确认可以成功登录。