Linux sudo详解
- 2020 年 3 月 8 日
- 筆記
先说一下为什么最近一直在学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来将日志推送到日志服务器,我们在实际的渗透中,如果对方服务器的日志是同步日志服务器的话还是很蛋疼的一件事。
如果对你有帮助,请点击在看或者转发
都是对我的一种支持