Linux命令sudo实现集权(提权)管理,防止超级权限泛滥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令sudo实现集权(提权)管理,防止超级权限泛滥相关的知识,希望对你有一定的参考价值。

sudo小结
1、别名要用大写
2、使用“\”换行
3、使用白名单策略,尽量不要赋予ALL权限(建议先关后开)
4、禁止的权限放在最后,允许的权限放在前面,sudoers配置文件的权限匹配时从后到前的
5、成员必须是存在的(用户必须存在)
6、“!”表示禁止权限
7、命令、组员、组等,用“,”分隔开(英文逗号)
8、组前面一定要带“%”

su命令缺点
1、普通用户需要知道root密码,并且切换到root用户下,才能使用root权限(超级权限)
2、普通可以修改root密码
3、超级权限泛滥,容易造成人为重大失误,导致系统崩溃或数据损失
4、建议:如果是中小型公司,不超过3个管理员时,为了管理方便,使用su来共同管理是可以接受的。(个体越多,人为出错概率越大)

sudo命令优点
1、普通用户不需要知道root密码
2、不需要切换到root用户,就可以使用超级权限
3、可控制用户拥有哪些超级权限(授权,提权)
4、对权限精细化管理,防止超级权限泛滥;比如:对权限进行分类,不同部门使用不同的超级权限;只需对应开放满足每个部门不同员工等级完成其工作的超级权限。

sudo命令原理
技术分享图片

sudo的参数
-l:查看用户自己拥有的sudo权限

[[email protected] ~]# sudo –l
……
户 YWchuji01 可以在该主机上运行以下命令:
    (root) /usr/bin/free, /usr/bin/iostat, /usr/bin/top, /bin/hostname,
    /sbin/ifconfig, /bin/netstat, /sbin/route

-u:指定以某个用户身份(角色,在配置有多个角色的情况下使用)执行特定的命令操作

[[email protected] ~]$ sudo -u ricky free
对不起,用户 YWchuji01 无权以 ricky 的身份在 bogon 上执行 /usr/bin/free。 (因为sudoers配置文件中该用户只配置了一个角色root,并没有ricky,所以无权限)
[[email protected] ~]$ 

-k :删除时间戳,下一个sudo命令要求提供密码;前提是该用户授权中不能有"NOPASSWD:"参数。时间戳默认5分钟也会失效

[[email protected] ~]$ sudo -k
[[email protected] ~]$ 

visudo –c:检查/etc/sudoers配置文件语法(如果使用visudo编辑,那么会自动检查语法,如果使用vi/vim等其它编辑器编辑,需要使用visudo –c检查语法,否则可能会导致故障出现;sudoers配置文件失效,所有用户都无法使用sudo权限)

[[email protected] ~]# visudo -c
/etc/sudoers:解析正确
[[email protected] ~]#

sudo配置文件
如果是服务器集群共用一台服务器的sudoers配置文件,可以使用分发软件把sudoers配置文件分发出去实现。
授权:

oldboy ALL=(ALL) /usr/sbin/useradd
root    ALL=(ALL)       NOPASSWD: ALL

用户/组/User_Alias 机器/Host_Alias = (角色/Runas_Alias) 命令/Cmnd_Alias

用户/组/别名:对哪个用户或组或别名下的用户进行授权,组前一定要加“%”
机器(主机名):即在哪些主机上执行sudo权限,可以通过ALL来匹配所有主机,一般都是使用ALL;
角色:执行sudo命令权限的用户身份,即提权到某个用户,一般都是root执行;也可以定义其它用户或多个用户来执行;ALL是匹配所有用户。
命令:授权给用户的超级权限,必须是绝对路径;定义时也可以使用正则:/usr/bin/passwd [A-Za-z]*(可以修改用户密码,但只能是英文大小的用户)

例子:

[[email protected] ~]# visudo
User_Alias CJYW=%YWCHUJI,YWchuji01,YWchuji02

Runas_Alias OP=root

Cmnd_Alias    CJYW_CMD=/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,!/bin/netstat,!/sbin/route

CJYW  ALL=(OP)  CJYW_CMD

以上是关于Linux命令sudo实现集权(提权)管理,防止超级权限泛滥的主要内容,如果未能解决你的问题,请参考以下文章

linux CVE-2019-14287 Sudo提权漏洞

Linux安全之提权命令

Linux提权之sudo提权

Linux提权之sudo提权

Linux提权之sudo提权

5. ansible之sudo提权