Linux特殊权限之SUID.

  • A+
所属分类:linux技术
摘要

我们先创建几个用户角色,来更好的测试suid的功能groupadd inca        #创建一个组inca
useradd oldgirl -g inca      #创建用户oldboy属于inca组
useradd oldboy -g inca     #创建用户oldgirl属于inca组

我们先创建几个用户角色,来更好的测试suid的功能

groupadd inca        #创建一个组inca
useradd oldgirl -g inca      #创建用户oldboy属于inca组
useradd oldboy -g inca     #创建用户oldgirl属于inca组

useradd test            #创建一个默认组的用户test

Linux特殊权限之SUID.

 

1.先来看一个passwd特殊权限的实例:

[root@localhost ~]#ls /etc/shadow -l            #来到存放用户密码的文件下面

----------. 1 root root 953 Jul 28 09:50 /etc/shadow      #此时文件没有改动,也没有权限

[root@localhost ~]#md5sum /etc/shadow
9333d150f6157cbc65abbf7619356dc3 /etc/shadow

我们登录刚才创建的oldboy用户,用passwd命令修改了用户oldboy的密码

Linux特殊权限之SUID.

此时我们在root用户的模式下看到/etc/shadow刚才生成的指纹已经发生了变化

Linux特殊权限之SUID.

注意:以上在用户oldboy中能修改密码的前提是我们必须在root用户中给oldboy用户设置一个初始密码

经过以上演示,我们看到了在oldboy用户下修改了passwd,刚才我们看到的/etc/shadow是没有任何权限的,那为什么oldboy普通用户怎么能修改掉密码呢?

问题就在passwd命令本身,这个命令被设置了特殊权限位(suid)。

2.suid作用:

1.针对二进制命令.
2.给passwd命令设置了suid,则任何用户执行passwd命令都会拥有和passwd命令对应的用户的权限.

Linux特殊权限之SUID.

 

我们知道,普通权限一共有9位,即:u用户3+g用户组3+o其他用户3

现在有一个特殊权限位s,每一权限位变成了4位,用户s+rwx,用户组s+rwx,其他用户位(粘滞位)t+rwx,总共12位权限。

suid:用户
前三位用户位的x位:S s(x)
s 4        #数字权限
sgid:用户组
中三位用户组位的x位:S s(x)
s 2        #数字权限
粘滞位: /tmp
后三位其他用户位:x位:T t(x)
t 1        #数字权限

现在我们更改一下rm命令的权限:

Linux特殊权限之SUID.

 

Linux特殊权限之SUID.

可以看到两个方法都能给rm命令提权到suid,

Linux特殊权限之SUID.

 

综合以上,suid特殊权限,在普通用户里可以修改部分文件,特别危险,还有类似的危险命令都可以修改文件

比如:rm,vim,cat等都是有害命令,防不胜防,我们知道cat是查看命令,但是它依然能够利用重定向在文件里修改内容。

3.目前我们创建的test用户位普通用户,我们通过vim编辑配置文件的方法,增加suid权限,提权到root用户,需要注意的是,在此操作过程中,也是在root用户下进行。

首先我们要给/bin/vim 增加suid权限:

chmod u+s /bin/vim vim /etc/sudoers

 Linux特殊权限之SUID. 

现在我们的test账户已经提权到root用户级别,当我们登录到test用户后,再切换回root用户时,不需要再输入root的密码,就可以切换回去

Linux特殊权限之SUID.

 

但是在这里我们还要注意一下哎,当我们没有用提权sudo标志切换的时候,系统依然要求我们要输入root的管理密码

Linux特殊权限之SUID.

现在我们带上sudo标志,可以看到已经不需要root密码就可以将用户切换回去。

Linux特殊权限之SUID.

 

 

以下总结了如何防止普通用户登入系统和web用户通过80端口进入网页服务器来给自己的用户提权,我们可以将suid这样的危险权限做一个限制。

1.禁止给命令设置suid:
  1)应用软件PHP(/etc/php.ini)禁止开启读取系统文件等的函数cat。
  2)磁盘挂载禁止suid。
2.给关键文件加锁/etc/sudoers,因为编辑这里可以给用户提权。

3.chmod 000 /etc/sudoers,我们在root用户下修改sudoers文件的权限为0,不能编辑任何内容。

4.监控好/etc目录权限,防止文件被替换。

5.所有系统和站点文件和目录用户和组都用root。

6.文件统一644,目录统一755,文件和目录的默认权限。

7.web应用禁止上传特殊文件到服务器:

上传后禁止浏览(get请求方法,目录uri,动静分离)。

开启wap防火墙各种限制80(80端口是web的默认端口)进入,使用加密的https传输协议。

8.ssh监听内网,禁止root远程连接,vpn拨号。