00010_ssh_no_root_login

1. 禁止 root 帐号登录 SSH

某个客户服务器接入互联网,允许root登录,虽然设置了长达 9 个字母的口令保护,仍在在 3 天之内被黑客通过暴力口令破解。

原因分析:

  • Unix 服务器上, root 帐号是最知名,权力最大的帐号,一般系统都默认允许 root 帐号远程登录。一些管理员图方便,也喜欢用 root 帐号直接登录系统;

  • 黑客常用的暴力口令破解工具通过口令字典对 root 帐号进行尝试登录;

  • 如果服务器允许 root 登录,很容易被黑客突破;

解决方案: 禁止 root 用户登录。通常有两种设置方法:

  • 方法一: 在 /etc/ssh/sshd_config 中如下设置,禁止 root 用户登录

    • PermitRootLogin no
    • 优点:

      • 设置简单。root 帐号直接被禁止登录

      • 其他用户帐号不受影响,可以登录

    • 缺点:

      • 当需要以 root 身份远程执行某些操作(如同步某些数据),而又不能执行 sudo 命令时,则无法实现

      • SSH 的 22 端口仍然可见

  • 方法二: 在 /etc/ssh/sshd_config 中如下设置,只允许属于某个用户组(如 ssh)的用户登录,而 root 用户不属于该用户组。

    • PermitRootLogin yes
      AllowGroups ssh
    • 优点:

      • root 帐号因不属于该用户组,被禁止登录

      • 如果需要具有 root 权限帐号的用户登录(同步敏感数据的需要),可以为 root 用户创建别名(id 为 0),并属于可登录的用户组

    • 缺点:

      • 系统中原有帐号都不能登录了,需要手动为需要登录的帐号添加到新用户组

      • SSH 的 22 端口仍然可见

其他可选方案:

  • 通过公钥登录 SSH

  • 安装 ossxp-secure-opensesame 软件包,动态打开 ssh 的 22 端口