天天看點

監控站點目錄檔案是否被篡改

監控web站點目錄下的所有檔案是否被惡意篡改,如果有改動就列印改動的檔案名,發郵件給管理者,定時任務每隔3分鐘執行一次

監控的站點目錄是(/var/http/www)

解答:

1、什麼是惡意篡改,隻有為經過許可的改動都是篡改。

2、檔案被篡改的特征

  a、大小可能會變化

  b、修改時間會變化,(檔案測試符:ot、nt)

  c、檔案内容會變化,md5sum指紋

  d、檔案是否被增加或者删除

問題:

可能腳本無法區分哪些是開發正常的代碼上線更改,哪些是黑客的二進制篡改。

一般代碼釋出,都是有相關規定的,在代碼釋出時,我們可以不監控暫停。如果是MD5sum指紋對比,是否修改檔案,我們也會在代碼更新後,重新生成md5sum的對比源

1、代碼釋出方案:大公司或者規範的公司,不會時刻傳代碼,每天1-2次

2、腳本不嚴謹啊,工作中先解決問題,然後在解決好問題

解決方法:

1、根據md5sum 對比

2、用inotify監控,如果發生變化就把變化的檔案同步到其他目錄

3、根據檔案内容長度比較.

4、根據檔案大小比較.

################################################################################

 缺點:如果是建立的檔案,因為之前沒有指紋,是以無法檢測,解決,我們可以在建立指紋庫的時候,也把這個目錄的檔案數目記錄下來。在腳本監控的時候,也把檔案數目進行對比,如果檔案數目發生變化,那也一樣可以監控了

  a、人工控制指紋檔案的建立,上線前執行建立指紋庫的操作,并儲存

     指令:md5su  路徑 > 指紋檔案

 #find /etc/ -type f -name "*" -exec md5sum {} > /tmp/checkmd5.db \;

 find /etc/ -type f -name "*" | xargs md5sum > /tmp/checkmd5.db

 取監控目錄的檔案數目

 ls -l /etc/ |wc -l

 ==================

 ls -l /etc/ >>site.log

  b、根據指紋庫,對比是否發生變化

     md5sum -c /tmp/checkmd5.db

  c、過濾發生變化的檔案

      md5sum -c /tmp/checkmd5.db |grep -i FAILED

  開發檢查指紋識别的腳本

   #!/bin/sh

   num=`cat site.log|wc -l`

   md5num=`md5sum -c /tmp/checkmd5.db|grep -i FAILED|wc -l`

   filenum=`ls -l /etc/ |wc -l`

   if [  $md5num -ne 0 ]

      then

       echo "md5sum -c /tmp/checkmd5.db|grep -i FAILED"

   fi

   if [ $filenum -ne $num ]

       echo "/etc/ dir is change"

     ###上面的site.log 和 /tmp/checkmd5.db 都是在監控前取到的資料

========================================================== 

把上面腳本變成定時任務,定時監控,或者寫while 語句定時監控

[root@LAMP 04]# cat md5diff.sh 

#!/bin/sh

while true 

do

   then

      echo "`md5sum -c /tmp/checkmd5.db|grep -i FAILED`"

      echo "/etc/ dir is change"

   sleep 5

done

#!/bin/bash

#par

. /etc/init.d/functions

src=/data/

des=/tmp/data.log

inotify_home=/application/inotify

#${inotify_home}/bin/inotifywait -mrq  --format '%w%f' -e create,delete,close_write $src  >>$des

${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src  >> $des

if [ -s "$des" ]

  then

    action "web site change" /bin/true

cat /dev/null > $des

  else

    action "web site no change" /bin/true

fi  

3、根據檔案内容長度比較

 a、在實施方案前,想取得要監控的目錄的檔案數目,以及每個檔案的行數。甚至位元組數,

 b、在實施時,就再去監控這個目錄的檔案數目,以及每個檔案的行數,甚至位元組數,

 c、對面監控前後,這些檔案數目和每個檔案行數,進行對比

擷取檔案數目,和每個檔案長度的長度

for file in `ls ./`

do 

   filelen=`cat $file|wc -l` 

   echo "$file ==========>  $filelen"  >> file.log

   dirlen=`ls -l /data/|wc -l`

   echo "data ==========>  $dirlen"  >> file.log  

3、根據檔案大小比較

 a、在實施方案前,想取得要監控的目錄大小,以及每個的檔案大小

 b、在實施時,就再去監控這個目錄大小,以及每個檔案的大小

 c、對面監控前後的目錄和檔案的大小進行對比

本文轉自 fxl風 51CTO部落格,原文連結:http://blog.51cto.com/fengxiaoli/1952024

繼續閱讀