linux安全优化之用户管理【1】

前言

在进行用户管理之前,我们有必要了解以下Linux的多用户,多任务这种操作系统的基本概念。还有用户及组,以及对它们进行配置的配置文件的详细介绍。

用户(user)和用户组(group)

  • 单用户多任务与多用户多任务
    单用户多任务就相当于你自己进入了一个系统,开启了很多不同的任务和进程。
    多用户和多任务就是多个用户同时进入一个系统,并开启了各自不同的任务。比如说一个公司里面要做一个维护,很多运维人员协同工作,各自完成一些部署与配置来解决所遇到的问题。但并不是所有人都在做同一件事情。这就是多用户多任务的情况。这种情况通过SSH客户端工具等远程工具连接登陆服务器来进行。可以对服务器进行远程控制。
  • 系统的角色划分
用户权限 UID
超级用户root 0
程序用户 1-499
普通用户 500-65535

注意:UID是唯一识别一个系统用户的账号。
超级用户
其UID 和GID均为0。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。
普通用户
这类用户是由有root权限的运维人员添加的。
程序用户
与真实用户不同,这类用户是安装系统后默认就会存在的,且默认情况不能登录系统,但它们也是系统正常运行必不可少的,他们的存在主要功能是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的bin、adm、nodoby、mail用户等。由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。

  • 用户与用户组

    用户
    如果要使用系统资源,就必须向系统管理员申请一个账号,然后通过这个账号进入系统。这个账号和用户是同一个账号,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户管理文件,提供对用户文件的安全性保护。

    用户组介绍
    组分有基本组(私有组),附加组(公共组)
    用户组(group)就是具有相同权限的用户(user)集合。
    将用户分组是linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了运维管理工作。
    例如把授权的用户都加入到同一个用户组里,然后通过修改该文件或目录的对应的用户组的权限,让用户组具有符合需求的操作权限,这样用户组下的所有用户对该文件或目录就会具有相同的权限,这就是用户组的用途。

    所以,一个用户可以加多个组,一个组可以有多个用户。

配置文件

