服务器系列之校验SetUID

  1. 备份SetUID

  2. 对于新装的操作系统,首先备份其SetUID和SetGID。

    1
    2
    3
    4
    
    #保存文件的详细信息,便于以后查看
    /usr/bin/find / -perm +6000 -exec ls -ld {} ; > ~/SetUGID_$(date +%Y%m%d).raw 2> /dev/null
    #只保存文件名,用于以后的定期检查(计划任务)
    /usr/bin/find / -perm -4000 -o -perm -2000 > ~/setugid.raw 2> /dev/null
  3. 校验SetUID

  4. 设定计划任务(略)校验SetUID。使用到的Shell脚本如下。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    ################################################################################
    #Name:	checkSetUGID.sh
    #Version:	20110919
    #Author:	Yi Xianfu
    #Email:	yixf1986@gmail.com
    #Description:	查找具有SetUID或者SetGID的文件,与原始备份进行比较;如果有异常,发邮件通知管理员。
    ################################################################################
     
    #!/bin/bash
     
    #查找具有SetUID或者SetGID文件的路径;默认为根目录
    DIR=“/#接收警告报告的管理员邮箱
    EMAIL="admin@gmail.com"
     
    /usr/bin/find $DIR -perm -4000 -o -perm -2000 > /tmp/setuid.check
     
    #如果有异常,发邮件通知管理员,并保存当前的列表
    #如果正常,删除临时文件
    for file in `/bin/cat /tmp/setuid.check`
    do
    #根据实际情况修改文件setugid.raw所在的路径
    	/bin/grep $file ~/setugid.raw > /dev/null
    		if [ "$?" != "0" ]
    		then
    			/bin/echo "$file isn't in SetUGID SetUGIDlist! It's danger!!" | /usr/bin/mail -s "Critical Permission: New SetUID file" $EMAIL
    		else 
    			/bin/rm /tmp/setuid.check
    		fi
    done