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本地提权漏洞修复
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:”开头的错误响应。
(图片可放大查看)
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修复该漏洞的步骤实践
1、yum在线升级sudo
yum makecache fast
yum search sudo
yum install sudo
(图片可放大查看)
(图片可放大查看)
可以在yum源站点update仓库里看到1/26号刚更新了这个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的主要内容,如果未能解决你的问题,请参考以下文章