Linux系统中主要有/etc/passwd、/etc/shadow(与用户相关的配置文件)
/etc/group、/etc/gshadow四个文件

  • /etc/passwd用户的配置文件,保存用户账户的基本信息
    文件中每行定义一个用户账号,有多少行就表示多少个账号,各内容之间又通过”:”号划分了7个字段,这7个字段分别定义了账号的不同属性

    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    ...
    (注意:此时可以看到除了root,其他的都是系统用户,并且root的uid与gid都为0)
    

    字段1:帐号名,这是用户登陆时使用的账户名称,在系统中是唯一的,不能重名
    字段2:密码占位符x;早期的unix系统中,该字段是存放账户和密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow中了。这里可以看到一个字母x,表示该用户的密码是/etc/shadow文件中保护的。
    字段3:UID;范围是0-65535
    字段4:GID;范围是0-65535;当添加用户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组。
    字段5:用户说明;这个字段是对这个账户的说明
    字段6:宿主目录;用户登陆后首先进入的目录,一般与"/home/用户名"这样的目录
    字段7:登录Shell 当前用户登陆后所使用的shell默认是bash;如果不希望用户登陆系统,可以通过usermod
    或者手动修改passwd设置,将该字段设置为/sbin/nologin 即可。大多数内置系统账户都是/sbin/nologin,这表示禁止登陆系统。这是出于安全考虑的。

    注意:因为每个用户登录时都需要取得UID和GID来判断权限问题,所以/etc/passwd的权限为644,这样一来就会带来安全问题,即所有的用户都可以都/etc/passwd文件,即使文件内的密码是加密的,但还是存在一定的被攻击破解的安全隐患。因此,就有了/etc/shadow文件。

  • /etc/shadow文件
    其权限为000。内容如下

    root:$6$jr39DOUiE77Mrh58$DDlfYyT6xT47f5Ld5bJS.zlVKSwOQ44zAG/NGbNUQQjVsfC5EssvqnVXtd7VlUcyRrxfXr/fk82wLWbJ7AXIB/:18038:0:99999:7:::
    bin:*:17784:0:99999:7:::
    daemon:*:17784:0:99999:7:::
    ...
    

    shadow文件共9个字段,其各个字段的意义如下表:
    字段1:帐号名称
    字段2:加密的密码
    字段3:最近更改密码的时间;从1970/1/1到上次修改密码的天数
    字段4:禁止修改密码的天数;从1970/1/1开始,多少天之内不能修改密码,默认值为0
    字段5:用户必须更改口令的天数;密码的最长有效天数,默认值为99999
    字段6:警告更改密码的期限;密码过期之前警告天数,默认值为7;在用户密码过期前多少天提醒用户更改密码
    字段7:不活跃时间;密码过期之后账户宽限时间;在用户密码过期之后到禁用账户的天数
    字段8:帐号失效时间,默认值为空;从1970/1/1日起,到用户被禁用的天数
    字段9:保留字段(未使用)

  • /etc/group用户组配置文件,记录GID与用户组的文件
    内容包括用户与用户组,并且能显示用户归属哪个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用户组的用户之间具有相似的特性。如果某个用户下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进入。
    内容如下:

    root:x:0:
    bin:x:1:
    daemon:x:2:
    ...
    

    group文件各个字段的详细说明:
    字段1:组账户名称
    字段2:密码占位符x;通常不需要设置该密码,由于安全原因,该密码被记录在/etc/gshadow中,因此显示为’x’。这类似/etc/shadow
    字段3:组账户GID号,用户组ID
    字段4:本组的成员用户列表;加入这个组的所有用户账号

  • /etc/gshadow是上个文件存放加密文件的文件
    /etc/group和/etc/gshadow是互补的两个文件,用来定制一些关系结构比较复杂的额权限模型,让某些用户临时拥有一些用户组特性。
    如下:

    root:::
    bin:::bin,daemon
    daemon:::bin,daemon
    ...
    

    gshadow中各个字段详细说明:
    字段1:组账号的名称
    字段2:加密后的密码字符串,这个字段可以空的或者!;如果是空的或有!,表示没有密码
    字段3:本组的管理员列表;这个字段也可为空;如果有多个用户组管理员,用,号分隔
    字段4:本组的成员列表;加入这个组的所有用户账户;列表中多个用户通过","分隔

    与用户相关的文件和目录

  • /etc/skel
    用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件都会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的所有文件都是隐藏文件(以.点开头);通过修改、添加、删除/etc/skel目录下的文件,我们可为新创建的用户提供统一、标准的、初始化用户环境。
    如下为目录内容

    [root@workstation ~]# ls -al /etc/skel/
    total 24
    drwxr-xr-x.   4 root root   93 Jan  7 22:30 .
    drwxr-xr-x. 139 root root 8192 Jan  7 22:29 ..
    -rw-r--r--.   1 root root   18 Jan 14  2019 .bash_logout
    -rw-r--r--.   1 root root  141 Jan 14  2019 .bash_profile
    -rw-r--r--.   1 root root  312 Jan 14  2019 .bashrc
    drwxr-xr-x.   2 root root   58 May 21  2019 .config
    drwxr-xr-x.   4 root root   39 May 21  2019 .mozilla
    

    当我们用useradd 或adduser命令添加新用户时,linux系统会自动复制/etc/skel下的所有文件(包括隐藏文件)到新添加用户的家目录

  • /etc/login.defs配置文件
    用来定义创建用户时需要的一些用户的配置文件。(如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期限等等。)

    # *REQUIRED*
    #   Directory where mailboxes reside, _or_ name of file, relative to the
    #   home directory.  If you _do_ define both, 	 MAIL_DIR takes precedence.
    #   QMAIL_DIR is for Qmail
    #
    #QMAIL_DIR	Maildir
    MAIL_DIR	/var/spool/mail
    #MAIL_FILE	.mail
    
    # Password aging controls:
    #
    #	PASS_MAX_DAYS	Maximum number of days a password may be used.
    #	PASS_MIN_DAYS	Minimum number of days allowed between password changes.
    #	PASS_MIN_LEN	Minimum acceptable password length.
    #	PASS_WARN_AGE	Number of days warning given before a password expires.
    #
    PASS_MAX_DAYS	99999
    PASS_MIN_DAYS	0
    PASS_MIN_LEN	5
    PASS_WARN_AGE	7
    
    #
    # Min/max values for automatic uid selection in useradd
    #
    UID_MIN                  1000    #添加用户时,UID是从500开始的
    UID_MAX                 60000
    # System accounts
    SYS_UID_MIN               201    
    SYS_UID_MAX               999  
    #
    # Min/max values for automatic gid selection in groupadd
    #
    GID_MIN                  1000    ##组ID的情况如上
    GID_MAX                 60000
    # System accounts
    SYS_GID_MIN               201
    SYS_GID_MAX               999
    
    #
    # If defined, this command is run when removing a user.
    # It should remove any at/cron/print jobs etc. owned by
    # the user to be removed (passed as the first argument).
    #
    #USERDEL_CMD	/usr/sbin/userdel_local
    
    #
    # If useradd should create home directories for users by default
    # On RH systems, we do. This option is overridden with the -m flag on
    # useradd command line.
    #
    CREATE_HOME	yes   #是否创建用户家目录,默认要求创建 
    
    # The permission mask is initialized to this value. If not specified, 
    # the permission mask will be initialized to 022.
    UMASK           077
    
    # This enables userdel to remove user groups if no members exist.
    #
    USERGROUPS_ENAB yes     #删除用户同时删除用户组
    
    # Use SHA512 to encrypt password.
    ENCRYPT_METHOD SHA512   #SHA512加密
    
  • /etc/default/useradd使用useradd添加用户时需要调用的一个默认的配置文件

    内容如下:

    [root@workstation ~]# cat /etc/default/useradd
    # useradd defaults file
    GROUP=100
    HOME=/home    #用户家目录设置在home中
    INACTIVE=-1    #是否启动过期停权
    EXPIRE=   #账号终止日期
    SHELL=/bin/bash    #默认使用的shell类型
    SKEL=/etc/skel    #新用户家目录的默认文件存放路径。
    CREATE_MAIL_SPOOL=yes    #创建mail文件
    

后记

现在我们对用户管理的相关配置文件有了认识,接下来就要进行命令添加了,不过在命令添加前还是需要做一些前期的命令以便实验结果可视明了。

发布了7 篇原创文章 · 获赞 8 · 访问量 1284

猜你喜欢

转载自blog.csdn.net/Thorne_lu/article/details/103886474
今日推荐