Sudo配置典型提权场景列举
概述
程序在运行过程中,需要使用最小化权限进行控制,以符合安全规范,所以一般程序都是以普通用户调用起来使用。有些时候,程序需要完成只有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提权场景
- root用户的PATH变量
- 定时任务Crontab –l
- 自定义suid/sgid文件文件
- ALWAYS_SET_PATH=yes变量
- 开机自启动任务检查
- logrotate任务配置的脚本或程序权限检查
高危命令
高危命令配置后,需要谨慎检查提权问题。常见的limit command有20个,forbidden command有33个。且不识别命令是否有配置参数。
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级数仓黑科技,后台还可获取众多学习资料哦~
- 点赞
- 收藏
- 关注作者
评论(0)