• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在 centOS 上创建 SSH 用户 admin 具备系统管理员权限

    目的:为了提供更安全可靠的外网 ssh 连接,禁止 root 用户登录。创建新账号登录,具备大部分超级用户权限(root 用户权限),进行系统管理员。这样即减少 Linux 命令输入的错误隐患,还能有效减小黑客入侵几率。不仅需要猜密码,还需要先猜账号,无疑大大增加入侵成本。

    通常在 Linux 下,即使我们有系统管理员 root 的权限,也不推荐用 root 用户登录。一般情况下用普通用户登录就可以了,在需要 root 权限执行一些操作时,再su登录成为 root 用户。但是,任何人只要知道了 root 的密码,就都可以通过su命令来登录为 root 用户,这无疑为系统带来了安全隐患。

    在 Redhat 系发行版(RHEL/Fedora/CentOS)中,存在 wheel 组。在建立用户时,将其添加入 wheel 组中。那么此普通用户除去可以执行普通用户命令之外,还可以使用sudo 命令来执行 root 用户才能执行的命令。另外,在 SSH 连接到服务端后,若有特殊情况,也可以su切换到 root 用户,去执行特殊的命令。当然对于大开发团队,为了安全,root 用户的密码,只能少数几个人才能知道。其他的运维人员,使用 wheel 组下的用户,已经足够了。


    在服务器端 centOS 上设置

    第一步:新增用户

    # 创建用户
    useradd admin -g wheel
    

    admin,是自己想创建的用户名称,根据需求自行修改。-g,是参数,用来指定所属用户组。

    # 设置密码
    passwd admin
    
    # 设置新密码对话框
    New password:  输入新密码
    Retype new password: 再次重复输入上面的新密码
    passwd: all authentication tokens updated successfully.
    


    第二步:禁止 root 登录

    vim /etc/ssh/sshd_config
    
    # 设置 root 登录选项
    PermitRootLogin no
    
    # 重新加载 sshd 配置文件,不终止 ssh 连接
    systemctl reload sshd.service
    
    # 后者重启 sshd
    systemctl restart sshd
    


    # 用户组列表文件:
    cat /etc/group
    
    # 查看用户列表文件:
    cat /etc/passwd
    
    # 查看系统中有哪些用户:
    cat /etc/passwd | cut -d : -f 1
    
    # 查看可以登录系统的用户:
    cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
    


    在本机 centOS 上设置

    在本机上也可以新增admin用户,而不使用 root 用户。因为不存在被 SSH 连接登录问题,所以不存在设置 SSH 配置中的选项,而禁止 root 登录。另外,为了方便使用,在本机中,不需要设置密码。

    第一步:新增用户

    # 创建用户
    useradd admin -g wheel
    

    admin,为想要创建的用户名称。-g,是参数,用来指定所属用户组。

    # 设置密码
    passwd admin
    
    # 设置新密码对话框
    New password:  不需要密码,直接回车即可。
    Retype new password: 不需要密码,直接回车即可。
    passwd: all authentication tokens updated successfully.
    


    第二步:设置不需要密码

    visudo
    
    ## Allows people in group wheel to run all commands
    # %wheel  ALL=(ALL)       ALL
    
    ## Same thing without a password
    %wheel        ALL=(ALL)       NOPASSWD: ALL
    

    注意:必须用root 用户来修改此配置文件,否则无权限修改。当然其他非 root 用户,可以通过修改权限来实现。


    sudo 工具

    Liunx 用户只有两类:管理员用户(root)、普通用户。

    su(switch user)命令是用来切换用户身份的命令。

    sudo是 linux 下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的 root 命令,如 halt,reboot,su等等。这样不仅减少了 root 用户的登陆和管理时间,同样也提高了安全性。sudo是面向每个命令的。它的特性主要有这样几点:

    • sudo能够限制用户只在某台主机上运行某些命令。
    • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
    • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为 5 分钟的票(这个值可以在编译的时候改变)。
    • sudo配置文件是/etc/sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。

    通过sudo -l列出当前用户的权限。


    wheel 组

    Wheel 来源于“big wheel”这个俚语,指有强大“威力”或“影响力”的人。Wheel 组是 Unix 系统一个遗留物。当服务器需要做比日常例行维护更高级的工作的时候,就经常需要用到 root 权限了。而这个 wheel 组就是建立用来归纳一些特殊的系统用户用的,这其中的用户都或多或少地拥有 root 的部分功能和权限。也就是说如果你不是 wheel 组成员,那就没有 root 身上任何的特权。也因为这样,使用 wheel 组成员用户的话,会尽量减少对系统“摧毁性”破坏的概率和风险。在建立用户时,将其添加入 wheel 组中(用 wheel 组作为用户的主组)

    但是在 Linux 各发行版中有所差异。实际上 Debian 系发行版,包括 Ubuntu 等,并没有 wheel 组。但在 Redhat 系发行版(RHEL/Fedora/CentOS)中,存在 wheel 组

    cat /etc/sudoers
    
    ......
    #
    # Adding HOME to env_keep may enable a user to run unrestricted
    # commands via sudo.
    #
    # Defaults   env_keep += "HOME"
    
    Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
    
    ## Next comes the main part: which users can run what software on
    ## which machines (the sudoers file can be shared between multiple
    ## systems).
    ## Syntax:
    ##
    ##      user    MACHINE=COMMANDS
    ##
    ## The COMMANDS section may have other options added to it.
    ##
    ## Allow root to run any commands anywhere
    root    ALL=(ALL)       ALL
    
    ## Allows members of the 'sys' group to run networking, software,
    ## service management apps and more.
    # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
    
    ## Allows people in group wheel to run all commands
    %wheel  ALL=(ALL)       ALL
    
    ## Same thing without a password
    # %wheel        ALL=(ALL)       NOPASSWD: ALL
    
    ## Allows members of the users group to mount and unmount the
    ## cdrom as root
    # %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
    
    ## Allows members of the users group to shutdown this system
    # %users  localhost=/sbin/shutdown -h now
    ......
    

    将新建用户加入到 wheel 组中即可获得 root 权限,即通过sudo命令执行 root 权限的操作。默认需要输入当前用户的密码。若密码输入成功后,则开始执行sudo后面的命令。

    /etc/sudoers配置文件,需要root 用户身份来修改,不需要其他权限设置。修改后立刻生效。


    配置含义

    %wheel  ALL=(ALL)       ALL
    
    • %wheel:第一栏规定它的适用用户或组。本例为wheel用户组。因为系统中的组和用户可以重名,所以用%开头是用户组,没有的,是用户。
    • ALL:第二栏指定该规则的适用主机。当我们在多个系统之间部署sudo环境时,这一栏格外有用,这里的ALL代表所有主机。但是,对于桌面系统或不想将sudo部署到多个系统的情况,这一栏就换成相应的主机名。
    • (ALL):第三栏的值放在括号内,指出第一栏规定的用户能够以何种身份来执行命令。若该值设为root,则能够以root用户的身份来运行后面列出的命令。若该值设成通配符ALL,则能作为系统中的任何用户来执行列出的命令。
    • ALL:是第一栏目规定的用户或者用户组可执行的命令列表。通配符ALL,是指使用默认/sbin:/bin:/usr/sbin:/usr/bin中的命令。:为多个命令分隔符。即可执行/sbin下命令,也可以执行/bin下命令,还可以执行/usr/sbin下命令,还可以执行/usr/bin下命令。此处也可以单独限定为某几个单独的命令,例如/usr/bin/find,/bin/rm,该配置允许以超级用户运行/usr/bin/find/bin/rm,这两个命令。注意:这里列出的命令一定要使用绝对路径。