在/etc/syslog.conf檔案中設定這兩個監視程式預設活動。 日志檔案按/etc/syslog.conf設定檔案中的描述進行組織。下圖是/etc/syslog.conf檔案的内容:
[root@localhost ~]# cat /etc/syslog.conf
# log all kernel messages to the console.
# logging much else clutters up the screen.
#kern.* /dev/console
# log anything (except mail) of level info or higher.
# don’t log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# the authpriv file has restricted access.
authpriv.* /var/log/secure
# log all the mail messages in one place.
mail.* -/var/log/maillog
# log cron stuff
cron.* /var/log/cron
# everybody gets emergency messages
*.emerg *
# save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# save boot messages also to boot.log
local7.* /var/log/boot.log
/etc/syslog.conf檔案
<b>syslog.conf行的基本文法是</b>:
[消息類型][處理方案]
<b>注意</b>:中間的分隔符必須是tab字元!
消息類型是由"消息來源"和"緊急程度"構成,中間用點号連接配接。例如上圖中,news.crit表示來自news的“關鍵”狀況。在這裡,news是消息來源,crit代表關鍵狀況。通配符*能代表一切消息來源。
<b>說明</b>:
第一條語句*.info,将info級以上(notice,warning,err,crit,alert和emerg)的所有消息發送到相應日志檔案。
<b>日志檔案類别(按重要程度分類)</b>
日志檔案能分成八大類,下面按重要性從大到下列出:
emerg emergency,緊急
alert 警報
crit critical,關鍵
err error,錯誤
warning 警告
notice 通知
info 資訊
debug 調試
<b>簡單列一下消息來源</b>
auth 認證系統,如login或su,即詢問使用者名和密碼
cron 系統執行定時任務時發出的資訊
daemon 某些系統的守護程式的 syslog,如由in.ftpd産生的log
kern 核心的資訊
lpr 列印機的資訊
mail 處理郵件的守護程序發出的資訊
mark 定時發送消息的時标程式
news 新聞討論區的守護程序的資訊
user 本地使用者的應用程式的資訊
uucp uucp子系統的資訊
* 表示所有可能的資訊來源
處理方案
"處理方案"選項能對日志進行處理。能把他存入硬碟,轉發到另一台機器或顯示在管理者的終端上。
<b>處理方案一覽</b>:
檔案名 寫入某個檔案,要注意絕對路徑。
@主機名 轉發給另外一台主機的syslogd程式。
@ip位址 同上,隻是用ip位址辨別而已。
/dev/console 發送到本地機器螢幕上。
* 發送到所有使用者的終端上。
|程式 通過管道轉發給某個程式。
<b>例如</b>:
kern.emerg
/dev/console(一旦發生核心的緊急狀況,即時把資訊顯示在控制台上)
<b>說明</b>:
如果想修改syslogd的記錄檔案,首先你必須殺掉syslogd程序,在修改完畢後再啟動syslogd。攻擊者進入系統後通常即時修改系統日志,是以作為網管你應該用一台機器專門處理日志資訊,其他機器的日志自動轉發到他上面,這樣日志資訊一旦産生就即時被轉移,這樣就能正确記錄攻擊者的行為。
<b>将日志檔案記錄到遠端主機</b>
如果有另一個linux或unix系統,那麼能設定日志檔案,讓其把消息發到另外一個系統并記錄下來。這也是為什麼上面的所有日志檔案都記錄了主機名的原因。要實作這個功能,在該設定檔案中,指定一個記錄動作,後面接一個由“@”開頭的遠端系統的主機名,如下例:*.warn; authpriv.notice;auth.notice @bright.hacker.com.cn
同時,還要将接受消息的目的系統設定為允許這種操作。此例主機bright.hacker.com.cn的syslogd守護程序要用-r參數啟動。如果不使用-r參數,則目标主機的syslogd将丢棄這個消息以避免dos攻擊使硬碟塞滿虛假消息。并且確定目标主機的 /etc/service檔案必須設定syslog服務所使用的udp端口514。如果syslogd守護程序用了-r和-h參數,那麼,參數-h将允許轉發消息。也就是說,如果系統b的syslogd用了-h 參數,這樣,當系統a把消息轉發到系統b後,系統b就把來自系統a和他自己的消息轉發到系統c。
<b>将警告資訊發送到控制台</b>
syslogd能将所有從核心發出的重要程度為emerg或alert的資訊發送到控制台。控制台是指虛拟控制台或啟動時加-c參數的xterm。要實作這一功能,在/etc/syslog.conf檔案中加上下面一行:kern.emerg /dev/console 。
這樣,當系統核心發生錯誤而發出消息時,使用者能夠馬上知道并且進行處理。如果用了“*”,就是一旦核心發生錯誤,就将消息發送給所有線上使用者,但隻有這個使用者正在登入的時候才能看到。修改了/etc/syslog.conf檔案後,必須重新啟動syslogd守護程序以使設定更改生效,請執行下面的指令:#/etc/rc.d/init.d/syslog restart。
<b>系統日志</b>
大多數日志位于/var/log目錄中。日志通過标準cron任務logrotate維護,每周輪換日志檔案。這樣,/var/log/boot.log.1檔案是上周的檔案。
下圖是我的fedora core3 /var/log目錄中的内容:
[root@localhost var]# ls /var/log
acpid cups maillog.1 scrollkeeper.log vbox
anaconda.log dmesg messages secure welcome.msg
anaconda.syslog gdm messages.1 secure.1 wtmp
boot.log iiim ppp spooler xorg.0.log
boot.log.1 lastlog prelink.log spooler.1 xorg.0.log.old
cron mail rpmpkgs up2date
cron.1 maillog rpmpkgs.1 up2date.1
/var/log目錄中的内容
<b>/var/log中的系統日志</b>
下面看看/var/log目錄中的系統日志。dmesg檔案包括和linux啟動相關的基本引導資訊。message檔案包括計算機上啟動linux之後的其他處理消息。boot.log檔案列出和監視程式啟動和停止相關的消息。wtmp能幫助監視登入。
<b>dmesg内容</b>
這個檔案末尾更有一個關鍵項目:linux是否正确裝載了檔案系統和交換空間。如果裝載成功,則我的fedoar core3能看到如下消息:
ext3 fs on hda10, internal journal
adding 626524k swap on /dev/hda3. priority:-1 extents:1
kjournald starting. commit interval 5 seconds
表示linux分區上成功地裝載了帶内部雜志的ext3檔案系統。kjournal監視程式(kjournald)實際更新檔案系統雜志。
<b>/var/log/messages消息</b>
/var/log/messages中記錄了和硬體和服務相關聯的其他消息。這個檔案中每一行包括一些基本特征,如每個消息相關的日期,時間,主機名和服務。如果可能,還會列出使用者名和程序辨別符。
<b>分析/var/log/boot.log</b>
啟動和停止服務和監視程式時,會在/var/log/boot.log中列出。下圖顯示此檔案的内容:
may 22 12:15:39 localhost syslog: syslogd startup succeeded
may 22 12:15:39 localhost syslog: klogd startup succeeded
may 22 12:15:39 localhost irqbalance: irqbalance startup succeeded
may 22 12:15:40 localhost portmap: portmap startup succeeded
may 22 12:15:40 localhost nfslock: rpc.statd startup succeeded
may 22 12:15:37 localhost sysctl: net.ipv4.conf.default.rp_filter = 1
may 22 12:15:37 localhost sysctl: net.ipv4.conf.default.accept_source_route = 0
may 22 12:15:37 localhost sysctl: kernel.sysrq = 0
may 22 12:15:40 localhost rpcidmapd: rpc.idmapd startup succeeded
may 22 12:15:37 localhost sysctl: kernel.core_uses_pid = 1
may 22 12:15:37 localhost network: setting network parameters: succeeded
may 22 12:15:37 localhost network: bringing up loopback interface: succeeded
may 22 12:15:40 localhost netfs: mounting other filesystems: succeeded
may 22 12:15:41 localhost autofs: automount startup succeeded
may 22 12:15:41 localhost mdnsresponder: startup succeeded
may 22 12:15:42 localhost smartd: smartd startup succeeded
may 22 12:15:42 localhost acpid: acpid startup succeeded
may 22 12:15:44 localhost cups: cupsd startup succeeded
may 22 12:15:44 localhost sshd: succeeded
may 22 12:15:44 localhost xinetd: xinetd startup succeeded
may 22 12:15:45 localhost sendmail: sendmail startup succeeded
may 22 12:15:45 localhost sendmail: sm-client startup succeeded
may 22 12:15:45 localhost gpm: gpm startup succeeded
may 22 12:15:45 localhost iiim: htt startup succeeded
may 22 12:15:46 localhost crond: crond startup succeeded
may 22 12:15:47 localhost xfs: xfs startup succeeded
may 22 12:15:47 localhost anacron: anacron startup succeeded
may 22 12:15:47 localhost atd: atd startup succeeded
may 22 12:15:47 localhost readahead: starting background readahead:
may 22 12:15:48 localhost rc: starting readahead: succeeded
may 22 12:15:48 localhost messagebus: messagebus startup succeeded
may 22 12:15:48 localhost cups-config-daemon: cups-config-daemon startup succeeded
may 22 12:15:49 localhost haldaemon: haldaemon startup succeeded
may 22 13:20:59 localhost cups: cupsd shutdown succeeded
may 22 13:21:03 localhost cups: cupsd startup succeeded
/var/log/boot.log檔案
這是5月22日的消息。
<b>探測遠端登入</b>
登入記錄放在一個資料庫檔案/var/log/wtmp中。能用utmpdump指令使這個檔案變成可讀格式。以下圖為例,這是運作utmpdump /var/log/wtmp的部分輸出。
[5] [02879] [4 ] [ ] [ ] [2.6.9-1.667 ] [0.0.0.0 ] [mon may 22 12:15:49 2006 cst]
[6] [02909] [5 ] [login ] [tty5 ] [ ] [0.0.0.0 ] [mon may 22 12:15:49 2006 cst]
[5] [02909] [5 ] [ ] [ ] [2.6.9-1.667 ] [0.0.0.0 ] [mon may 22 12:15:49 2006 cst]
[5] [02920] [6 ] [ ] [ ] [2.6.9-1.667 ] [0.0.0.0 ] [mon may 22 12:15:49 2006 cst]
[6] [02920] [6 ] [login ] [tty6 ] [ ] [0.0.0.0 ] [mon may 22 12:15:50 2006 cst]
[5] [02921] [x ] [ ] [ ] [2.6.9-1.667 ] [0.0.0.0 ] [mon may 22 12:15:50 2006 cst]
[7] [03397] [:0 ] [root ] [:0 ] [ ] [0.0.0.0 ] [mon may 22 12:16:08 2006 cst]
[7] [03630] [/0 ] [root ] [pts/0 ] [:0.0 ] [0.0.0.0 ] [mon may 22 12:26:34 2006 cst]
[7] [03700] [/0 ] [root ] [pts/0 ] [:0.0 ] [0.0.0.0 ] [mon may 22 12:47:56 2006 cst]
[7] [04458] [/0 ] [root ] [pts/0 ] [:0.0 ] [0.0.0.0 ] [mon may 22 13:55:24 2006 cst]
檢查登入活動
應該知道區域網路的ip位址。如果在上圖中出現一些未知的ip位址,那麼要當心了,或許已有人入侵我們的系統了。
<b>監視程式日志</b>
大多數linux監視程度都在/var/log目錄中配制日志檔案,如crond,httpd和smbd。每個日志檔案能顯示特定服務成功活失敗。下圖顯示的是/var/log/cron檔案的内容。
[root@localhost log]# cat /var/log/cron
may 22 13:23:29 localhost anacron[2721]: job `cron.daily’ terminated
may 22 13:23:29 localhost anacron[2721]: normal exit (1 jobs run)
may 22 14:01:01 localhost crond[4482]: (root) cmd (run-parts /etc/cron.hourly)
may 22 15:01:01 localhost crond[4536]: (root) cmd (run-parts /etc/cron.hourly)
/var/log/cron檔案
從圖中能看出執行cron任務的日期和時間。這是标準cron任務。盡管這裡的時間和/etc/crontab中指定的不同,但這隻表明這台linux計算機沒有在指定的時間運作。
在linux系統中增加更多監視程式時,/var/log目錄中會出現更多日志檔案。不過,日志檔案也不一定放在/var/log目錄中,這是由每個監視程式的配制檔案确定的。
<b>其他日志</b>
在/var/log目錄中更有幾個其他日志檔案。增加更多服務時,會出現更多日志檔案。