最深入的Linux账号信息安全解析,安信网盾技术员ZP(代号)下班后整理总结,看完不后悔!后台账号是任何系统必不可少的基础,也是主机安全的第一道防线。不合理的用户权限配置会带来严重的安全问题。在类Unix系统中,一切都是文件,你可以在获得许可的情况下阅读你想要的一切。因此,用户权限配置是系统安全的基石。2019年7月27日发布的漏洞CVE-2019-14287是针对1.8.28之前版本的sudo漏洞,破坏者可通过该漏洞获取操作系统的最高权限。账户安全的意义什么是账户?GNU/Linux通过用户和用户组来实现访问控制。Linux默认的访问控制机制比较简单明了。用户一般是指使用计算机的人。计算机为每个用户分配一个用户名,用户使用这些名称访问计算机。除了人之外,一些系统服务还创建了用于管理服务进程的帐户。默认情况下,Linux中会有一个root用户。root用户拥有系统的最高权限,可以执行所有操作,而其他账户只能有部分权限。Linux有组的概念。用户可以通过修改群组的权限来控制更多成员的访问权限。每个用户都必须是组的成员。这是主要群体。每个用户只能有一个主组。但是您可以有多个从属组。Linux使用useradd命令添加用户,使用userdel删除用户。UNIX中的一切都是文件,所以所有的修改最终都会以文件的形式展现出来。您可以使用命令pwck-s检查用户配置文件(数据库)的完整性。账户安全配置保证资产安全。Linux通过访问权限来控制用户可以查看的内容。使用ls–l命令可以看到如下内容,分别标识了用户、组、用户访问权限、组访问权限以及每个文件的非所有权。有关用户和组访问权限、文件大小和上次修改时间的信息。访问权限包括对文件的读(r)写(w)执行(x)权限。控制文件访问权限可以有效防止数据泄露。有时安装新软件会自动创建同名的用户和组。这些软件一般为用户提供服务或在网络上为用户提供网络服务、邮件服务等。这些软件在其组中运行。这样,即使软件受到外界的攻击,不属于该软件的用户以外的用户的文件也无法被破坏。同样,它也会创建一个只属于这个账户的目录,以防止其他用户篡改。这些用户一般不允许登录,也不能使用密码,通过爆破密码来阻止访问计算机。下表包含有关某些用户组及其受影响的文件的信息。以下文件不建议手动编辑。最好用相关工具编辑,以免文件出错。账户配置账户基本信息账户的基本信息存放在/etc/passwd中。在这个文件中,一行存储每个用户的账户信息,账户信息由七个字段组成,以冒号(“:”)分隔,从左到右分别表示:账号、密码、用户ID、组ID,用户介绍,主目录,默认shell。1、name:password:UID:GID:GECOS:directory:shell字段详细说明如下:Account:用户名,不能为空,不能包含大写字母,必须符合标准UNIX命名规则;Password:加密后的用户密码,或者星号,但实际上这个位置通常是“x”,这里比较特殊,后面会详细介绍。UserID:每个用户和组都有对应的UID和GID(用户ID和组ID)。一般情况下,第一个非root用户的默认UID为1000,后续用户的UID也应该大于1000。具体用户的GID应该属于指定的primary组,组ID值列出在/etc/group文件中。·GroupID:用户的主要群组ID·用户介绍:可以为空,一般为账号用户的信息,如用户名,Email等,以逗号(,”)分隔·Homedirectory:used对于登录命令设置$HOME环境变量。对于某些服务,将用户的家目录设置为“/”是安全的,但不建议普通用户设置该目录。·默认shell:登录时运行的程序(如果为空,使用/bin/sh作为默认shell)。如果设置为执行不存在的(程序),则用户无法通过login登录。在新版本的Linux中使用影子文件来存储密码。passwd文件是所有人都可以读取的,将密码(加密或不加密)存储在其中是不安全的。在密码字段中,通常使用占位符(x)代替。加密后的密码存储在/etc/shadow文件中,限制普通用户访问。例子:1.jack1001JackSmith,这里有些注释,,:/home/jack:/bin/bash分解说明:用户登录名为jack,密码存放在/etc/shadow,UID为1001,ID为主要组是100(用户组),全名是JackSmith并添加了一些注释,主目录是/home/jack,使用Bash作为默认shell。账户密码信息/etc/shadow是用户存放账户安全信息的文件,包括密码、账户过期时间等设置。该文件不能被普通用户操作,在一定程度上保证了安全性。/etc/shadow文件的每一行包含9个字段,同样用冒号(“:”)分隔,分别是登录名、加密后的密码、上次修改密码时间、密码不得更改天数、密码最长使用天数、密码警告期、密码闲置期、账号过期时间、预留字段。下面详细介绍各字段的含义:·登录名:与/etc/passwd相同的账号,用于登录;·加密密码:经过crypt加密后的密码;·Lastpasswordchangetime:最后一次修改密码的日期A时间,代表从1970年1月1日算起的天数,0值有特殊含义,表示用户下次登录系统时要修改密码.空字段表示密码时效已禁用。·密码不能修改的天数:该字段表示在此天数之前不能修改密码,该天数是上次修改密码时间之间的天数。空字段和值0表示无法修改时间。·密码使用的最大天数:在此天数后用户必须更改密码。在此天数之后,密码可能仍然有效。要求用户在下次登录时更改密码。空白字段表示没有密码最长使用期限、没有密码警告期和密码闲置期(见下文)。如果密码最长使用期限小于密码最短使用期限,则用户无法更改密码。·密码警告期:在此期间,提醒用户修改密码。空字段和值为0表示没有密码警告期。·密码闲置期:密码过期后的天数(请参阅上面的密码最长使用期限),在此期间密码仍应被接受(用户应在下次登录时更新密码)。密码过期并且过了这个过期时间后,将无法使用当前用户的密码登录。用户应联系管理员。·账号有效期:该字段表示自1970年1月1日起的天数。注意账号有效期不同于密码有效期。如果帐户过期,则不允许用户登录。如果密码过期,则不允许用户使用其密码登录。空字段表示该帐户永不过期。不应使用0值,因为它将被解释为帐户已于1970年1月1日到期。·保留字段:此字段保留供将来使用,目前未启用。用户组信息Linux中每个用户必须有一个组,而且只能有一个,但可以有多个下属组。passwd文件中第四个字段设置所属组,group文件中设置从属组。Group文件的介绍与其他文件类似。组文件也是每组占一行,用冒号分成4个字段。它们是组名、密码、组ID和组中的用户。下面详细介绍各个字段的含义:·Groupname:组名·Password:类似passwd文件,加密的组用户密码,或者一个星号,但实际位置通常是“x”,比较特殊。·GroupID:群组的数字标识。·群内用户:群内所有成员的用户名,以逗号分隔。Gshadow文件介绍Gshadow文件也是每组占一行,用冒号分成4个字段。分别是组名、加密密码、管理员、成员。·组名:必须是系统中已经存在的有效组;·加密密码:经过crypt加密后的密码;·Administrator:必须是以逗号分隔的用户名列表。管理员可以更改组密码和成员资格。管理员具有与成员相同的权限成员:必须是逗号分隔的用户名列表。成员无需密码即可访问该组。查看系统被暴力破解的信息。每个用户的登录信息都会被记录下来。无论是成功还是失败,都可以使用last命令查看登录历史,lastb命令查看登录失败记录。它们最终是通过读取/var/log/wtmp和/var/log/btmp文件得到的,这两个文件都是存放utmp(在LinuxC头文件
