Linux安全基线的“灵魂拷问”:账户、密码、su、sudo,你真的配对了吗?
嗯,用户让我帮忙总结一篇文章的内容,控制在100字以内,而且不需要特定的开头。首先,我得仔细阅读这篇文章,了解它的主要观点和结构。 文章主要讨论了Linux安全基线,特别是账户安全、密码安全、su使用安全和sudo权限管理。作者提到虽然有很多关于Linux安全的文章和国际指南,但很少有人深入理解这些配置的目的。所以,文章重点探讨了这四个方面的核心风险和关键基线设计要点。 接下来,我需要提取关键信息:Linux账户分类、用户组的类型、wheel组的作用、/etc/passwd和/etc/shadow文件的结构以及密码字段的意义。此外,还提到了UID为0的风险和如何检测潜在的root权限用户。 最后,确保总结在100字以内,并且语言简洁明了。这样用户就能快速抓住文章的核心内容了。 </think> 文章探讨了Linux系统安全基线的核心问题,重点分析了账户安全、密码安全、su使用安全及sudo权限管理等方面的风险与设计要点,并介绍了用户分类、组管理及关键配置文件的作用。 2026-1-18 14:20:52 Author: www.freebuf.com(查看原文) 阅读量:0 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

摘要:网上有很多写Linux安全基线的文章,国际也有非常成熟且成体系化的安全基线配置指南(CIS-Benchmarks),但是我发现很少有人能够深入理解这些配置基线设计的目的所在。受篇幅原因,本文不会讨论所有安全配置基线设计的底层逻辑,旨在重点探讨Linux账户安全、密码安全、su使用安全以及sudo权限管理等四个方面的核心风险问题以及关键基线设计要点,希望让大家知其然也要知其所以然,并由此受到启发。

一、Linux账户安全

(一)基础知识

Linux用户分三类:超级用户(root)、普通用户、程序用户

  • 超级用户:UID=0
  • 程序用户:UID=1-499(Rhel5/6) UID=1-999(Rhel7以上)
  • 普通用户:UID=500-65535 (Rhel5/6)UID=1000-60000(Rhel7以上)

Linux用户组分为两类:基本组、附加组

  • 一个用户只能有一个基本组,最多可以有31个附加组。基本组是用户创建文件时默认的所有组,附加组主要用于权限管理。不论用户属于哪个组,用户都能拥有该组的权限。
  • wheel组是一种特殊的附加组,将普通用户加入到wheel组后,被加入的这个普通用户就成了管理员组内的用户,通过修改配置文件使得只有wheel组内的用户可以切换到root用户,确保root用户安全。

备注:wheel组是个神奇般的存在,最早能够追溯到Unix系统时代。当时系统管理员也不被允许直接用root用户登录,所以Unix的开发大神们设计了这个wheel组,只有加入这个wheel组的用户才能使用su命令切换至root用户获取最高权限。这里,在国内运营商中干过运维或者安全的小伙伴们应该特别地有发言权,因为他们的系统中很多基础账户是不允许切root账号的。

Linux系统中记录用户账号及密码的文件,我相信所有人都知道吧

  • /etc/passwd文件:用于存放用户账号名、UID、GID、宿主目录、登录shell
  • /etc/shadow文件:用于存放用户账户名、密码、密码天数、账户失效日期等

我相信只要是搞个安全运维的人,都知道Linux账户密码文件中各个字段的具体含义,但是这里还是有必要提下,越基础越需要理解,尤其是/etc/shadow文件密码前的不同符号所代表的含义,我相信这在基础面试中问到的话,会难倒一批人。

1768745176_696ce8d8e5634bd2f7d6f.png!small?1768745177392

  • 字段1:用户账号的名称
  • 字段2:密码字符串或密码占位符“X”
  • 字段3:用户账号的UID
  • 字段4:所属基本组的GID
  • 字段5:用户全名或注释
  • 字段6:用户主目录
  • 字段7:登录shell信息

1768745240_696ce91869349c14f5fd6.png!small?1768745240798

  • 字段1:用户账号的名称
  • 字段2:密码(加盐密码)如该字段是x表示用户无法登录到系统,
  • 密码前星号(*)感叹号(!)代表用户被锁定,2个感叹号(!!)表示未设置密码
  • 字段3:上次修改口令的时间(从1970年1月1日计算到最近1次修改口令时间)
  • 字段4:两次修改口令最少间隔天数,如设置为0,则表示可以随时更改
  • 字段5:密码过期时间,即两次修改口令最大间隔天数
  • 字段6:警告期,提前多少天警告用户口令即将过期
  • 字段7:宽限期,口令过期之后多少天禁用此用户
  • 字段8:用户过期日期(用从1970年1月1日开始的天数表示)0或空字符表示永不过期
  • 字段9:保留字段

(二)影子后门

一般来说,只有 root 用户的UID为0。如果将普通用户的UID 修改为0的话,那么只要以普通用户的用户名和密码登录,系统就会自动切换到root用户。我在亲身的工作经历中发现,这种现象并不是只有在黑客攻击的时候才会发生,我看到太多企业运维人员,为了图方便以及维持更高的操作权限,竟直接将普通用户的UID改为0,成功打上了root的擦边球。

root@security ~]# grep bin/bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
test:x:0:0::/home/test:/bin/bash
[root@security ~]# id test uid=0(root) gid=0(root) groups=0(root)

看到了吗?test和root用户的UID、GID都是0 ,这个风险是绝对不允许存在的,所以在安全基线核查里,大家是不是看到下面这样一句代码,这就是为了找出这些潜在的root权限用户。

[root@security ~]# awk -F : ‘($3==0){print $1}’ /etc/passwd

二、Linux密码安全

(一)基础知识

前面我提到了shadow文件中各个字段的含义,下面我们重点对第2个字段记录的密码值进行下深入研究,这里肯定涉及到加密算法了,其实就是用Linux明文密码和salt(16位随机盐值),通过函数crypt()完成加密,加密密文存储在/etc/shadow文件中,所以第2个字段的密文域由三部分组成,即:$id $ salt $encrypted

  • id=1,表示采用MD5方式进行加密,生成密文长度:22位
  • id=2,表示采

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/system/467016.html
如有侵权请联系:admin#unsafe.sh