企業Shell面試題14:開發指令碼入侵檢測與警示案例

來源:互聯網
上載者:User

標籤:開發指令碼入侵檢測與警示案例、md5sum指紋、

        面試及實戰考試題:監控web網站目錄(/var/html/www)下所有檔案是否被惡意篡改(檔案內容被改了),如果有就列印改動的檔案名稱(發郵件),定時任務每3分鐘執行一次。

1.1問題分析

1)首先要說明的是,思考過程的積累比實際代碼開發的能力積累更重要。

2)什麼是惡意篡改,只要是未經過許可的改動都是篡改。

3)檔案內容被改動了會有如下特徵。

◎ 大小可能會變化

◎ 修改時間會變化

◎ 檔案內容會變化,利用md5sum指紋校正

◎ 增加或刪除檔案,比對每次檢測前後的檔案數量。

1.2參考解答

本題主要採用md5sum的方法來實現。

第一步,在企業網站發布代碼之後,即對所有網站資料建立初始指紋庫和檔案庫,這個步驟很重要,沒有基礎的指紋庫,無法進行入侵檢測。

以/var/html/www作為網站目錄為例。

1)建立測試資料:

[[email protected] scripts]# mkdir /var/html/www -p                           #<==建立網站目錄。

[[email protected] scripts]# cp -a /etc/a* /var/html/www                      #<==複製少量測試資料。

[[email protected] scripts]# cp -a /etc/b* /var/html/www                      #<==複製少量測試資料。

[[email protected] scripts]# ls /var/html/www                                 #<==檢查。

abrt acpi  adjtime  aliases aliases.db  alsa  alternatives anacrontab  asound.conf  at.deny audisp  audit  bash_completion.d  bashrc blkid

2)建立初始的檔案指紋庫:

[[email protected] scripts]# find /var/html/www -type f|xargs md5sum >/opt/zhiwen.db.ori

<==建立檔案內容指紋庫。

[[email protected] scripts]# tail /opt/zhiwen.db.ori

68b329da9893e34099c7d8ad5cb9c940  /var/html/www/at.deny

e5d91bca71662d7c09bc7fc731ad3222  /var/html/www/adjtime

8241db83d5edf01c71734e41e383e205  /var/html/www/anacrontab

c23a47aca3ec55122b8871c5a61494b5 /var/html/www/abrt/abrt-action-save-package-data.conf

9cd848af905b767fa410070b265a70c7  /var/html/www/abrt/gpg_keys

b6bcc3a178b9442d30d88444a9311769  /var/html/www/abrt/abrt.conf

441645d0e419c1f593694ca014817ee1  /var/html/www/abrt/plugins/CCpp.conf

1ecf30990ac5948a8e3bd7b8c1cd944f  /var/html/www/abrt/plugins/python.conf

1e4aded98bb1ff08094c8dfb09d33192  /var/html/www/abrt/plugins/oops.conf

b2a676d524cb2d46eccc00baadfbfe29  /var/html/www/aliases.db

3)建立初始的檔案庫:

[[email protected] scripts]# find /var/html/www -type f>/opt/wenjian.db.ori

#<==建立檔案數量和名字型檔。

[[email protected] scripts]# tail /opt/wenjian.db.ori

/var/html/www/at.deny

/var/html/www/adjtime

/var/html/www/anacrontab

/var/html/www/abrt/abrt-action-save-package-data.conf

/var/html/www/abrt/gpg_keys

/var/html/www/abrt/abrt.conf

/var/html/www/abrt/plugins/CCpp.conf

/var/html/www/abrt/plugins/python.conf

/var/html/www/abrt/plugins/oops.conf

/var/html/www/aliases.db

第二步,檢測檔案內容和檔案數量變化。

1)檢測檔案內容變化:

[[email protected] scripts]# echo oldboy>>/var/html/www/audisp/plugins.d/af_unix.conf  #<==篡改檔案。

[[email protected] scripts]# export                                             #<==調整字元集。

[[email protected] scripts]# md5sum -c --quiet/opt/zhiwen.db.ori

#<==檢查所有檔案的內容是否變化。

/var/html/www/audisp/plugins.d/af_unix.conf: FAILED                                              #<==變化的會被列印出來。

md5sum: WARNING: 1 of 29 computed checksums did NOTmatch                         #<==綜合提示。

2)檢測檔案數量變化:

