弱口令安全最佳实践

更新时间:

如果您的服务器使用弱口令登录,黑客可能会非法登录您的服务器,窃取服务器数据或破坏服务器。建议您为服务器设置高安全性的登录口令,并定期更换登录口令。本文介绍如何提升登录口令的安全性以及常见系统修改登录口令的方法。

弱口令的危害

在服务器系统中使用弱口令可能会造成以下危害:

  • 普通账户使用的弱口令可能会被猜解或被破解工具破解,从而泄露个人隐私信息,甚至造成财产损失。

  • 系统管理员账户弱口令可能会导致整个系统被攻击、数据库信息被窃取、业务系统瘫痪,造成所有用户信息的泄露和巨大的经济损失,甚至可能引发群体性的网络安全危害事件。

及时检测弱口令能够有效防止系统被攻击和信息泄露,可以提高系统的安全性。您可以使用云安全中心基线检查功能,检查您的服务器中是否存在高危弱口令风险。如果在您的资产中检测出了高危弱口令风险,建议您参考提升口令安全中的方式及时修改资产中的弱口令。修改口令的具体操作,请参见常见系统口令修改方式

提升口令安全

您可以通过以下方法提升登录口令的安全性:

  • 设置复杂密码

    复杂密码应同时满足以下要求:

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

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

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

  • 不使用常见或公开的弱口令

    以下是常见或公开的弱口令:

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

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

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

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

  • 定期修改密码

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

常见系统口令修改方式

以下表格介绍修改Linux服务器、MySQL数据库、Redis数据库等常见系统的登录弱口令的操作方法。

重要

以下介绍列表中用到的公共参数,在实际使用过程中您需要根据实际情况替换。

  • <UserName>:登录用户名。

  • <OldPassword>:旧密码。

  • <NewPassword>:新密码。

  • <HostName>:主机名或IP地址。

系统名称

修改登录口令操作步骤

Linux系统

在Linux系统服务器中,执行passwd <UserName>命令,修改用户登录口令。执行完命令后请根据提示输入新口令。

如果不输入<UserName>则修改的是当前用户的口令。

Windows系统

此处以服务器操作系统为Windows Server 2019为例说明修改用户登录口令的方法。

  1. 登录Windows服务器,在左下角单击开始图标图标。

  2. 单击设置图标图标,在Windows设置页面,单击账户

  3. 在左侧导航栏单击登录选项

  4. 根据页面提示更改服务器密码。

MySQL数据库

  1. 登录MySQL数据库。

  2. 执行以下命令查看数据库用户密码信息。

    SELECT user, host, authentication_string FROM user;
    说明

    部分MySQL数据库版本可能不支持上述查询命令。如果您执行上述命令未获得用户密码信息,请您执行以下命令。

    SELECT user, host, password FROM user; 
  3. 执行以下命令根据查询结果及弱密码告警信息修改具体用户的密码。

    SET PASSWORD FOR '<UserName>'@'<HostName>' = PASSWORD('<NewPassword>'); 
  4. 执行刷新命令flush privileges;

Redis数据库

  1. 打开Redis数据库的配置文件redis.conf

  2. 执行以下命令修改或增加口令。

    requirepass <NewPassword>;

    如果已存在登录口令,则执行该命令后将修改原来的登录口令;如果不存在登录口令,则执行该命令后将添加新口令。

  3. 重启Redis服务。

SQL Server数据库

  • Linux系统登录

    登录SQL Server数据库,执行以下命令修改登录口令。

     exec sp_password <OldPassWord>,<NewPassword>,<UserName>
  • Windows认证登录

    在SQL Server数据库客户端依次选择安全性 > 登录名 ,选中用户后将弱口令修改为复杂口令。

MongoDB数据库

  1. 登录MongoDB数据库。

  2. 执行use admin命令,切换到admin用户。

  3. 执行db.changeUserPassword("<UserName>", "<NewPassword>")命令,修改数据库的登录名和口令。

    建议将新口令设置为长度大于12个字符,包含数字、大写字母、小写字母和特殊字符的强口令。

  4. 确保开启了身份认证功能。

    进入MongoDB配置文件mongod.conf,将security.authorization设置为enabled或将auth配置项设置为true

  5. 执行systemctl restart mongod命令,重启MongoDB服务。

PostgreSQL数据库

  1. 登录PostgreSQL数据库。

  2. 执行以下命令修改弱口令。

    ALTER USER <UserName> WITH PASSWORD <NewPassword>;

Tomcat

  1. 打开Tomcat根目录下的配置文件conf/tomcat-user.xml

  2. 修改user节点的password属性值为复杂口令。

Rsync

  1. 打开Rsync的配置文件rsyncd.conf

  2. 找到secrets file配置项,并在该配置项中找到rsyncd.secret文件的路径。

  3. rsyncd.secret文件按<UserName>:<NewPassword>格式编辑,修改对应用户的口令为新的复杂口令。

  4. 重启Rsync服务。

SVN

  1. 打开版本库目录。

  2. 在配置文件<path>/conf/svnserve.conf中找到password-db

  3. 根据password-db配置找到口令配置文件路径,将该文件中的口令修改为指定的口令(默认为passwd文件)。

  4. 重启SVN服务。

vsftpd服务器软件

  • 本地用户

    1. 打开配置文件vsftpd.conf

    2. 增加或修改配置项anonymous_enable的值为NO,禁止匿名登录。

    3. 执行passwd <UserName>命令,修改FTP用户的口令。

    4. 根据提示设置符合要求的新的复杂口令。

  • 虚拟用户

    1. 打开文件/etc/vsftpd/login.txt

    2. 修改用户名对应的口令并保存。

      该文件格式为:第1行是用户A的用户名,第2行是用户A的口令,第3行是用户B的用户名,第4行是用户B的口令,以此类推。

    3. 执行db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db命令。

    4. 修改/etc/pam.d/vsftpd文件。

      在存在auth pam_userdb.soaccount pam_userdb.so的行后分别添加语句db=/etc/vsftpd/login,修改完成后保存。具体位置见下图。vsftpd文件修改位置

    5. 重启vsftpd。

FTP

  1. 使用root用户登录目标Linux服务器。

  2. 执行以下命令。

    passwd ftp <UserName>
  3. 按照提示输入新密码。

    修改密码成功后,会提示all authentication tokens updated successfully

InfluxDB数据库

  1. 登录InfluxDB数据库。

  2. 执行以下命令修改数据库密码。

    使用新密码替换NewPassword,新密码需使用半角单引号括起来。

    set password for "<UserName>" = "<NewPassword>" 

Jboss6、7

  • Jboss6:

    1. 编辑配置文件/conf/props/jmx-console-users.properties,修改配置文件中的弱口令,修改后的格式为<UserName> =<Password>

    2. 重启Jboss6。

      1. 执行ps -ef|grep jboss查看当前Jboss6进程。

      2. 执行kill -9 进程ID关闭进程。

        其中进程ID需要替换成Jboss6的进程ID

      3. 执行以下命令启动Jboss服务。

        jboss6_path需要替换成Jboss6的安装目录。

         jboss6_path/bin/run.sh
  • Jboss7:

    1. 编辑配置文件/configuration/mgmt-users.properties,删除使用弱口令的用户条目。

    2. 运行Jboss安装路径下的bin/adduser.sh,根据提示添加使用复杂密码的新用户。

Jenkins

  1. 登录Jenkins服务Web控制台。

  2. 单击设置,进入设置页面。

  3. 密码处输入新密码。

OpenLDAP

  1. 执行以下命令查询OpenLDAP管理员密码字段的值和存放位置。

    ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW
  2. 执行以下命令生成新密码。

     slappasswd -s <NewPassword>

    执行该命令后可以获得新密码的哈希值NewHash。

  3. 新建名称为newpassword.ldif的文件,并在文件中添加以下信息。

    dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootPW olcRootPW: NewHash

    其中dn行的内容为第一个查询命令返回数据中dn的值,NewHash为新密码的哈希值。

  4. 执行以下命令导入新建的ldif文件。

    ldapmodify -H ldapi:// -Y EXTERNAL -f newpasswd.ldif 

Linux系统OpenVpn

