Friday, March 16, 2007

定期檢查系統中SUID的檔案

Linux系統中,凡具有SUID權限的檔案,可說是兩面刀呀! 好處是在某些時候可以讓user執行某些只有root可執行的檔案 (如: passwd, ping mount)~但壞處是萬一這個執行檔有"洞",就會讓有心人士有機會侵入到Linux作業系統,所以身為系統管理者的我們,必需要對SUID的檔案特別留意,也因此讓我想到,應該讓系統每天檢查SUID的檔案們是不是有被動過手腳:

-首先,在裝完OS後,先執行以下的命令:
find / -path '/proc' -prune -or -perm -u+s -exec ls -l {} \; > /tmp/suidlist-init
簡單的說就是利用find指令將除了/proc目錄外,所有具有suid權限的檔案找出來,並且存到/tmp/suidlist-init中

-撰寫scripr file:
# vi /root/bin/checksuid.sh

#!/bin/bash

LOGFILE="/tmp/suidlist-`date +%Y-%m-%d`"
RESULTFILE="/tmp/suid_check_result-`date +%Y-%m-%d`"

find / -path '/proc' -prune -or -perm -u+s -exec ls -l {} \; > $LOGFILE

diff /tmp/suidlist-init "$LOGFILE" > $RESULTFILE

mutt -s "SUID CHECK RESULT" root < $RESULTFILE

-定期每天AM 3點檢查,並將結果mail給root
#crontab -e
0 3 * * * /root/bin/checksuid.sh

這麼一來,每天收收信就可以知道目前所有具SUID檔案的狀況了!

No comments: