Linux sudo详解

先说一下为什么最近一直在学Linux的相关内容,其实也并没有偏离之前的想法,对于Linux的运用还是很重要的,如果连运维对服务器做了什么都不清楚还谈什么其他操作。

目录

0x01 介绍

0x02 别名

0x03 授权规则

0x04 注意事项

0x05 sudo命令用户行为日志审计

0x01 介绍

sudo的配置文件是/etc/sudoers,在sudoers中每一行就是一个规则,当规则超过一行的话,可以使用“”来进行续行,它的规则大致可分为两类,一类是别名定义,另一类是授权规则,别名定义并不是必须的,只是在授权规则多的时候会更加方便,授权规则是必须的。

0x02 别名

别名类型主要包括以下四种

Host_Alias  主机别名User_Alias  用户别名Runas_Alias  用户身份别名Cmnd_Alias  命令别名

Host_Alias

主机别名是指定要在哪一个主机上生效,我们一般是不用的,只有在共享的多系统中才会使用到,使用ALL就可以了,它对应的是第一个ALL

定义的格式是这样的

Host_Alias FILESERVERS = fs1, fs2

User_Alias

用户别名是指定生效用户的,它可以针对用户也可以针对用户组,如果是用户组的话,前面需要加%

定义格式是这样的

User_Alias ADMINS = admin, balabala, %groupname

Runas_Alias

用户身份别名即sudo允许切换到的用户身份

定义格式是这样的

Runas_Alias OP = root, wuxin

Cmnd_Alias

命令别名就是定义一组相关命令的集合

定义格式是这样的

Cmnd_Alias PROCESSES = /bin/nice, /bin/kill

那么我们什么时候使用这些别名呢,一般是有多个系统用户,需要进行分类和分层次管理的时候才需要使用,至于如何配置就按照实际需求来进行更改就可以了,其实就是把一大堆的命令内容缩减为简单的变量。

0x03 授权规则

对于规则来说,看看前面的例子就很明确了,之前的文章也提到了每一项所代表的含义,下面举一个例子就很明确了

我们先进行一下编辑操作

然后我们切换到test用户下,查看一下可以执行的命令

可以看到执行权限和可以执行的命令,而且想要切换到root用户是需要密码的,这样就实现了一个简单的权限区分,比如区分开发和运营等的权限

如果我们去掉test用户,在执行sudo的时候就不会运行执行了

0x04 注意事项

1.授权规则里的ALL,必须为大写字母

2.Cmnd_Alias执行命令是有顺序的,命令的顺序是从后向前的,尽量把禁止的命令放在后面

3.如果内容超过了一行一定要使用“”来换行

0x05 sudo命令用户行为日志审计

sudo命令日志审计,并不记录普通用户的普通操作,而是记录执行sudo命令的用户操作

第一个方法是,通过环境变量及rsyslog服务进行全部日志审计,这样的做的问题就是产生的信息量太大,所以不推荐这么做。

第二个方法,sudo配合rsyslog服务进行日志审计,信息量还是比较少的,效果还可以

第三个方法,在bash解释器程序中嵌入一个监视器,让所有被审计的系统用户使用修改过的bash程序作为解释程序

第四个方法,开源的跳板机jumpserver(python)

第五个方法,花钱买商业版的服务

这里用第二个方法来说明

首先我们先编辑一下rsyslog.conf文件

在其中添加一行代码

然后修改/etc/sudoers文件

然后重启服务,之后就可以看到日志文件了

当然这个是在一台机子的情况下的,也可以通过其他方式来进行集中管理,可以使用rsync+inotify或者定时任务+rsync来将日志推送到日志服务器,我们在实际的渗透中,如果对方服务器的日志是同步日志服务器的话还是很蛋疼的一件事。

如果对你有帮助,请点击在看或者转发

都是对我的一种支持