编辑配置文件pwd-file,修改OpenVpn的密码。具体操作如下:

  1. 找到配置文件pwd-file。配置文件一般在/etc/openvpn目录。

  2. 在配置文件中加入以下语句,取消客户端的证书认证。

    client-cert-not-required
  3. 在配置文件中加入以下语句,开启用户密码脚本。

    auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
  4. 在配置文件中加入以下语句,屏蔽system告警。

    script-security  system
  5. 编辑/etc/openvpn/psw-file文件,一行对应一个账号,用户名和密码用空格隔开。示例:

    cat /etc/openvpn/psw-file 
    abcdocker <NewPassWord>
    abc <NewPassWord>
    test <NewPassWord>
  6. 执行以下命令获取checkpsw.sh脚本。

    wget http://openvpn.se/files/other/checkpsw.sh
    说明

    checkpsw.sh默认从文件/etc/openvpn/psw-file中读取用户名密码。

Oracle数据库

  1. 登录Oracle数据库。

  2. 执行以下命令修改口令。

    alter user <UserName> identified by <NewPassWord>;

pptpd服务

  1. 编辑/etc/ppp/chap-secrets文件。

  2. 配置用户名和密码,格式为<UserName> pptpd <NewPassword>

    UserName、pptpd和NewPassword之间需要使用tab键分隔。

  3. 重启pptp服务。

Proftpd

执行以下命令,根据提示输入新密码。

其中File_Path指存储该虚拟用户的文件路径。

ftpasswd --passwd --name=<UserName> --change-password --file=File_Path

RabbitMQ

执行以下命令修改弱口令。

rabbitmqctl change_password <UserName> '<NewPassword>'

VncServer

  1. 确保VncServer处于关闭状态后,进入VncServer服务器的VncServer安装目录。

    当弱口令不为root用户时,进入安装目录后,登录或切换到需要修改弱口令的用户。例如需要修改密码的用户为aliuser时,执行su - aliuser

  2. 删除安装目录下的passwd文件,例如删除/home/aliuser/.vnc/passwd

  3. 执行vncpasswd命令,重置密码。

    重要

    VncServer密码校验位最长为8,例如您设置新口令为Aliyunpasswd,实际生效为前8位,即Aliyunpa。如果生效的密码不满足复杂密码的要求,会有较大风险被入侵者破解,请确保密码满足复杂度要求。

Weblogic 12c

  1. 登录Weblogic控制台。

  2. 在左侧导航栏,选择安全领域 > 目标领域 > 用户和组 > 用户

  3. 选择需要修改口令的用户。

  4. 口令页面,填写并确认新口令,单击保存

  5. 如果WebLogic管理控制台左上角更改中心显示激活更改,请单击激活更改

  6. 登录服务器,在配置文件`%DOMAIN_HOME%/servers/AdminServer/security/boot.properties 中,修改目标用户的password字段。

    此处修改的密码需要和Weblogic控制台相同,修改密码后会自动进行AES加密。

  7. 执行%DOMAIN_HOME%/bin/stopWeblogic.sh命令,安全停止Weblogic,再重新启动Weblogic。

说明
  • 必须重启Weblogic新密码才会生效。

  • 如果无法修改配置,可在Weblogic控制台左上角更改中心,单击锁定并编辑修改配置。

  • 需要安全停止Weblogic,否则可能导致Weblogic启动失败。

Activemq

  1. 进入配置文件目录activemq_path/conf/

    其中activemq_path为应用安装路径。

  2. 执行vim jetty-realm.properties命令,编辑配置文件。

  3. 添加或修改用户。

    修改用户名和口令的格式为<UserName>: <NewPassword>,RoleNameRoleName为角色。例如:admin: passwd123!@#, admin

  4. 修改完成后保存退出,重启服务。

ElasticSearch服务

说明

使用Elasticsearch的安全策略安装X-Pack插件。7.X以上版本的Elasticsearch已经内置X-Pack插件;对于7.X以下版本,您需开启X-Pack配置。在elasticsearch.yml文件中修改配置为xpack.security.enabled: true

执行以下命令修改用户密码。

其中ES_HOME_PATH为ElasticSearch的安装路径,passwd为新口令。

ES_HOME_PATH/bin/elasticsearch-users passwd <UserName>

Samba

  1. 执行smbpasswd <UserName>命令,修改用户密码。

  2. 按照提示输入新密码。

Zabbix

  1. 使用管理员账号登录Zabbix的Web管理控制台。

  2. 在顶部菜单栏,选择管理 > 用户,查看用户列表。

  3. 单击目标用户名,再单击修改密码

  4. 输入新口令后,单击存档

相关文档

您可以使用云安全中心的基线检查,帮助您检测服务器的弱口令风险。具体操作,请参见基线检查