Linux服务器上的sudo系统是控制用户是否可以执行管理任务的方法,而且这个工具在很长一段时间内都运行得很好。成都联想服务器然而,就像现在一样,sudo也承受了很多批评的压力。最大的问题之一是粒度控制。例如,如果您让用户在系统上使用sudo,他们总是可以发出以下命令:
sudo rm -rf /
而这个命令将删除系统中的所有内容。
当然,在现代的Linux发行版中,运行上述命令会导致一个警告,表明该命令操作是危险的。但即使有了警告,sudo也会允许对机器进行全盘破坏。
以上是在sudo 1.9版本之前。
在sudo 1.9中,系统得到了一系列的改进。其中一个改进是及时命令审批,通过策略的方式,让第三方插件帮助提高安全性。
今天我们来演示如何使用新的策略系统,这使得控制用户可以使用sudo运行的命令变得非常容易。
这里将在Ubuntu 18.04上进行演示。目前,sudo 1.9可以安装在Ubuntu 20.04中,但是插件系统不起作用。因此,我们将继续使用以前的LTS版本。
Sudo 1.9可以在其他发行版上安装,但只测试过Ubuntu 18.04。
1、如何安装sudo 1.9
您必须做的第一件事是安装sudo 1.9。但是,在执行此操作之前,强烈建议您确保您有权访问root帐户。如果不这样做,您可能会遇到损坏的sudo系统。您可能会在测试环境中进行此操作,因此可以在Ubuntu上为根用户提供密码。为此,请打开一个终端窗口并发出命令:
sudo passwd root
系统将提示您输入并验证新密码。
现在,回到终端窗口,使用以下命令下载必要的.deb文件:
wget https://www.sudo.ws/sudo/dist/packages/1.9.0/sudo_1.9.0-1_ubu1804_amd64.deb
wget https://www.sudo.ws/sudo/dist/packages/1.9.0/sudo -ldap_1.9.0-1_ubu1804_amd64.deb
wget https://www.sudo.ws/sudo/dist/packages/1.9.0/sudo-logsrvd_1.9.0-1_ubu1804_amd64.deb
wget https://www.sudo.ws/sudo /dist/packages/1.9.0/sudo-python_1.9.0-1_ubu1804_amd64.deb
使用以下命令安装这些软件包:
sudo dpkg -i *.deb
安装完成后,就可以进行测试了。
2、如何测试python插件
我们要做的是测试新的python模块,该模块将阻止所有(非root用户)运行除id以外的任何命令。这是令人难以置信的限制,但是它向您展示了新系统的功能。
为此,首先使用命令更改为root用户:
su
使用以下命令创建新策略:
nano /root/policy.py
在该文件中,粘贴以下内容:
import sudo
class SudoPolicyPlugin(sudo.Plugin):
def check_policy(self, argv, env_add):
cmd = argv[0] # the first argument is the command name
if cmd != id: # Example for a simple reject:
sudo.log_error(You are not allowed to run this command!)
return sudo.RC.REJECT
command_info_out = ( # setup command to execute
command=/usr/bin/id, # Absolute path of command
runas_uid=0, # The user id
runas_gid=0) # The group id
return(sudo.RC.ACCEPT, command_info_out, argv, env_add)
保存并关闭文件。
上面的代码的重要部分是:
if cmd != id: # Example for a simple reject:
sudo.log_error(You are not allowed to run this command!)
return sudo.RC.REJECT
这实际上是说如果一个命令不是id,就打印出 You are not allowed to run this command!的错误。最后,它使用RC.REJECT来拒绝任何不是id的命令。
现在我们需要启用此策略。使用以下命令打开sudo配置文件:
nano /etc/sudo.conf
在该文件中,找到以下部分:
Plugin sudoers_policy sudoers.so
Plugin sudoers_io sudoers.so
注释掉第一行并添加新行,因此它将类似于:
#Plugin sudoers_policy sudoers.so
Plugin sudoers_io sudoers.so
Plugin python_policy python_plugin.so ModulePath=/root/policy.py ClassName=SudoPolicyPlugin
保存并关闭文件。
3、如何测试新政策
现在,您需要打开一个新终端或使用新实例通过SSH进入服务器。完成此操作后,发出命令:
sudo ls
然后,您将看到不再被允许运行该命令。
sudo 1.9禁止运行任何命令,但id禁止。
但是,如果发出id命令,则会看到它起作用。
id命令仍然有效。
需要注意的是(这是为什么您必须为root用户提供密码),这是一个令人难以置信的限制。该策略基于example_policy_plugin.py,您会在其中注意到以下行:
_allowed_commands =(“ id”,“ whoami”)
您可以始终使用example_policy_plugin.py脚本,并在其中添加任何您想允许的命令(以减少限制)。如果确实使用example_policy_plugin.py,请确保更改/etc/sudo.conf中的策略条目。
以上就是您使用sudo 1.9中的新策略系统的方式。
成都联想代理www.lenovocd.com【公司名称】成都鸿盛广达科技有限公司
【代理级别】成都联想服务器总代理
【销售经理】成都鸿盛广达科技有限公司
【联系方式】座机:028-85952921 手机:13981931555
【公司地址】成都市武侯区人民南路四段一号时代数码广场A座17楼