GB | BIG5
|
| 首頁 > 系統管理 > 其它 > 正文 |
 |
| 構建日志系統 |
| 本文出自: 作者: (2001-10-11 12:00:02) |
log是管理員每日需要查看的文件記錄。裡面記載了大量系統正常和不正常的運行信息,
對管理員分析系統的狀況,監視系統的活動是一個相當重要的部分。如何有效的利用
系統的log來 分析和定位攻擊的可能呢?我將在下面的文章,介紹一下有關syslog如
何配置和如何使用第三方 工具檢查問題。
/etc/syslog.conf文件
設備.行為級別 [;設備.行為級別] 記錄行為
注意各欄之間用[Tab]來分隔,用空格是無效的。
注釋:
第一欄:設備 描述
auth認証系統,即詢問用戶名和口令
cron 系統定時系統執行定時任務時發出的信息
daemon某些系統的守護程序的syslog,如由in.ftpd產生的log
kern 內核的syslog信息
lpr 打印機的syslog信息
mail 郵件系統的syslog信息
mark 定時發送消息的時標程序
news 新聞系統的syslog信息
user本地用戶應用程序的syslog信息
uucp uucp子系統的syslog信息
local0..7 種本地類型的syslog信息,這些信息可以又用戶來定義
*:代表以上各種設備
第二欄:行為級別 描述(危險程度遞加)
debug 程序的調試信息
info 信息消息
notice 要注意的消息
warning 警告
err 一般性錯誤
crit 嚴重情況
alert 應該立即被糾正的情況
emerg緊急情況
none 指定的服務程序未給所選擇的
第三欄:記錄歸屬(舉例) 描述
/dev/console send messages to devices 控制台,實際上是可以任何合法的設備名
/var/adm/messages write messages to files 寫入/var/adm/messages,定義這裡可
以分類
寫到不同的log文件中@loghost forward messages to a loghost 其他的日志記錄服
務器. 也叫loghost主機fred,user1 send messages to users 傳送消息給某用戶
(但此用戶正登陸的時候可以看到)
*:send messages to all logged-in users 傳送消息給所有的在線用戶
@符號面可以是ip,也可以是域名,默認在/etc/hosts文件下loghost這個別名已經指
定給了本機。
另外這一欄也支持m4的宏,下面我們看到的是一個標準的m4宏。在syslog.conf裡可以通過
define(`LOGHOST`,hostname)來定義LOGHOST這個常量,注意的是這個LOGHOST可以不是
/etc/hosts下 的loghost這個別名所指向的主機.
ifdef(`LOGHOST', ,
user.err /dev/sysmsg
user.err /var/adm/messages
user.alert `root, operator'
user.emerg *
)
如果用打印機來記錄日志文件,可以採用如下方法:
把打印機連接到終端端口/dev/ttya上,在/etc/syslog.conf中加入配置語句.
Auth.notice /dev/ttya
如果是記錄到log文件中,一定要注意此文件必須存在,且文件屬性為600,否則無法記
錄log信息
配置舉例
這裡舉一個比較通用的例子,某一台主機的log記錄要求,所有的認証信息存到auth.log ,
各個deamon 的log,包括telnet,ftp的連接和狀態記錄到deamon.log,mail log單獨記錄
到maillog.log文件,其他 信息記錄與messages裡面.另外所有的這些log同樣要傳到一台
特定的loghost主機。我們首先在 /etc/hosts中定義一台主機的別名為loghost(當然你
可以也可以直接在syslog.conf裡指定loghost)
如
192.168.1.88 deepin.nsfocus.com loghost
下面是符合條件的 syslog.conf的內容: *.info;mail.none;auth.none;deamon.none
/var/adm/messages *.info;mail.none;auth.none;deamon.none @loghost
auth.notice /var/log/auth.log
auth.notice @loghost
deamon.info /var/log/deamon.log
deamon.info @loghost
mail.debug /var/log/mail.log
mail.debug @loghost
改好syslog.conf以,在定義的目錄下確認log文件是否存在,不存在,就用
touch /var/log/auth.log;chmod 600 /var/log/auth.log來建立一個.另外..不要忘記給
syslog發 一個-HUP的信號.用ps ef |grep syslogd找出syslogd的PID,再用
kill HUP (剛才查到的)PID 來讓syslogd重新讀取syslog.conf.定義的loghost需要配置嗎?
還是要作一點工作的.實際上最簡單 的方法是用*.info /var/log/all.log 把所有主機各種
級別的log記到一個大文件裡面。如果你在loghost上也想分類,按照常規寫就是了。 在log
記錄中會有一個域標識主機名來區別來源不同主機的log記錄。
是不是比想像的簡單?實際上也沒有必要用m4的宏,直接寫也很明了。要注意的是按照syslog
的man 裡面的說明,notice級別比info,waring低,但notice級別並不被Info包括也就是說用
auth.waring或 auth.ifo是無法記錄在認証時的系統信息的,不過這是在solairs下使用的結
果,在linux和solairs 又不一樣,auth.waring可以記錄認証信息。
那local0-7這幾個設備名是怎回事呢? 實際上用他們來記錄自己開發的程序的信息是很
方便的。例如在你寫的某個shell腳本裡,使用類似 與:
logger p local0.notice t [tag]…這樣的語句,可以利用syslogd幫你記錄運行的信息,
當然你的syslog.conf也要加上一條 local0.notice/var/log/myapps.log 具體logger的
用法,man logger看看就知道了。
Logcheck
由業務繁忙的主機log往往相當巨大,很多無用的信息會把值得注意的log信息淹沒起來,
對管理 員審計log相當不便,所以一些“偷懶”的管理員們往往自己寫上一些腳本來作log
的分類和整理工作。 當然,這些腳本也很容易在 internet上找到,一個易使用且功能比較
強大的工具是logcheck。 Logcheck可以在
http://www.psionic.com/tools/logcheck-1.1.1.tar.gz 獲得,安裝是相當簡便的, 僅僅只
有一個標準的c程序需要編譯,主要運行部分是一個shell腳本。
解開壓縮包以,運行make,按照它的提示選擇你所使用的操作系統以重新make以,很快
就能安裝 完畢。配置文件和主運行腳本均默認安裝在/usr/local/etc下主要是 logcheck.sh
主要運行腳本,負責分析本次的log並匯報結果 logcheck.hacking可能有人攻擊而在log記錄
中出現的關鍵詞 例如,此文件裡面默認包括了以下一些關鍵詞
"wiz"
"WIZ"
"debug"
"DEBUG"
ATTACK
nested
VRFY bbs
VRFY decode
VRFY uudecode
VRFY lp
VRFY demo
VRFY guest
VRFY root
VRFY uucp
VRFY oracle
VRFY sybase
VRFY games
vrfy bbs
vrfy decode
vrfy uudecode
vrfy lp
vrfy demo
vrfy guest
vrfy root
vrfy uucp
vrfy oracle
vrfy sybase
vrfy games
expn decode
expn uudecode
expn wheel
expn root
EXPN decode
EXPN uudecode
EXPN wheel
EXPN root
LOGIN root REFUSED
rlogind.*: Connection from .* on illegal port
rshd.*: Connection from .* on illegal port
sendmail.*: user .* attempted to run daemon
uucico.*: refused connect from .*
tftpd.*: refused connect from .*
login.*: .*LOGIN FAILURE.* FROM .*root
login.*: .*LOGIN FAILURE.* FROM .*guest
login.*: .*LOGIN FAILURE.* FROM .*bin
login.*: .*LOGIN FAILURE.* FROM .*uucp
login.*: .*LOGIN FAILURE.* FROM .*adm
login.*: .*LOGIN FAILURE.* FROM .*bbs
login.*: .*LOGIN FAILURE.* FROM .*games
login.*: .*LOGIN FAILURE.* FROM .*sync
login.*: .*LOGIN FAILURE.* FROM .*oracle
login.*: .*LOGIN FAILURE.* FROM .*sybase
attackalert
同樣,你可以自己分析系統的log,刪除或增加必要的關鍵詞
logcheck.violations 系統運行時出現的異常信息的關鍵詞 logcheck.violations.ignore
系統出現異常信息,但包含在這個文件中的關鍵詞的log記錄視為正常, 並不作為logcheck
報告異常信息的一部分logcheck.ignore 系統出現可能攻擊的記錄,但由包含在 這個文件
中的關鍵詞的log記錄視為正常,並不作為logcheck報告攻擊部分的一部分
在安裝完成以,你還需要作以下兩件事,一個是修改logcheck.sh中的一些參數使它符合你
的要求, 一個是在你的cron任務裡增加定時檢測的任務。
Logcheck,sh裡面注意的參數主要是:
# Person to send log activity to.
SYSADMIN=root
默認把logcheck的報告發給本機的root..當然你可能希望發給自己的信箱,改這裡就可以了,
如果你 希望把結果發給幾個人,自己定義mial的別名去吧。
另一個位置:
# SunOS, Sun Solaris 2.5
$LOGTAIL /var/log/syslog > $TMPDIR/check.$$
$LOGTAIL /var/adm/messages >> $TMPDIR/check.$$ 這個是sun標準存放log的地方,當然,
我們不是自己定義過log的存放地點嗎?加上我們自己要檢查的log文件
$LOGTAIL /var/log/auth.log >> $TMPDIR/check.$$
$LOGTAIL /var/log/deamon.log >> $TMPDIR/check.$$
$LOGTAIL /var/log/mail.log >> $TMPDIR/check.$$
下面就是要服務器幫你自動用logcheck.sh來檢查你的log了。。不要告訴我你不會用cron來作
這件事。。。 對log記錄很多的主機每天就分析幾次,對firewall主機這類產生標準log
很少的主機每30-60分鐘檢查 一次不會對系統有什負擔。
使用了logcheck加上一個集中的loghost,對管理一個擁有大量主機的網絡系統,能大大的降低
勞動強度,也便 及時的發現系統的異常情況,阻止可能的攻擊行為。最一句。。。集中
管理大型網絡的log..loghost主機 的存放log記錄的硬盤一定要大,不然撐爆了是不能記錄任
何log的:) …當然你可以時常備份這些log,再刪除老 的log文件,刪除以…別忘了馬上再touch
一個新的log文件..syslogd不會幫你檢查和建立這個文件的,不過你 倒是可以在備份腳本裡作
這件事
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
在HP-UX下讀取磁盤陣列的日志文件 (2002-01-05 08:30:00) 構建日志系統 (2001-10-11 12:00:02) 分析DNS日志 (2001-10-11 10:00:00) UNIX系列系統入侵教程 之三 UNIX系統門的安放和日志的擦除 (2001-05-31 20:10:00) linux日志管理 (2001-05-19 22:08:00) UNIX系統門的安放和日志的擦除 (2001-05-19 13:04:00) Apche日志系列(5):高級技術 (2001-05-16 20:57:21) Apche日志系列(4):日志分析 (2001-05-16 20:57:02) Apche日志系列(3):定制日志 (2001-05-16 20:56:44) Apche日志系列(2):錯誤日志 (2001-05-16 20:56:18)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |