Sudo配置典型提权场景列举

举报
ACBD 发表于 2021/06/28 09:50:38 2021/06/28
【摘要】 概述       程序在运行过程中,需要使用最小化权限进行控制,以符合安全规范,所以一般程序都是以普通用户调用起来使用。有些时候,程序需要完成只有root权限才能完成的任务,这个时候就需要来使用sudo来达成目的。        不使用su命令切换到root来达成目的的原因是:如果这么使用,一方面容易导致root密码管理问题(比如修改后需要通知应用程序,应用程序存储root密码也容易泄露)。...

概述

       程序在运行过程中,需要使用最小化权限进行控制,以符合安全规范,所以一般程序都是以普通用户调用起来使用。有些时候,程序需要完成只有root权限才能完成的任务,这个时候就需要来使用sudo来达成目的。

        不使用su命令切换到root来达成目的的原因是:如果这么使用,一方面容易导致root密码管理问题(比如修改后需要通知应用程序,应用程序存储root密码也容易泄露)。另一方面不符合业务权限最小化原则,一旦应用程序存在安全问题则会直接导致root账号被控制。

        Sudo的初衷是为了解决安全问题,所以在sudo的使用过程中,尤其注意不要引入新的安全配置问题。

使用方式

sudo配置文件:/etc/sudoers/etc/sudoers文件中include指令包含的文件,/etc/sudoers文件中includedir指令包含的目录(默认/etc/sudoer.d)下的文件。

sudo配置文件中进行sudo命令的配置。

问题场景

1.      禁止配置允许执行所有命令

检查文件中不能存在以下的配置,XXXUser为普通用户名称。

XXXUser ALL=(ALL) NOPASSWD: ALL

2.      禁止黑名单方式进行sudo配置

黑名单配置方式来实现sudo,这种方式允许使用较多系统命令且未进行参数校验,大大增加了提权风险,且黑名单使用不当,容易导致黑名单失效,而且攻击者可以通过重命名的方式绕过限制。

ubuntu ALL=(ALL) NOPASSWD: !/bin/cat,/bin/

ubuntu ALL=(ALL) NOPASSWD: /bin/,!/bin/ls

ubuntu ALL=(ALL) NOPASSWD: /bin/,!/bin/which,/bin/cat

ubuntu ALL=(ALL) !/bin/cat,/bin/

ubuntu ALL=(ALL) /bin/,!/bin/ls

ubuntu ALL=(ALL) /bin/,!/bin/which,/bin/cat

3.      禁止sudo命令及其参数中使用统配符*

ubuntu ALL=(ALL) NOPASSWD: /bin/ls *,/bin/ls /var/log/* ,/usr/bin/ls /root/* -type f,/bin/c*

4.      禁止使用传入参数构建命令或进行危险操作

ubuntu ALL=(ALL) NOPASSWD: /bin/cat root.conf,/bin/cat dir_root/root.conf

5.      禁止配置低权限用户可控的目录或可执行文件

       文件/目录的属主必须为root且文件/目录权限必须不大于755。即低权限用户没有写权限。如果脚本/命令为软硬链接文件,则还应关注所链接目标的权限。

       文件/目录的所有层级的上层目录(父目录一直向上到根目录),属主必须为root且权限必须不大于755。即低权限用户没有写权限。如果文件/目录为软硬链接文件,则链接目标的所有层级的上层目录也必须符合要求。

ubuntu ALL=(ALL) NOPASSWD:/root_script/ubuntu/dir_right/dir_root/dir_root/noexist.sh

6.      禁止读写执行低权限用户可控的子文件

走读配置的自定义脚本、目录中的所有自定义脚本的源码,查看是否直接或间接读写执行低权限用户可控的文件/目录

7.      禁止配置的命令受环境变量影响

ubuntu ALL=(ALL) NOPASSWD: cat /bin/test.sh

这里的cat命令,当$PATH变化时,都可能被篡改,所以正确的配置是:

ubuntu ALL=(ALL) NOPASSWD: /sbin/cat /bin/test.sh

8.      其他非sudo提权场景

  1. root用户的PATH变量
  2. 定时任务Crontab –l
  3. 自定义suid/sgid文件文件
  4. ALWAYS_SET_PATH=yes变量
  5. 开机自启动任务检查
  6. logrotate任务配置的脚本或程序权限检查

高危命令

高危命令配置后,需要谨慎检查提权问题。常见的limit command20个,forbidden command33个。且不识别命令是否有配置参数。

limit command: /usr/bin/awk,/bin/cat,/bin/cp,/bin/dd,/bin/egrep,/bin/fgrep,/bin/grep,/bin/gunzip,/bin/gzip,/bin/mount,/bin/mv,/bin/rm,/bin/stty,/bin/tar,/sbin/fdisk,/usr/bin/head,/usr/bin/killall,/usr/bin/pkill,/usr/bin/rview,/usr/bin/tail

forbidden command: /bin/bash,/bin/chgrp,/bin/chmod,/bin/chown,/bin/kill,/bin/more,/bin/sed,/bin/sh,/bin/su,/sbin/ethtool,/sbin/halt,/sbin/ifconfig,/sbin/init,/sbin/insmod,/sbin/mkfs,/sbin/poweroff,/sbin/reboot,/sbin/route,/sbin/shutdown,/sbin/sysctl,/usr/bin/crontab,/usr/bin/find,/usr/bin/less,/usr/bin/passwd,/usr/bin/perl,/usr/bin/sudo,/usr/bin/vi,/usr/bin/view,/usr/bin/vim,/usr/sbin/groupadd,/usr/sbin/groupdel,/usr/sbin/logrotate,/usr/sbin/useradd,/usr/sbin/userdel


想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。