UNIX***檢測

轉載鏈接:http://www.fish888.com/UNIX-t42711

【標  題】:UNIX***檢測
【關鍵字】:UNIX,***,UNIX
【來  源】:網絡

UNIX***檢測


1.概述
***檢測(Intrusion Detection),顧名思義,便是對***行爲的發覺。它通過
對計算機網絡或計算機系統中的若干關鍵點收集信息並對其進行分析,從中發現網絡或
系統中是否有違反安全策略的行爲和被***的跡象。進行***檢測的軟件與硬件的組合
便是***檢測系統(Intrusion Detection System,簡稱IDS)。與其他安全產品不同的
是,***檢測系統需要更多的智能,它必須可以將得到的數據進行分析,並得出有用的
結果。一個合格的***檢測系統能大大的簡化管理員的工作,保證網絡安全的運行。

  日誌是使系統順利運行的重要保障。它會告訴我們系統發生了什麼和什麼沒有發
生。然而,由於日誌記錄增加得太快了,鋪天蓋地的日誌使系統管理員茫然無措,最終
使日誌成爲浪費大量磁盤空間的垃圾。日誌具有無可替代的價值,但不幸的是它們經常
被忽略,因爲系統管理員在並不充裕的時間裏難以查看大量的信息。標準的日誌功能不
能自動過濾和檢查日誌記錄,並提供系統管理員所需要的信息。

  對於***者來說,要做的第一件事就是清除***的痕跡。這需要***者獲得root權
限,而一旦系統日誌被修改,就無法追查到***的情況。因此,好的系統管理員應該建
立日誌文件檢測。有很多工具可以實現日誌檢測的功能,其中就有Logcheck和Swatch。
本文將對Logcheck和Swatch逐一進行介紹。

2.日誌文件系統

  審計和日誌功能對於系統來說是非常重要的,可以把感興趣的操作都記錄下來,供
分析和檢查。UNIX採用了syslog工具來實現此功能,如果配置正確的話,所有在主機上
發生的事情都會被記錄下來,不管是好的還是壞的。

  Syslog已被許多日誌系統採納,它用在許多保護措施中--任何程序都可以通過
syslog記錄事件。Syslog可以記錄系統事件,可以寫到一個文件或設備中,或給用戶發
送一個信息。它能記錄本地事件或通過網絡紀錄另一個主機上的事件。

  Syslog依據兩個重要的文件:/sbin/syslogd(守護進程)和/etc/syslog.conf配
置文件,習慣上,多數syslog信息被寫到/var/adm或/var/log目錄下的信息文件中
(messages.*)。一個典型的syslog紀錄包括生成程序的名字和一個文本信息。它還包
括一個設備和一個行爲級別(但不在日誌中出現)。

  /etc/syslog.conf的一般格式如下:

  設備.行爲級別 [;設備.行爲級別]    記錄行爲

設備           描述
auth         認證系統:login、su、getty等,即詢問用戶名和口令
authpriv      同LOG_AUTH,但只登錄到所選擇的單個用戶可讀的文件中
cron         cron守護進程
daemon       其他系統守護進程,如routed
kern        內核產生的消息
lpr         打印機系統:lpr、lpd
mail        電子郵件系統
news        網絡新聞系統
syslog       由syslogd產生的內部消息
user        隨機用戶進程產生的消息
uucp        UUCP子系統
local0~local7   爲本地使用保留

行爲級別       描述
debug        包含調試的信息,通常旨在調試一個程序時使用
info        情報信息
notice       不是錯誤情況,但是可能需要處理
warn(warning)   警告信息
err(error)     錯誤信息
crit        重要情況,如硬盤錯誤
alert        應該被立即改正的問題,如系統數據庫破壞
emerg(panic)    緊急情況

記錄行爲(舉例)    描述
/dev/console     發送消息到控制檯
/var/adm/messages  把消息寫到文件/var/adm/messages
@loghost       把消息發到其它的日誌記錄服務器
fred,user1      傳送消息給用戶
*           傳送消息給所有的在線用戶

  有個小命令logger爲syslog系統日誌文件提供一個shell命令接口,使用戶能創建
日誌文件中的條目。用法:logger 例如:logger This is a test!

  它將產生一個如下的syslog紀錄:Apr 26 11:22:34 only_you: This is a test!

  更詳細的幫助信息請man syslogd,man syslog.conf

