禁用/禁止/阻止sudo -i,sudo -s,sudo su,su等获得root账户权限。

/etc/sudoers添加一段代码,可以使个体用户获得sudo的运行权限    

USERNAME ALL=(ALL:ALL) ALL

但是为了安全,我们就会想到禁用
sudo -isudo -ssu等等
可以进入root权限的命令
我所使用的系统是Archlinux
与你们可能会有不同,所以我的方式
不一定适用于所有发行版。😳
首先得先知道每段命令的意义:
(ALL代表全部)
USERNAME:用户名
第一ALL:可以使用的主机/主机名
第二ALL:可以切换的用户
第三ALL:与第二ALL用:分割,代表可切换哪些组下的用户,这个可以不添加
第四ALL:代表可以执行的命令🤔

我们的目的是阻止sudo -i,sudo -s
su等切换root的指令。
su的解决办法简单😁,直接     

USERNAME ALL=(ALL:ALL) ALL , !/*/su

再使用

passwd -l root

锁定root账户
解锁root账户时使用   

 passwd -u root

(注意:在执行之前,请确保其它账户可以使用超级管理或权限与超级管理一样高,否则,改不回去就不好了😮,虽然不是彻底没救😐。更改root密码同样会导致root账户被解锁)😥
或者
编辑/etc/shadow,将root用户的加密口令列替换为"!"

root:!:12345::::::

要再次启用sudo,重新设置其密码即可:

passwd root

参考:Archlinux中文维基,Sudo​​​​​​icon-default.png?t=N7T8https://wiki.archlinuxcn.org/wiki/Sudo

  • 接下来就是解决sudo -isudo -s的问题

在我的使用过程中,发现
执行sudo -i,时会使用/usr/bin/bash🤔
然后我就在第四ALL的后面加上了
!/*/bash,使用","与ALL隔开,
添加完之后长这样

USERNAME ALL=(ALL:ALL) ALL , !/*/su , !/*/bash

除了su,bash,其他都可以运行
可执行特定指令是这样    

USERNAME ALL= (ALL:ALL) /*/bash

除了bash,其他都不可以运行。
没错,"!"的意思在这里是否定的意思。添加了它之后可执行的命令就会不可执行。
并且,命令是执行某样程序,所以要加上绝对路径(/xxx/xxx/...)
这样,sudo -i,sudo -s就无法运行了,但是仅仅只是在这个shell无法运行,如果你更换shell,你就会发现,
sudo -i,sudo -s仍然可以运行。😨
然后,
我发现,大部分的shell名称中都包含sh
因此将!/*/bash替换为

!/*/*sh*

就可以阻止大部分shellsudo运行了,当然可以不替换。🤣
当然,你要是想指定某一shell可以运行,
请在!/*/*sh*/后面添加/*/<指定shell/程序>

这样也给被名字中带sh的其他程序一个公道。

(注意:一定要在后边添加,因为后边的会覆盖前面的。)

为什么不添加?😳

!/*/sudo -i , !/*/sudo -s

因为,它们无法被阻止,不知道为什么😥,添加之后,它们仍然可以运行。
这样虽然可以解决大部分shell
但是就怕名字中没有shshell。😭

——————————

知道我为什么在路径中使用"*"吗?🥴
shell引用的是/usr/bin里边的程序
但是程序可不仅仅只在/usr/bin里啊
比如/bin,/sbin,
你仍然可以在它们中见到
/usr/bin中的程序,😦
这导致你可以手动使用
绝对路径(/xxx/xxx/...)
运行它们。😅
但是在路径中加入"/*/"后面接上程序名
之后就无法通过绝对路径(/xxx/xxx/...)使用它们🤣👉🖥️

关于可以写一个程序来获取类似su的权限
或者
关于可以使用编辑器修改
/etc/sudoers,/etc/sudoers.d
又或者是直接通过
/etc/passwd修改用户权限
passwd -u root解锁root账户,🧐
我的解决办法是🤔   

USERNAME ALL=(ALL:ALL) ALL,!/*/passwd ,!/*/* /etc/passwd , !/*/* /etc/sudoers , !/*/* /etc/sudoers.d/* , !/*/chmod
#阻止passwd;阻止sudo通过任何程序修改passwd,sudoers和sudoers.d里边的文件;阻止chmod

`(注意:禁用passwd -u是没用的,因为更改密码同样可以导致root用户被解锁)` 
`(注意:"/*/*"是刻意为之,因为"/*"不起效果,至少得是"/*/*",可以更长)`

能帮我指出漏洞就好了🤗
我会尽力寻找完美的办法的。😋

图片来源:

ba弔图 - 哔哩哔哩 (bilibili.com)

ba弔图9 - 哔哩哔哩 (bilibili.com)

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值