什么是Linux账户以及怎么确保信息安全

本篇内容介绍了“什么是Linux账户以及怎么确保信息安全”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

账户安全的意义

什么是账户

GNU/Linux 通过用户和用户组进行访问控制,Linux 默认的访问控制机制相对简单直接。

用户一般指使用计算机的人。计算机给每个用户分配了用户名,用户使用这些名称访问计算机。除了人之外,一些系统服务也会建立账户,用于管理服务进程。

Linux默认会存在root用户,root用户拥有系统的最高权限,可以进行一切操作,而其他账号只能拥有部分权限。

Linux有组的概念,使用者可以通过修改组的权限对更多成员进行访问控制,每个用户必须是一个组的成员,这个组成为主属组,每个用户只能拥有一个主属组,但可以拥有多个从属组。

Linux通过useradd命令新增用户,通过userdel删除用户。UNIX中一切皆文件,所以最后所有的修改最终都会以文件的形式展示。你可以通过命令pwck –s检查用户配置文件(数据库)的完整性。

账户安全配置保证资产安全

Linux通过访问权限控制用户可以查看的内容,使用ls –l命令可以看到如下内容:

什么是Linux账户以及怎么确保信息安全

里面标识了每个文件的所属用户,所属组,用户访问权限,组访问权限,非所属用户和所属组访问权限,文件大小,最后修改时间的信息。访问权限包括文件的读(r)写(w)执行(x)权限。控制好文件的访问权限可以有效防止数据泄露。

有时候安装一个新的软件都会自动创建一个用户和同名的组,这些软件一般是为用户提供服务的或者为网络上的用户提供Web服务、邮件服务等,这些软件就运行在它的组里,这样即便是软件受到了外界的攻击,也无法破坏非软件所属用户之外用户的文件。同样它也会建立一个只属于这个账户的目录,防止别的用户篡改。这些用户一般都是不可登录,并且不能使用密码,杜绝了通过爆破密码进入计算机。下表是一些用户组和其影响文件的信息。

影响文件 作用
Adm 类似 wheel 的管理器群组
ftp /srv/ftp/ 访问 FTP 服务器
Games /var/games 访问一些游戏。
Log 访问 syslog-ng 创建的 /var/log/ 日志文件
http /srv/http/ 访问 HTTP 服务器文件
Sys Right to administer printers in CUPS
systemd-journal /var/log/journal//* 以只读方式访问系统日志,和 adm 和 wheel 不同 [1]. 不在此组中的用户仅能访问自己生成的信息。
Users 标准用户组
Uucp /dev/ttyS[0-9]+, /dev/tts/[0-9]+, /dev/ttyUSB[0-9]+, /dev/ttyACM[0-9]+ 串口和 USB 设备,例如猫、手柄 RS-232/串口。
Wheel 管理组,通常用于 sudo 和 su 命令权限。systemd 会允许非 root 的 wheel 组用户启动服务。

下面这些文件不建议手动编辑。用相关工具编辑更好,这样可以避免文件错误。

文件 作用
/etc/shadow 保存用户安全信息
/etc/passwd 用户账户信息
/etc/gshadow 保存组账号的安全信息
/etc/group 定义用户所属的组
/etc/sudoers 可以运行 sudo 的用户
/home/* 主目录

账户配置

账户基本信息

账号的基本信息存储在/etc/passwd。在这个文件中每个用户的帐号信息存储一行,帐号信息由七个字段组成,字段之间用冒号(":")分隔,从左至右分别表示为:帐号,密码,用户ID,组ID,用户介绍, home目录,默认shell。

1.   name:password:UID:GID:GECOS:directory:shell

字段的详细描述如下:

·    账号:用户名,不能为空,不能包含大写字母,而且要符合标准的UNIX命名规则;

·    密码:加密的用户密码,或者星号,但实际上这个位置通常为"x",这里有所特殊,后面会详细介绍

·    用户ID:每个用户和组有一个对应的UID和GID(用户ID和组ID)。一般情况,第一个非root用户的默认UID是1000,后续创建的用户UID也应大于1000,特定用户的GID应该属于指定的首要组,组的ID数值列在/etc/group文件里。

·    组ID:用户的主要组ID

·    用户介绍:可为空,通常为账号使用者的信息,如使用者姓名,Email等,使用英文逗号(",")分割

·    home目录:用于登录命令设置$HOME环境变量。某些服务的用户主目录设置为"/"是安全的,但不建议普通用户设置为此目录。

·    默认shell:登录时运行的程序(如果为空,则使用 /bin/sh作为默认shell)。 如果设为不存在的执行(程序),用户不能通过login登录。

在新版Linux中使用shadow文件存储密码。passwd文件对所有人可读,在里面存储密码(无论是否加密过)是很不安全的。在password字段,通常使用一个占位字符(x)代替。加密过的密码储存在/etc/shadow文件,该文件对普通用户限制访问。

示例:

1.   jack:x:1001:100:Jack Smith,some comment here,,:/home/jack:/bin/bash

分解说明:用户登录名为jack,密码保存在/etc/shadow,UID为1001,首要组的ID是100 (users组),全名Jack Smith并加了一些注释,主目录是/home/jack,使用Bash作为默认shell。

账户密码信息

/etc/shadow是用户存储账号安全信息的文件,其中包括密码、账号过期时间等设置,此文件是普通用户无法进行任何操作,在一定程度上保证了安全。

/etc/shadow文件每行包含9个字段,同样使用冒号(":")分隔,分别为登录名,加密密码,上次密码更改时间,密码不得更改天数,最长密码使用天数,密码警告期,密码闲置期,账户到期时间,保留字段。下面详细介绍每个字段的意义:

·    登录名:与/etc/passwd的账号相同,用于登录使用;

·    加密密码:经过crypt加密后的密码;

·    上次密码更改时间:最后一次修改密码的时间,表示自1970年1月1日以来的天数。值0具有特殊含义,即用户下次登录系统时应更改其密码。空字段表示密码老化功能已禁用。

·    密码不得更改天数:此字段表示在此天数之前不能修改密码,是与上次密码更改时间的间隔天数。空字段和值为0表示没有任何时间都可以修改。

·    最长密码使用天数:用户经过此天数必须修改密码。经过此天数后,密码可能仍然有效。需要用户在下次登录时更改其密码。空字段表示没有最长密码使用期限,没有密码警告期和密码闲置期(请参阅下文)。如果最大密码使用期限小于最小密码使用期限,则用户无法更改其密码。

·    密码警告期:在此期间提醒用户修改密码,空字段和值为0表示没有密码警告期。

·    密码闲置期:密码过期后的天数(请参见上面的最长密码使用期限),在此期间仍应接受密码(用户应在下次登录时更新其密码)。密码过期且经过了此过期时间后,将无法使用当前用户的密码登录。用户应联系管理员。

·    账户到期时间:此字段表示自1970年1月1日以来的天数。请注意,账户有效期与密码有效期不同。如果账户到期,则不允许用户登录。如果密码到期,则不允许用户使用其密码登录。空字段表示该账户永不过期。不应使用值0,因为它将被解释为账户于1970年1月1日到期。

·    保留字段:该字段保留供将来使用,现在暂未启用。

示例:

1.   jack:$6$atIauuQ5$mh7ombrRsUxHxJ8uZGerdSUXSuBiOAzkfRgn2wrR69K5IbOANpHlBeY43BqmNkPy7Ho3XrGKu6CGIxc9nqjiS/:18303:1:10:7:7::

分解说明:登录名为jack,加密后的密码为$6$atIauuQ5$mh7ombrRsUxHxJ8uZGerdSUXSuBiOAzkfRgn2wrR69K5IbOANpHlBeY43BqmNkPy7Ho3XrGKu6CGIxc9nqjiS/,最后一次修改密码时间为2020年02月11日,2020年02月12日前不能修改密码,2020年02月21日后必须要修改密码,从2020年02月14日起登录系统会要求必须修改密码,在2020年02月28日前密码仍能使用,但登录系统后必须修改密码,否则在2020年02月28日后账户再也不能登录,未设置账户到期时间。

用户组信息 

Linux中每个用户都必须有一个所属组,并且只能有一个,但可以有多个从属组。所属组在passwd文件中的第四个字段设置,从属组在group文件中设置。

Group文件介绍 

与其他文件类似,group文件同样是每个组占用一行,并使用冒号分割为4个字段。分别为组名,密码,组ID,组中用户。下面详细介绍每个字段的意义:

·    组名:组名

·    密码:与passwd文件类似,加密的组用户密码,或者星号,但实际这个位置通常为"x"有所特殊。

·    组ID:组的数字标识。

·    组中用户:组内所有成员的用户名,以逗号分隔。

Gshadow文件介绍 

Gshadow文件同样是每个组占用一行,并使用冒号分割为4个字段。分别为组名,加密密码,管理员,成员。

·    组名:必须是系统中已经存在的有效组;

·    加密密码:经过crypt加密后的密码;

·    管理员:必须是一个逗号分隔的用户名列表。管理员可以更改组密码和成员。管理员也有成员一样的权限

·    成员:必须是一个逗号分隔的用户名列表。成员可以免密码访问组。

查看系统被暴力破解的信息

每个用户的登录信息都会被记录,无论是成功还是失败,可以通过命令last命令查看登录历史,lastb命令查看登录失败的记录。它们最终是通过读取/var/log/wtmp和/var/log/btmp文件获得的,这两个文件都是二进制文件,里面存储的是utmp(在Linux C头文件<utmp.h>中)结构体。

下图是部分通过lastb命令查到的尝试登录服务器的部分失败记录,其中发现一台IP为39.105.202.21的主机在3月7日12点到14点之间多次次尝试登录主机,通过命令sudo lastb | grep "39.105.202.21" | wc -l可以查看其一共进行了2213次尝试,可以推测其在尝试暴力破解登录密码。

什么是Linux账户以及怎么确保信息安全什么是Linux账户以及怎么确保信息安全

也可以同last命令查看这个IP是否成功登录,如果有则说明用户密码一定被成功破解了,如果没有不排除文件被篡改过。

 Linux密码防护

在登录输入密码时比较容易出现密码泄露,传统的加密方法,通过彩虹表可以很容易猜解密码,即使是SHA256/SHA512也可以在互联网上搜索到在线解密网站进行解密,这类加密方式只要密码一样加密结果必然雷同,所以密码被计算一次,想要破解的时候再查表就可以了。如今,MD5/SHA1 哈希算法已经被攻破,即使在加密密码前加上盐以后也不再保险 。

而在Linux中使用crypt算法对密码进行加密,这种加密方式即使每次都使用相同的密码,最后加密的结果都是不同的。salt是[a-zA-Z0-9./]中随机挑选的最多16位字符串,总共4096种的干扰方式,这就使得通过字典破解密码变得比较困难,每次破解一个密码都需要重新计算一遍。

Linux中的密码按固定的格式保存:

$id$salt$encrypted

id是一个数字,表示以何种方式对密码和salt生成随机数

ID  Method
1  MD5
2a  Blowfish (不在主线glibc中;在某些Linux发行版中添加)
5  SHA-256 (从glibc 2.7起)
6  SHA-512 (从glibc 2.7起)

salt是由大小写字母、数字、英文句号(.)和“/”组成的不超过16字节的随机字符串。

encrypted:是由明文密码和随机salt通过组合,再通过散列函数后生成的密文,不同散列算法的密文长度如下:

算法 长度
MD5  22字符
SHA-256  43字符
SHA-512  86字符

“什么是Linux账户以及怎么确保信息安全”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/229146.html

(0)
上一篇 2022年1月12日
下一篇 2022年1月12日

相关推荐

发表回复

登录后才能评论