CentOS 之 sudo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 之 sudo相关的知识,希望对你有一定的参考价值。

参考技术A 1、概念

su使用起来非常方便,但同样也存在安全隐患。在一台服务器上面,如果有多人使用,在使用su命令切换到root后,则大家都知道了root密码,那么以后其他用户均可以以root用户身份登录和维护服务器,则安全策略形同虚设了。那该如何是好?Linux系统中则提供了另外一个命令 sudo 。

sudo配置文件默认权限为440

[root@shell ~]#

[root@shell ~]# ll   /etc/sudoers

2、sudo 用法

sudo主要功能是以其他用户身份执行命令,而要输入的密码也仅仅是当前用户身身的密码而非root账户密码,类似于Windows系统中的 以管理员身份运行 。其常用用法如下所示:

sudo [选项] [命令]

常用选项如下所示:

3、执行流程

1)当用户执行sudo时,系统会在 /etc/sudoers 文件查找该用户是否有执行sudo的权限。

2)若用户拥有执行sudo权限后,则输入用户自身的密码确认

3)若密码确认成功,即可执行sudo后面的命令

4)若切换身份与执行者身份相同,则无需要输入密码

    基于以上流程,能否使用sudo则要看 /etc/sudoers 中的设置

4、sudo 配置

修改 /etc/sudoers,不建议直接使用 vim,而是使用 visudo。因为修改 /etc/sudoers 文件需遵循一定的语法规则,使用 visudo 的好处就在于,当修改完毕 /etc/sudoers 文件,离开修改页面时,系统会自行检验 /etc/sudoers 文件的语法。

[root@shell ~]#

[root@shell ~]# visudo                 #配置sudo

1) 这样我们就可以使用sudo了,我们需要输入普通用户ctsi自己的密码

输入过密码后我们就可以直接使用 ls/cat/mv 这些命令了

[ctsi@shell root]$

[ctsi@shell root]$ sudo  ls                      #以ctsi的身份执行 ls

[ctsi@shell root]$

[ctsi@shell root]$ sudo  cat  anaconda-ks.cfg             #以ctsi的身份执行 cat

2)设置用户免密码执行sudo命令

在准备执行的sudo命令前边增加 NOPASSWD:   即可

[root@shell ~]#

[root@shell ~]# visudo                #配置sudo

## Allow root to run any commands anywhere                 #定位到这一行,在这一行下边添加配置内容即可

root    ALL=(ALL)      ALL                                            #默认存在

ctsi     ALL=(ALL)      NOPASSWD: /usr/bin/ls,/usr/bin/cat,/usr/bin/mv                    ##增加的免密码执行sudo命令的内容

[ctsi@shell root]$

[ctsi@shell root]$ sudo   ls                   #严重免密码执行 sudo

5、sudo 权限用户组设置

有时我们需要为很多用户添加sudo权限,此时可以通过组来实现

前提是这些用户执行的sudo命令是一样的

把需要执行同样的权限的普通用户,添到同一个组中

比如:用户 user1 和 用户 user2 执行的sudo命令和用户ctsi是一样的,那么我们就可以将 user 和 user2 加入到ctsi组:

[root@shell ~]#

[root@shell ~]# visudo

6、定义别名

CentOS7 Sudo本地提权漏洞修复实践

更多技术干货,第一时间送达

CentOS7 Sudo本地提权漏洞修复

CentOS7 Sudo本地提权漏洞修复实践

Sudo本地提权漏洞漏洞概述

最近国外研究团队披露出sudo堆溢出漏洞,漏洞编号:CVE-2021-3156,普通用户可以通过利用此漏洞,在默认配置的 sudo 主机上获取root权限。

  • 漏洞详情

Sudo是一个功能强大的实用程序,大多数基于Unix和Linux的操作系统都包含Sudo。它允许用户使用其他用户的安全特权运行程序。

该漏洞已经隐藏了将近十年。它于2011年7月引入(commit:8255ed69),从1.8.2到1.8.31p2的所有旧版本以及从1.9.0到1.9.5p1的所有稳定版本的默认配置均受影响。

成功利用此漏洞,普通用户都可以在易受攻击的主机上获得 root 特权 

2021年1月26日,Sudo发布安全通告,修复了一个类Unix操作系统在命令参数中转义反斜杠时存在基于堆的缓冲区溢出漏洞。

当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。

只要存在sudoers文件(通常是/etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。

  • 风险等级:高风险

  • 漏洞风险: 攻击者可利用该漏洞提升权限且poc已公开

  • 影响版本

Sudo 1.9.0 到 1.9.5p1 所有稳定版(默认配置)

Sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置)

  • 安全版本:Sudo 1.9.5p2或更新版本

漏洞检测方法

1、以非root账户登录系统运行如下命令:

sudoedit -s /

若返回如图以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。

不受影响的系统将显示以“ usage:”开头的错误响应。

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

1)若受影响,错误信息会出现如下提示

sudoedit: /: not a regular file

2)若已安装修复补丁,错误信息则是

usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p

                prompt] [-T timeout] [-u user] file ...

修复建议

目前Redhat等Linux厂商已经紧急发布修复补丁,涉及各个版本系统,建议尽快升级相关补丁。CentOS 系统用户:

1)CentOS 6:默认 sudo 在受影响范围,CentOS官方已停止更新。

2)CentOS 7:升级到 sudo-1.8.23-10.el7_9.1 或更高版本

木有也有不升级的处理方法,但太麻烦,建议直接升级sudo解决

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

CentOS7修复该漏洞的步骤实践

1、yum在线升级sudo

yum makecache fast
yum search sudo
yum install sudo

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

可以在yum源站点update仓库里看到1/26号刚更新了这个sudo版本

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

2、验证sudo版本及再次进行检测 这时其它sudo用户再使用

sudo -V
sudoedit -s /

(图片可放大查看)

可以看到显示的是usage:开头的内容,说明漏洞已经修复

3、使用如下命令可以看到sudo的rpm包的更新记录说明 可以看到已经修复了该CVE-2021-3156漏洞

rpm -q --changelog sudo | head

(图片可放大查看)

漏洞细节可以参考如下链接:

https://www.sudo.ws/alerts/unescape_overflow.html

https://access.redhat.com/security/vulnerabilities/RHSB-2021-002

以上是关于CentOS 之 sudo的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7 +vsftpd 之 匿名

centos7与centos6常用命令不同之处汇总

Postfix部署之CentOS 7安装

云原生之使用docker部署centos系统测试环境

centos之tomcat安装

linux自学之开始centos学习,更换yum源