2.1 用户切换su
选项参数 | 注释说明 |
---|---|
连环境变量一起切换(切换用户必须用) | |
-c | 以指定用户身份执行任务 |
例1、切换到oldboy用户身份
[root@Kali ~]# su - oldboy
[oldboy@Kali ~]$ pwd
/home/oldboy
2.2 sudo命令介绍及工作原理
通过sudo命令,我们可以把某些超级用户权限分类针对性(精细)授权给指定的普通用户,并且普通用户不需要知道root密码就可以使用得到的授权(管理员真正允许的root权限)。因此,毫不夸张的说,sudo命令相对于su命令来说,在系统用户的分权管理方面进步了很多,是的集权式管理在理论上得到了保证,从而使系统的安全性方面加强了很多。
提示:
上面废话了一大堆,重点就一个: 通过sudo命令,普通用户可以拥有root用户身份权限去执行相应的命令。sudo的配置文件/etc/sudoers ,我们要修改这个文件,一般直接可直接输入
visudo这个命令即可。visudo有语法检查功能,输入 visudo -c 。
2.3 sudo命令工作原理
2.4 案例1、让oldboy普通用户可以添加系统用户
一、模拟环境配置
[root@Kali ~]# visudo
## Allow root to run any commands anywhere <=找到这里
root ALL=(ALL) ALL <=在这行下面添加我们的信息oldboy ALL=(ALL) /usr/sbin/useradd
<=这是我们添加的,命令路径要写全路径
↓ ↓ ↓ ↓
用户名 主机=(切换角色) 所要执行的命令 <=对应信息相关解释
:wq!
[root@Kali ~]# su – oldboy
<=切换到oldboy用户下
[oldboy@Kali ~]$ sudo -l
<=oldboy用户查看自己有哪些sudo权限
[sudo] password for oldboy: <=输入自己(oldboy)的密码
Matching Defaults entries for oldboy on this host:
!visiblepw, always_set_home, env_reset, env_keep=”COLORS DISPLAY HOSTNAME HISTSIZE
INPUTRC KDEDIR LS_COLORS”, env_keep+=”MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
LC_CTYPE”, env_keep+=”LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES”,
env_keep+=”LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE”, env_keep+=”LC_TIME
LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY”,
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User oldboy may run the following commands on this host:
(ALL) /usr/sbin/useradd <=这里所列出来的,就是自己拥有的权限
二、实施过程 添加用户gongli
[oldboy@Kali ~]$ useradd gongli
-bash: /usr/sbin/useradd: Permission denied <=提示没有权限 ?????
什么?没有权限,我们刚不是已经把useradd权限添加给oldboy用户了吗,怎么会提示没权限呢?
在试试下面的命令:
[oldboy@Kali ~]$ sudo useradd gongli
<=命令前面加了 sudo
[sudo] password for oldboy:
[oldboy@Kali ~]$ tail -1 /etc/passwd
gongli:x:808:808::/home/gongli:/bin/bash <=可以看到用户用户已添加成功
小结:
普通用户在使用root通过sudo授权的命令,需要在命令前面加上 sudo 后面接命令名称及参数,才可以运行成功。
2.5 sudo提权配置说明表
用户或组 | 机器=(授权角色) | 可执行的命令 |
---|---|---|
user | MACHINE= | COMMANDS |
oldboy | ALL=(ALL) | /usr/sbin/useradd,/usr/sbin/userdel |
提示:
如果oldboy用户被授予上述权限,辣么它可在所有的机器上以所有的角色运行useradd、
userdel命令。
如果是针对用户组授权,则对应的授权命令如下:
%用户组 机器=(授权使用哪个角色的权限) /usr/sbin/useradd
2.6 案例2:sudo企业真实案例
岗位需求:
岗位名称 | 岗位人员 |
---|---|
运维管理人员 | 韦天武(TianwuWei)、小米(XiaoMi)、老男孩(oldboy) |
网络管理人员 | 周星驰(ZhouXinging)、龚丽(GongLi)、赵薇(ZhaoWei) |
开发人员 | 芒果(Mango)、苹果(Apple)、香蕉(Banana) |
运维总监 | 天神(root) |
权限别名划分:
岗位名称 | 岗位别名 |
---|---|
运维管理人员 | OLD_ADMINIS |
网络管理人员 | OLD_NETWORK |
开发人员 | OLD_ DEV |
运维总监 | 直接使用root,因此无需设置。 |
岗位别名对应权限命令别名:
岗位别名 | 命令权限别名 |
---|---|
OLD_ADMINIS | PROCESSES, DELEGATING, NETWORKING, SOFTWARE, SERVICES,STORAGE,DELEGATING |
OLD_NETWORK | NETWORKING |
OLD_ DEV | DEVELOPMENT |
权限别名对应详细命令:
命令权限别名 | 命令详细路径 |
---|---|
PROCESSES | /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall |
DELEGATING | /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp |
NETWORKING | /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool |
SOFTWARE | /bin/rpm, /usr/bin/up2date, /usr/bin/yum |
SERVICES | /sbin/service, /sbin/chkconfig |
STORAGE | /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount |
DEVELOPMENT | /bin/grep, /bin/cat, /bin/egrep |
visudo:
命令别名定义:
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient,\
/usr/bin/net,/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial,\
/sbin/iwconfig, /sbin/mii-tool
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe,\
/bin/mount, /bin/umount
Cmnd_Alias DEVELOPMENT = /bin/grep, /bin/cat, /bin/egrep
用户别名定义:
User_Alias OLD_ADMINIS = TianwuWei, XiaoMi, oldboy
User_Alias OLD_NETWORK = ZhouXinging, GongLi, ZhaoWei
User_Alias OLD_DEV = Mango, Apple, Banana
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
OLD_ADMINIS ALL=(ALL) PROCESSES, DELEGATING, NETWORKING, SOFTWARE, SERVICES,
STORAGE,DELEGATING
OLD_NETWORK ALL=(ALL) NETWORKING
OLD_DEV ALL=(ALL) DEVELOPMENT
权限检查:运维人员XiaoMi
权限检查:网络管理人员GongLi
权限检查:开发人员Apple
检测结果:全部通过。
小结:
用户别名、命令别名必须用大写,否则在保存的时候语法检测不通过。
2.7 sudo命令用户行为审计
说明:所谓sudo命令日志审计,并不记录普通用户的普通操作。而是记录,那些执行sudo命令的用户操作。
生产环境企业日志审计解决方案:
所谓日志审计, 就是记录所有系统及相关用户行为的信息,并且可以自动分析、处理、展示(包括文本或者录像)
- 法1 通过环境变量命令及rsyslog服务进行全部日志审计(信息太大,不推荐)。
- 法2 sudo配合rsyslog服务进行日志审计(审核信息较少,效果不错)。
法3 在bash解释器程序里嵌入一个监视器,让所有被审计的系统用户使用修改过的增加了监视
器的特殊bash程序作为解释程序。
法4 齐治堡垒机:商业产品(价格几十万)
- 法5 Python开发的开源产品 跳板机(堡垒机)jumpserver
1、检查sudo和rsyslog软件是否安装
[root@Kali ~]# rpm -qa sudo rsyslog
rsyslog-5.8.10-10.el6_6.x86_64
sudo-1.8.6p3-24.el6.x86_64
如果没有安装则执行下面的命令安装yum install sudo syslog -y
2、配置/etc/sudoers
增加配置 “ Defaults logfile=/var/log/sudo.log ”到/etc/sudoers中(不包含双引号)。
[root@Kali ~]# echo "Defaults logfile=/var/log/sudo.log">>/etc/sudoers
[root@Kali ~]#tail -1 /etc/sudoers
Defaults logfile/var/log/sudo.log
3、切换到XiaoMi用户身份执行sudo命令
[root@Kali ~]# su - XiaoMi
[XiaoMi@Kali ~]$ sudo service iptables start
iptables: Applying firewall rules: [ OK ]
4、切换到root查看日志
[XiaoMi@Kali ~]$ su -
Password:
[root@Kali ~]# cat /var/log/sudo.log
Apr 5 04:15:22 : XiaoMi : TTY=pts/1 ; PWD=/home/XiaoMi ; USER=root ;
COMMAND=/sbin/service iptables start