[[email protected] scripts]# echo oldgirl.txt>/var/html/www/test.txt

#<==類比增加新檔案。

[[email protected] scripts]# md5sum -c --quiet/opt/zhiwen.db.ori

#<==利用指紋庫無法檢測新增檔案。

/var/html/www/audisp/plugins.d/af_unix.conf: FAILED

md5sum: WARNING: 1 of 29 computed checksums did NOT match

[[email protected] scripts]# find /var/html/www -type f>/opt/wenjian.db_curr.ori

#<==擷取檢測前的所有檔案數量及檔案名稱。

[[email protected] scripts]# diff /opt/wenjian.db*        #<==採用diff命令比較。

20d19

< /var/html/www/test.txt        #<==test.txt就是新增的,怎麼樣,還可以吧。

第三步,開發檢查指紋識別指令碼。

首先,人工做如下操作:

[[email protected] scripts]# find /var/html/www -type f |xargs md5sum>/opt/zhiwen.db.ori

[[email protected] scripts]# find /var/html/www -type f>/opt/wenjian.db.ori

指令碼檢測會以上述兩個命令擷取的結果為原始的正確依據,如下

[[email protected] scripts]# cat 30-14.sh

#!/bin/bash                                       

RETVAL=0                                            #<==狀態初始化。

export                                      #<==調整字元集。

CHECK_DIR=/var/html/www                             #<==定義要監測得網站目錄。

[ -e $CHECK_DIR ] || exit 1                         #<==如果目錄不存在則退出指令碼。

 

ZhiWenDbOri="/opt/zhiwen.db.ori"                    #<==定義原始指紋庫路徑。

FileCountDbOri="/opt/wenjian.db.ori"                #<==定義原始檔案庫路徑。

ErrLog="/opt/err.log"                               #<==定義檢測後的內容日誌。

 

[ -e $ZhiWenDbOri ] || exit 2                       #<==如果原始指紋庫不存在則退出指令碼。

[ -e $FileCountDbOri ] || exit 3                    #<==如果原始檔案庫不存在則退出指令碼。

 

#judge file contet

echo "[[email protected] scripts]# md5sum -c --quit/opt/zhiwen.db.ori">$ErrLog      #<==列印檢測命令。

md5sum -c --quiet /opt/wenjian.db.ori &>>$ErrLog                             #<==實際執行檢測命令。

RETVAL=$?                                                                      #<==收集傳回值。

 

#com file count

find $CHECK_DIR -type f >/opt/wenjian.db_curr.ori  #<==實際執行檢測命令,擷取最新檔案數量等。

 

echo "[[email protected] scripts]# diff /opt/wenjian.db*"&>>$ErrLog  #<==列印檢測命令。

diff /opt/wenjian.db* &>>$ErrLog   #<==實際執行檢測命令,比對檔案數量及檔案名稱變化情況。

 

if [ $RETVAL -ne 0 -o `diff /opt/wenjian.db*|wc -l`-ne 0 ]

#<==如果傳回值不為0,或者比對結果行數不為0,則進入判斷。

   then

     mail -s "`uname -n`$(date +%F) err" [email protected] <$ErrLog

else

    echo "Sites dir isok"|mail -s"`uname -n` $(date +%F) is ok" [email protected]

fi

mail發送相關配置內容

[[email protected] scripts]# cat /etc/mail.rc

# For Linux and BSD, this should be set.               #<==設定檔的最後修改mail內容。

set bsdcompat

set [email protected] smtp=smtp.163.com

set smtp-auth-user=15537920814smtp-auth-password=l123456 smtp-auth=login

然後利用定時任務檢查,命令如下:

[[email protected] scripts]# crontab -l|tail -2

# ids monitor site dir and file change by oldboy at20170511

*/3 * * * * /bin/sh /server/scripts/30-10.sh>/dev/null 2>&1

現在來思考一下,在企業中一般什麼檔案需要做指紋驗證呢?

系統命令、使用者檔案、設定檔、開機檔案等重要檔案,都要監控起來,另外,在實際工作中應對所有的使用者操作做日誌審計,讓所有人的所有操作無處遁形,起到威懾和監督的作用,從而減少被當作“黑鍋俠”的風險。



本文出自 “為人民服務” 部落格,請務必保留此出處http://junhun.blog.51cto.com/12852949/1924731

企業Shell面試題14:開發指令碼入侵檢測與警示案例

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.