3.Logcheck

3.1 logcheck介紹

  Logcheck是一軟件包,用來實現自動檢查日誌文件,以發現安全***和不正常的活
動。Logcheck用logtail程序來記錄讀到的日誌文件的位置,下一次運行的時候從記錄
下的位置開始處理新的信息。所有的源代碼都是公開的,實現方法也非常簡單。

  Logcheck SHELL腳本和logtail.c程序用關鍵字查找的方法進行日誌檢測。在這兒
提到的關鍵字就是指在日誌文件中出現的關鍵字,會觸發向系統管理員發的報警信息。
Logcheck的配置文件自帶了缺省的關鍵字,適用於大多數的*inx系統。但是最好還是自
己檢查一下配置文件,看看自帶的關鍵字是否符合自己的需要。

  Logcheck腳本是簡單的SHELL程序,logtail.c程序只調用了標準的ANSI C函數。
Logcheck要在cron守護進程中配置,至少要每小時運行一次。腳本用簡單的grep命令來
從日誌文件檢查不正常的活動,如果發現了就發MAIL給管理員。如果沒有發現異常活
動,就不會收到MAIL。

3.2 安裝和配置logcheck

3.2.1 下載Logcheck

  下載網址 下載後放在/backup目錄。

3.2.2 安裝

以root用戶身份登錄,

  [root@only_you /root]# tar zxvf /backup/logcheck-1.1.1.tar.gz
