当前位置: 首页 > Linux

Linux账号信息安全深度解析

时间:2023-04-06 20:31:00 Linux

最深入的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头文件中)结构的二进制文件。下图展示了一些通过lastb命令登录服务器失败的尝试。发现有一台IP为39.105的主机。须藤lastb|grep“39.105.202.21”|wc-l可以看到一共进行了2213次尝试,可以推测是在尝试暴力破解登录密码。也可以用last命令查看IP是否登录成功,如果是,说明用户密码一定破解成功。如果不是,不排除文件被篡改。Linux密码保护在登录输入密码时更容易出现密码泄露。传统的加密方式很容易通过彩虹表猜出密码。即使是SHA256/SHA512也可以在网上搜索在线解密网站进行解密。这种加密只要方法和密码一样,加密结果肯定是一样的,所以密码是计算一次,想破解的时候查表就可以了。今天MD5/SHA1哈希算法被攻破,加密密码前加盐也不安全了。在Linux中,使用crypt算法对密码进行加密。这种加密方式即使每次都使用相同的密码,最终的加密结果也是不同的。salt是在[a-zA-Z0-9./]中随机选取的最多16个字符的字符串,共有4096种干扰方式,很难通过字典破解密码。再计算一下。Linux中的密码以固定格式保存:id是一个数字,表示如何为密码和salt生成随机数。salt由大小写字母、数字、英文句点(.)和“/”组成,不超过16个字符。随机字节串。encrypted:是将明文密码和随机盐结合,再通过哈希函数生成的密文。不同哈希算法的密文长度如下: