sudo,普通用户的提权操作,越权跟踪

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ck784101777/article/details/102547152

一.用户切换-su

Substitute User

su - [账户名称]

su - [账户名称] -c '命令'

1.切换用户

  1. [root@proxy ~]#useradd jjh
  2. [root@proxy ~]#su - jjh             //root切普通用户不需要输入密码
  3. [jjh@proxy ~]$ whoami
  4. jjh
  5. [jjh@proxy ~]$ su -                    //切换账户,默认切换为root账户
  6. 密码: //输入root的密码
  7. [root@proxy ~]# whoami                    //确认结果
  8. root

2.切换用户并执行命令

  1. [root@proxy ~]# su - jjh -c "touch /tmp/test.txt"        //管理员切换普通用户并创建文件
  2. [root@proxy ~]# ll /tmp/test.txt
  3. [root@proxy ~]#su - jjh
  4. [jjh@proxy ~]$su - -c "systemctl restart sshd"     //以管理员重启服务,需要密码
  5. 密码:
  6. ● sshd.service - OpenSSH server daemon
  7. Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
  8. active: active (running) since 五 2018-01-19 08:59:40 CST; 1 months 4 days ago

3.查看su切换的使用情况

可以通过查看日志来查看哪些用户使用了su命令登录root账户

[root@web1 ~]#cat /var/log/secure

...........

Oct 14 14:24:14 web1 su: pam_unix(su-l:session): session opened for user jjh by root(uid=0)
Oct 14 14:24:17 web1 su: pam_unix(su-l:session): session closed for user jjh

 

二、越权操作-sudo

Supter of another do 超级执行

sudo 命令      #通过sudo执行命令

sudo -l       #查看可执行命令

修改sudo文件的两种方式:

visudo

vim /etc/sudoers

赋权格式:

找到/etc/sudoers的92好(命令行下输入set nu显示行号),可以看到有一条关于root的配置

root    ALL=(ALL)       ALL

格式: 用户 权限=(以何种身份执行) [执行的命令]

ALL里包括root,所以一般ALL=(ALL)即可,执行命令必须是绝对路径的命令,如useradd实际上是执行/usr/sbin/useradd

1.允许softadm管理系统服务的权限

1)修改/etc/sudoers配置

修改/etc/sudoers可以直接使用vim编辑该文件,或使用visudo命令修改该文件。

为用户授予相关脚本的执行权限,允许通过systemctl工具来管理系统服务。

  1. [root@proxy ~]# useradd jjh
  2. [root@proxy ~]# vim /etc/sudoers            //修改文件后,需要使用wq强制保存
  3. .. ..
  4. jjh ALL=(ALL) /usr/bin/systemctl         
  5. //授权softadm以root身份执行systemctl命令(ALL包括root)

2)切换为softadm用户,并验证sudo执行权限

  1. [root@proxy ~]# su - jjh
  2. [jjh@proxy ~]$ sudo -l             //查看权限
  3. … …
  4. [sudo] password for jjh:                          //输入softadm的口令
  5. (ALL) /usr/bin/systemctl
  6.  
  7. [jjh@proxy ~]$ systemctl start httpd                  //不用sudo时启动服务失败
  8. Authentication is required
  9. .. ..
  10. [jjh@proxy ~]$ sudo systemctl restart httpd         //通过sudo启动服务成功

2.允许普通用户通过sudo方式添加/删除/修改除root以外的用户账号

1)修改/etc/sudoers配置

为用户授予用户管理相关命令的执行权限,我们可以使用通配符匹配useradd,userdel等前几个字符相似的命令.!代表取反,禁用某项命令的执行权.我们在做越权操作的时候不希望威胁到root用户,所以需要禁用对root的执行权

  1. [root@proxy ~]# useradd jjh                  //添加用户
  2. [root@proxy ~]# which useradd   //查看执行命令的实际脚本
  3. /usr/sbin/useradd
  4. [root@proxy ~]# vim /etc/sudoers
  5. .. ..
  6. useradm ALL=(ALL)  /usr/bin/passwd,!/usr/bin/passwd root,/usr/sbin/user*,!/usr/sbin/user*  root

2)切换为普通用户,验证sudo权限

可以通过sudo方式来添加/删除/修改普通用户:

  1. [root@proxy ~]# su - jjh
  2. [jjh@proxy ~]$ sudo -l          //用户useradm可以在该主机上运行以下命令:
  3. .. ..
  4. (root) /usr/bin/passwd, !/usr/bin/passwd root, /usr/sbin/user*,
  5. !/usr/sbin/user* * root
  6. [jjh@proxy ~]$ sudo useradd newuser01                 //可以添加用户
  7. [jjh@proxy ~]$ sudo passwd newuser01                 //可以修改普通用户的口令
  8. 更改用户 jjh 的密码 。
  9. 新的 密码:
  10. 重新输入新的 密码:
  11. passwd: 所有的身份验证令牌已经成功更新。

但是不能修改root用户的密码(你可以试着将取反的操作取消,试试能不能改root的密码):

  1. [useradm@proxy ~]$ sudo passwd root
  2. 对不起,用户 useradm 无权以 root 的身份在 localhost 上
  3. 执行 /usr/bin/passwd root。

3.允许wheel组成员以特权执行所有命令

此案例用来展示sudo的便利性及设置不当带来的危险性,生产环境下慎用。

  1. [root@proxy ~]# vim /etc/sudoers      //98行
  2. .. ..
  3. %wheel ALL=(ALL) ALL
  4. [root@proxy ~]# usermod -a -G wheel jjh
  5. [root@proxy ~]#su - jjh
  6. [jjh@proxy ~]$ sudo -l
  7. .. ..
  8. 用户 jjh 可以在该主机上运行以下命令:
  9. (root) /bin/*

4.为sudo机制启用日志记录,以便跟踪sudo执行操作

1)修改/etc/sudoers配置,添加日志设置

  1. [root@proxy ~]# visudo
  2. Defaults logfile="/var/log/sudo"
  3. .. ..

2)以root(默认有所有权限)执行sudo操作

  1. [root@proxy ~]# su  - jjh
  2. [jjh@proxy ~]$ sudo -l
  3. [jjh@proxy ~]$ sudo -l                                 //查看授权的sudo操作
  4. [softadm@proxy ~]# sudo systemctl status httpd         //查看授权的sudo操作

3)确认日志记录已生效

  1. [root@proxy ~]# tail /var/log/sudo
  2. .. ..
  3. May 16 22:14:49 : root : TTY=pts/1 ; PWD=/root ; USER=root ; COMMAND=list
  4. Feb 22 22:35:43 : softadm : TTY=pts/11 ; PWD=/home/softadm ; USER=root ;
  5. COMMAND=/bin/systemctl status httpd

猜你喜欢

转载自blog.csdn.net/ck784101777/article/details/102547152