[root@only_you /root]# cd logcheck-1.1.1
[root@only_you logcheck-1.1.1] make linux //在Linux平臺下使用
make install SYSTYPE=linux //缺省安裝目錄是/usr/local/etc
make[1]: Entering directory `/root/logcheck-1.1.1'
Making linux
cc -O -o ./src/logtail ./src/logtail.c
Creating temp directory /usr/local/etc/tmp //在/usr/local/etc下創建目錄
tmp
Setting temp directory permissions
chmod 700 /usr/local/etc/tmp
Copying files
cp ./systems/linux/logcheck.hacking /usr/local/etc //拷貝文件到
/usr/local/etc目錄
cp ./systems/linux/logcheck.violations /usr/local/etc
cp ./systems/linux/logcheck.violations.ignore /usr/local/etc
cp ./systems/linux/logcheck.ignore /usr/local/etc
cp ./systems/linux/logcheck.sh /usr/local/etc
cp ./src/logtail /usr/local/bin //把logtail程序拷貝到/usr/local/bin目錄
Setting permissions
chmod 700 /usr/local/etc/logcheck.sh //logcheck的腳本
chmod 700 /usr/local/bin/logtail //修改文件訪問權限,確認只有root用戶才
能操作
chmod 600 /usr/local/etc/logcheck.violations.ignore //不同的配置文件
chmod 600 /usr/local/etc/logcheck.violations
chmod 600 /usr/local/etc/logcheck.hacking

3.2.3 程序文件介紹

  logcheck.sh 主腳本文件。控制所有的處理過程,用grep命令檢查日誌文件,發現
問題報告系統管理員。由cron定時啓動。

  logtail 記錄日誌文件上次處理到的位置。被logcheck程序調用,避免重複處理已
處理過的日誌文件。所有的日誌文件都由此程序處理,在同一目錄下會產生文件
######.offset,其中######是檢查的日誌文件名。文件中記錄了logtail開始處理的偏
移量,如果刪除掉,則從文件開始處進行處理。Logcheck跟蹤日誌文件的inode號和文
件大小,如果inode號發生變化,或者是文件大小比上次運行時的小, logtail會重置
偏移量,處理整個文件。

  Logcheck.hacking 文件中包含了系統受到***時的關鍵字。這個文件的關鍵字比
較稀少,除非能知道某種特定的***方式的特徵。缺省的關鍵字是ISS(Internet
Security Scanner)***產生的,或者是sendmail中的地址欄裏的非法語法。在日誌文
件中找到了關鍵字就會給管理員發信。

  logcheck.violations 文件中包含了產生否定或拒絕信息的系統事件。如denied,
refused等。

  logcheck.violations.ignore 文件中包含了要對logcheck.violations進行反向
查找的關鍵字。

3.2.4 配置

  爲了使logcheck運行正常,先要對syslog.conf進行配置,你應該根據自己的需要
進行配置,下面給出的只是一個例子。

  把下面的內容加到/etc/syslog.conf中

  #記錄mail,news以外的消息
*.*;mail.none;news.none -/var/log/messages
#記錄認證請求
auth.*;authpriv.* /var/log/authlog
#記錄所有的內核消息
kern.* /var/log/kernlog
#記錄警告和錯誤消息
*.warn;*.err /var/log/syslog

  這四個文件/var/log/messages,/var/log/authlog,/var/log/kernlog,
/var/log/syslog也就是logcheck要檢查的日誌文件。

  重起syslog,[root@only_you]#/etc/rc.d/init.d/syslog restart

  用編輯器(vi等)打開文件/usr/local/etc/logcheck.sh,在其中會找到下面的內

  # Linux Red Hat Version 3.x, 4.x
$LOGTAIL /var/log/messages > $TMPDIR/check.$$
$LOGTAIL /var/log/secure >> $TMPDIR/check.$$
$LOGTAIL /var/log/maillog >> $TMPDIR/check.$$

  這是logcheck自帶的內容,也就是logcheck要檢查的日誌文件,把它該爲下面的內
容,使之於syslog.conf的內容相一致:(應該根據你配置的syslog.conf進行修改)

  $LOGTAIL /var/log/messages > $TMPDIR/check.$$
$LOGTAIL /var/log/authlog >> $TMPDIR/check.$$
$LOGTAIL /var/log/kernlog >> $TMPDIR/check.$$
$LOGTAIL /var/log/syslog >> $TMPDIR/check.$$

  還可以找到一行爲 SYSADMIN=root,指的是發郵件時的收信人,缺省爲
root@localhost,本機的root用戶,如果機器與Internet相連,也可以指定真實的帳
號,我就把它改爲了[email protected],這樣就可以隨時收到郵件了,不須用
root帳號登錄到linux機器上去。

  在/etc/crontab中增加一項,讓cron定時啓動logcheck。關於cron的用法請參考相
應文檔。

  00,10,20,30,40,50 * * * * root /usr/local/etc/logcheck.sh

  每10分鐘運行一次。

3.2.5 測試

  都配置好了,試試效果如何吧。登錄一下,故意輸錯口令,看看有什麼事情發生。
10分鐘以後,我的[email protected]信箱真的收到了一封信,信的內容大致
如下:

  Apr 26 13:51:13 only_you -- wap[1068]: LOGIN ON pts/1 BY wap FROM
*.*.*.*
Apr 26 13:51:24 only_you PAM_unix[1092]: authentication failure;
wap(uid=500) -> root for system-auth service

  剛裝好不長時間,logcheck就報告有人試圖登錄到我的機器上來,不知道這位IP爲
211.69.197.1的朋友想幹什麼。

  Security Violations
=-=-=-=-=-=-=-=-=-=
Apr 26 15:30:53 only_you xinetd[528]: refused connect from 211.69.197.1
Apr 26 15:30:53 only_you xinetd[528]: refused connect from 211.69.197.1
Unusual System Events
=-=-=-=-=-=-=-=-=-=-=
Apr 26 15:30:53 only_you xinetd[528]: refused connect from 211.69.197.1
Apr 26 15:30:53 only_you xinetd[528]: refused connect from 211.69.197.1
Apr 26 15:30:53 only_you xinetd[528]: FAIL: ftp libwrap
from=211.69.197.1
Apr 26 15:40:00 only_you CROND[1388]: (root) CMD
(/usr/local/etc/logcheck.sh)
Apr 26 15:40:00 only_you CROND[1388]: (root) CMD
(/usr/local/etc/logcheck.sh)
Apr 26 15:40:00 only_you CROND[1390]: (root) CMD ( /sbin/rmmod -as)
Apr 26 15:40:00 only_you CROND[1390]: (root) CMD ( /sbin/rmmod -as)
Apr 26 15:30:53 only_you xinetd[528]: FAIL: ftp libwrap
from=211.69.197.1

4.swatch

  SWATCH (The Simple WATCHer and filer) 是Todd Atkins開發的用於實時監視日
志的PERL程序。Swatch利用指定的觸發器監視日誌記錄,當日志記錄符合觸發器條件
時,swatch會按預先定義好的方式通知系統管理員。

  Swatch非常容易安裝。它是一個PERL程序,無需編譯。Swatch有一個很有用的安裝
腳本,將所有的庫文件、手冊頁和PERL文件複製到相應目錄下。安裝完成後,只要創建
一個配置文件,就可以運行程序了。Swatch的下載網址,最新的版本爲3.0.1 。下載後
也放到了/backup目錄。

4.1 安裝

  以root用戶身份登錄,

  [root@only_you /root]# tar zxvf /backup/swatch-3.0.1.tar.gz
[root@only_you /root]# cd swatch-3.0.1

  現在的版本需要perl 5和Time::HiRes, Date::Calc,Date::format, file::Tail.
模塊,系統自帶的perl可能不包括,沒關係,它的安裝程序會自己到網上去找。

  [root@only_you swatch-3.0.1]# perl Makefile.PL

  系統提示HiRes 1.12模塊沒有安裝,詢問是否安裝,回答y,

  接着系統提示Are you ready for manual configuration? [yes]

  敲n就會自動配置,然後它自己到網上去裝東西,具體在幹什麼我也不清楚了。裝
完這個又說缺別的東西,還是讓它自己去裝。試着執行一下./swatch,如果沒有錯誤信
息就說明安裝成功了。

4.2 配置swatchrc

  swathrc文件的格式如下

  # Bad login attempts
watchfor /INVALID|REPEATED|INCOMPLETE/
echo
bell 3
[email protected]
# Machine room temperature
watchfor /WizMON/
echo inverse
bell

  watchfor後跟/pattern/, 其中的"pattern"代表一個swatch將要進行搜索匹配的
正則表達式,也就是我們的觸發器,下面緊跟的以“Tab”開頭的是當表達式匹配時所
要執行的動作,Swatch允許指定包括顯示、email、呼叫或任何指定的執行文件。上面
第一個watchfor的含義是找到/INVALID|REPEATED|INCOMPLETE/後把信息顯示到屏幕
上,響鈴,同時向[email protected]發MAIL。詳細的正則表達式的格式請參考
相應的文檔。

  缺省情況下,swatch認爲swatchrc文件爲~/.swatchrc,可以通過運行時指定參數
來改變,如果未找到swatchrc文件,則使用缺省的配置

  watchfor = /.*/
echo = random

4.3 測試

  Swatch啓動時可以帶很多參數,但使用通常如下格式啓動它就可以了:

  /usr/local/bin/swatch -c /var/log/syslogrc -t /var/log/syslog &

  -c參數用於指定配置文件,-t參數指定實時監視的日誌文件,"&"使swatch在後臺
運行。啓動後,swatch產生子進程,因此swatch是以兩個進程運行的,在停止swatch時
必須殺掉兩個進程。

  -t參數是用tail –f filename,從文件的末尾開始查找,如果想查找整個文件,
則應該使用-f filename。

  現在讓我們來實驗一下,在swatch程序所在的目錄下建立swatchrc文件,內容如下

  watchfor = /FAILED/
echo=random

  執行./swatch –c swatchrc –f /var/log/authlog,所有登錄失敗的記錄就會顯
示出來,並且還用不同的顏色來顯示。

  Apr 26 17:43:34 only_you login[2344]: FAILED LOGIN 1 FROM cjm FOR dsf,
Authentication failure
Apr 27 09:55:50 only_you login[932]: FAILED LOGIN 1 FROM (null) FOR
root, Authentication failure

5.總結

  日誌是很強大的工具,然而它的大量數據也很容易淹沒我們。如果我們沒有足夠的
時間去檢查數以兆計的數據時,很可能會忽略那些有用的資料。日誌自動檢測系統可以
幫助我們解決這個問題。這些自動檢測系統將我們所需要的信息實時地通知我們。希望
本文能對如何定製你自己的日誌文件自動檢測系統有一定的幫助。

6.參考資料

[1]《An Introduction to Intrusion Detection& ASSESSMENT》ICSA, Inc.


[2]http://www.psionic.com


[3] 《The Common Intrusion Detection Framework Architecture》


Phil Porras, SRI


Dan Schnackenberg, Boeing


Stuart Staniford-Chen, UC


Davis, editor


Maureen Stillman, Oddysey Research


Felix Wu, NCSU

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章