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命令工作原理

su与sudo - 图1

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
su与sudo - 图2
权限检查:网络管理人员GongLi
su与sudo - 图3
权限检查:开发人员Apple
su与sudo - 图4
检测结果:全部通过。
小结:
用户别名、命令别名必须用大写,否则在保存的时候语法检测不通过。
su与sudo - 图5

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