读书笔记,内容主要来自网络安全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{} \;