linux文件权限实际是12位权限
linux 文件权限9个字符每三个字符一组 分三组 用户权限 用户组权限 其他权限
实际上还有三位特殊权限、
suid 权限 sgid 权限 粘滞位
理解特殊权限:关键应用suid
当给一个二进制命令设置了suid以后,那么,[任何用户]执行该命令,
都会拥有和命令文件对应的所有者(用户)相同的权限。
md5sum 根据文件及文件内容,利用固定的算法生成一串特殊字符
使用md5sum采集/etc/shadow指纹
[root@oldboyedu ~]# md5sum /etc/shadow
825f0f637d387b9d27ed1bff91452f2f /etc/shadow
[root@oldboyedu ~]# md5sum /etc/shadow
825f0f637d387b9d27ed1bff91452f2f /etc/shadow
##新开窗口,登录普通用户,并修改自己的密码:
su - oldboy
passwd
##回到root窗口,再采集指纹,发现shadow已经被改动。
[root@oldboyedu ~]# md5sum /etc/shadow
deb611db6a2033d7599bd31c6417407b /etc/shadow
##说明oldboy用户改了/etc/shadow文
给rm命令设置suid,测试rm删除本来没有权限删除的文件
查看rm权限 :ls -l /bin/rm
给rm命令设置suid(suid存在于用户位,用s表示) :chmod u+s /bin/rm
查看 : ls -l /bin/rm -rwsr-xr-x 1 root root 62872 8月 20 2019 /bin/
suid总结:
1.针对二进制命令.
2.给二进制命令设置suid,则【任何用户】执行该命令都会拥有和该命令对应的用户相同的权限.
特殊权限的字符及数字知识
普通权限:9位 前三位、中三位、后三位
特殊权限:3位
suid:用户位*****
suid字符是S,对应的数字4,占据前三位用户位的x位置,字符是S,位置如果有x,变成小写s。
sgid:用户组位
suid字符是S,对应的数字2,占据中三位用户组位的x位置,字符是S,位置如果有x,变成小写s。
粘滞位: 其他位
粘滞位字符是T,对应的数字1,占据后三位其他用户位的x位置,字符是T,位置如果有x,变成小写t。
工作中禁止使用suid提权,特别是本身有危害的命令,passwd命令属于绿色\无害命令
rm,vim,sed,cat都是有害命令,危害防不胜防
.设置suid 字符权限: chmod u+s /bin/rm
数字权限: chmod 4755 /bin/rm
设置sgid: 字符权限 chmod g+s /bin/rm
数字权限: chmod 2755 /bin/rm
同时设置suid,sgid,粘滞位 : chmod 7755 /bin/rm
练习:执行chmod u+s /bin/vim以后,如何能从普通用户test提权到root。
test用户通过设置了suid的vim命令提权到root实践:
1.#必须root用户下操作
chmod u+s /bin/vim
2.#必须test用户下操作
vim /etc/sudoers增加如下内容
test ALL=(ALL) NOPASSWD:ALL
3.#切到root.
sudo su -
提权方法2:
1.#必须root用户下操作
chmod u+s /bin/vim
2.vim /etc/passwd,将test用户的行的UID改为0
提权方法3:将test用户修改为属于wheel组
#确定test的组id为20008
[test@oldboyedu ~]$ grep -w test /etc/passwd
test:x:20008:20008::/home/test:/bin/bash
#确定wheel组id为10
[test@oldboyedu ~]$ grep wheel /etc/group
wheel:x:10:
#修改组id为10
[test@oldboyedu ~]$ vim /etc/passwd
test:x:20008:10::/home/test:/bin/bash
###登录sudo
sudo su - ###需要test密码。
提权方法4:增加针对test组的授权vim /etc/sudoers
%test ALL=(ALL) ALL
一招解决上面提权问题:
chattr -i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/sudoers
useradd oldboy
chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/sudoers
防护普通用户以及通过Web(普通用户)提权
1.禁止给命令设置suid
0)管理员不要去使用suid功能,同时把无用的suid功能取消。
1)应用软件PHP(/etc/php.ini配置)禁止开启读取系统文件等的函数
2)磁盘的挂载禁止suid。
2.给关键文件加锁
/etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/sudoers
3.chmod 440 /etc/sudoers
4.看好/etc目录权限,防止文件被替换
5.所有系统和站点文件和目录用户和组都用root
6.文件权限统一644,目录权限统一755, 文件和目录对应用户和组尽量都是root
错误做法:chmod -R 777 站点目录 极大危险。
必须要做:chown -R www.www 上传的目录
(给上传的站点目录设置应用程序对应的用户)
7.web应用应禁止上传特殊文件到系统目录,
1)js判断文件扩展名(jpg,zip,mp4)
2)上传后禁止浏览(get请求方法,目录uri,动静分离),
开启wap防火墙各种限制80端口进入,使用加密的https.
8.ssh监听内网,禁止root远程连接,通过vpn拨号然后通过跳板机连接。
[root@oldboyedu ~]# vim /etc/ssh/sshd_config
PermitRootLogin no
[root@oldboyedu ~]# systemctl restart sshd
9.用防火墙把ssh访问限制到内网或者公司办公的IP段。