假設你是一位使用solaris操作系統的網站管理員,有一天你無意中在你硬盤/var/adm目錄下messages文件中看到了如下類似內容: Apr 24 20:31:04 nmssa /usr/dt/bin/rpc.ttdbserverd[405]: _Tt_file_system::findBest MountPoint -- max_match_entry is null, aborting… Apr 24 20:31:05 nmssa inetd[140]: /usr/dt/bin/rpc.ttdbserverd: Segmentation Faul t - core dumped 知道這意味著什麼嗎?你的系統已有至少99%的可能性被侵入! 目前使用solaris的系統管理員都知道在/var區下有個目錄adm,在這個目錄下有messags,syslog,sulog,utmp等諸多日志文件,它們記錄著solaris系統產生的各種消息日志。從系統管理員的角度來講,清楚的理解各個日志文件的功能及作用是很有必要的,在系統發生安全問題時,這些日志紀錄可以在一定意義上起到幫助和診斷作用。 我們來依次看看Adm目錄下的主要文件。 adm/messags 我們先來看最為重要的messages文件, messages記載來自系統核心的各種運行日志,包括各種精靈,如認證,inetd等進程的消息及系統特殊狀態,如溫度超高等的系統消息,可以說它是系統最重要的日志之一。 messages可以記載的內容是由/etc/syslog.conf決定的,有興趣的讀者可以使用man syslog.conf命令來做一個詳細了解,這裡就不介紹了。就安全的角度來講,目前互聯網上入侵者采用的手段大多數是利用系統的漏洞,而當入侵者試圖利用漏洞對你的服務器進行攻擊時,在服務器的messages文件中一般會留下一些異常的內容,如本文最開始描述的部分,就是目前互聯網上入侵者使用rpc.ttdbserver漏洞攻擊所留下的痕跡,它是solaris最為臭名昭著的一個系統漏洞,入侵者利用這個漏洞可以輕松的從遠端得到超級用戶權限,但這種攻擊不是干淨的入侵攻擊,它會在messages下留下記錄,同時會在根目錄下生成core文件,如果細心的管理員經常檢查系統日志,是不難發現有入侵者或入侵企圖的,又比如下面的紀錄: Apr 24 11:26:25 unix.secu.com FTPd[7261]: anonymous (bogus) LOGIN FAILED [from 11.22.33.46] Apr 24 11:27:23 unix.secu.com ftpd[7264]: 163 (bogus) LOGIN FAILED [from 11.22.33.49] Apr 24 11:28:44 unix.secu.com ftpd[7265]: abc (bogus) LOGIN FAILED [from 11.22.33.46] 管理員可以從上述紀錄中可以清楚看到在24日11點26, 11點27, 11點28分有可疑用戶在猜主機的ftp口令,它們的來源ip 分別是 11.22.33.46和11.22.33.49。 adm/sulog sulog中記載著普通用戶嘗試su成為其它用戶的紀錄。它的格式為: 發生時間 +/-(成功/失敗) pts號 當前用戶欲su成的用戶 我們截取一部分實際內容,來看一下: SU 04/15 16:35 + pts/6 yiming-root SU 04/15 16:43 + pts/4 root-yiming SU 04/17 08:20 - pts/5 cheny-root SU 04/18 16:36 - pts/4 cheny-root SU 04/19 02:57 + pts/11 lizhao-root SU 04/19 19:57 + pts/11 cys-root SU 04/21 08:20 - pts/4 cheny-root SU 04/21 16:36 - pts/8 cheny-root SU 04/22 15:23 - pts/5 cheny-root 對管理員來講,需要密切關注兩種用戶,第一是反復su失敗的,如以上cheny用戶,他有猜超級用戶口令的嫌疑。第二是在不正常時間的su紀錄,如上述第六行用戶lizhao,隨然他正確的輸入了口令(在第四列中有+號)但02:57分這個時間比較可疑,這是一個管理員不大可能工作的時間,要知道,入侵者可能安裝過sniffer之類的軟件,並利用它竊取到了超級用戶口令,為了進一步做工作,如竊取主機敏感數據,入侵者需要進行比較復雜的操作,但在白天這個系統管理員活動的時間被發現的可能性是比較大的,所以即使入侵者得到了高權限的密碼,一般也會選擇深夜等管理員一般不工作的時間。這些時候沒有人會抓他。 adm/utmp,utmpx 這兩個文件是不具可讀性的,它們記錄著當前登錄在主機上的用戶,管理員可以用w,who等命令來看,下面為who的輸出結果, yiming pts/29 Jun 12 09:24 (11.22.33.44) yiming pts/28 Jun 12 08:41 (11.22.33.43) guest pts/30 Jun 12 09:26 (penetrate.hacker.com) root pts/19 Jun 12 08:19 (:0.0) 它的輸出很簡單,每行依次為用戶,pts號,時間,來源地點。當管理員覺得系統表現可疑時,一般會用這兩個命令來看當前用戶,如果在輸出中有不正常的用戶名,或是來源ip較為可疑,則管理員需要引起注意了。如上述guest這個用戶就比較可疑,雖然這個用戶名guest是合法的,但這個用戶的來源penetrate.Hacker.com看起來可是不太對勁。系統管理員有必要監視一下這個用戶的行為。有一點要注意,管理員不能完全相信w,who及下面提到的last命令所報告的結果,使用特定的擦除日志軟件,如zap之類入侵者可以很輕松的抹掉入侵者的蹤跡,一個聰明的入侵者一般會將編譯好的擦除軟件傳到受害主機,並在侵入系統後馬上做擦除工作,比如他在受害主機執行zap,如下, ./zap -v guest - WTMP: WTMP = /var/adm/wtmp Removing user guest at pos: 131328 Done! - UTMP: UTMP = /var/adm/utmp Removing user guest at pos: 864 Done! - LASTLOG: LASTLOG = /var/adm/lastlog User guest has no wtmp record。 Zeroing lastlog。。 - WTMPX: WTMPX = /var/adm/wtmpx Done! - UTMPX: UTMPX = /var/adm/utmpx Done! 此時,在用w看時,我們看看發生了什麼變化? yiming pts/29 Jun 12 09:24 (11.22.33.44) yiming pts/28 Jun 12 08:41 (11.22.33.43) root pts/19 Jun 12 08:19 (:0.0) 我們可以看到入侵者消失了!這對入侵者是個好消息,但對一個安全意識較差的系統管理員而言,這台主機可不大妙了。建議如果系統看起來不大對勁,而用w,last等看出不出來端倪的話,還是安裝其它系統監視軟件如ttywatcher,ethereal等仔細審核一下。 adm/wtmp,wtmps 這兩個文件相當於歷史紀錄,它們記錄著所有登錄過主機的用戶,時間,來源等內容, 這兩個文件也是不具可讀性的。可用last命令來看,如下。 support pts/13 11.22.33.44 Thu Apr 20 18:40 - 20:50 (02:10) gogo pts/12 11.22.33.45 Thu Apr 20 1:53 - 17:21 (02:28) root ftp secu.unix.com Wed Apr 19 14:58 - 14:58 (00:00) 管理員要注意那些發生在不正常時間或是來自可疑地點的登錄紀錄,如上面輸出結果中的gogo用戶,這個時間不太正常。 與上面utmp,utmpx一樣,管理員也應該清楚:last只能給你一個大概的參考,不要完全相信last的結果。 除了上述幾個文件外,在/var/log目錄下還有一個syslog文件,這個文件的內容一般是紀錄mail事件的,管理員應該經常檢查有沒有異常紀錄。 最後來講一講solaris一個很少被用起但卻極為有用的功能---記賬。Solaris操作系統可以通過設置日志文件可以對每個用戶的每一條命令進行紀錄,這一功能默認是不開放的,為了打開它,需要執行/usr/lib/acct目錄下的accton文件,格式如下/usr/lib/acct/accton /var/adm/pacct,在sun的手冊上,只有這一種用法,但這樣做的缺點是明顯的,大多數有經驗的入侵者一定不會放過/var/adm和 /var/log這兩個目錄的,如果它們看到有pacct這個東西,不刪才怪。針對這種情況其實有個很好的解決辦法,執行/usr/lib/acct/accton 後面跟一個別的目錄和文件即可,如/usr/lib/acct/accton /yiming/log/commandlog,這樣入侵者不會在/var/adm/下看到pacct,入侵者也許會刪掉message,syslog等日志,但他並不知道實際上他所有的操作都被記錄在案,管理員事後只要把commandlog這個文件拷貝到/var/adm下,改為pacct ,同時執行讀取命令lastcomm,就一切盡在掌握啦。如lastcomm hack,可得到下面的輸出結果: sh S hack pts/7 0.05 secs Mon Jun 12 14:28 sh F hack pts/7 0.00 secs Mon Jun 12 14:39 ls hack pts/7 0.01 secs Mon Jun 12 14:39 ls hack pts/7 0.02 secs Mon Jun 12 14:39 ls hack pts/7 0.01 secs Mon Jun 12 14:38 df hack pts/7 0.03 secs Mon Jun 12 14:38 ftp hack pts/7 0.02 secs Mon Jun 12 14:37 ls hack pts/7 0.01 secs Mon Jun 12 14:37 vi hack pts/7 0.02 secs Mon Jun 12 14:37 who hack pts/7 0.02 secs Mon Jun 12 14:36 我們從輸出中可以了解用戶hack所做的工作,是不是很爽? 其實網絡安全,可以從一些小的點點滴滴的方面加以注意,使用得當,一樣會起到較好的作用,管理員,從關注你的日志文件開始吧。