读书笔记,内容主要来自网络安全hacks
mount的选项可以防止文件被解释为设备节点,防止按二进制程序执行,不允许SUID设置。 biru
mount -o nodev, noexec,nosuid /dev/hda3 /mnt/tmp
在fstab中的入口点可能为:
/dev/hda3 /mnt/tmp ext3 defaults.nodev.noexec,nosuid 1 2
(上面第五个位置的1表示dump备份,第六个位置的2表示在/之后做文件系统check,如为0表示不用check)
可以分多个区,对每个分区适用不同选项,比如/home基本上肯定不需要dev和suid。/tmp和/var也类似。
关于mount的选项还有 ro rw noquota 等
关于SUID和SGID
如果一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上。例如:
1、-rwsr-xr-x 表示SUID和所有者权限中可执行位被设置
2、-rwSr--r-- 表示SUID被设置,但所有者权限中可执行位没有被设置
3、-rwxr-sr-x 表示SGID和同组用户权限中可执行位被设置
4、-rw-r-Sr-- 表示SGID被设置,但同组用户权限中可执行位没有被设
其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是
1,表示有相应的权限:
11 10 9 8 7 6 5 4 3 2 1 0
S G T r w x r w x r w x
第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位。
11 10 9 8 7 6 5 4 3 2 1 0
上面的-rwsr-xr-x的值为: 1 0 0 1 1 1 1 0 1 1 0 1
-rw-r-Sr--的值为: 0 1 0 1 1 0 1 0 0 1 0 0
给文件加SUID和SUID的命令如下:
chmod u+s filename 设置SUID位
chmod u-s filename 去掉SUID设置
chmod g+s filename 设置SGID位
chmod g-s filename 去掉SGID设置
此mount设置对于取得了root权限的攻击者就没有用了。
********************************
扫描SUID程序
设了SUID或SGID的程序可能被攻击者利用。 我们要扫描SUID SGID可以这样:
find / \(-perm -4000 -o -perm -2000\) -type f -exec ls -la {}\;
下面命令检查是不是一个可执行文件, 如不是而是一个文本脚本则显示
find / \(-perm -4000 -o -perm -2000\) -type f -exec file {}\; | grep -v ELF
可以在cron中设置一个命令每天执行,检查SUIDSGID文件
***************************************************
扫描具有全局可写和组可写权限的目录
find / -type d \( -perm -g+w -o -perm -o+w \) -exec ls -lad{} \;