Solaris 安全起點

本文為其他網站作者所作,並不是站長的作品,敬請留意!

作者:Yiming Gong
http://security.zz.ha.cn


聲明:任何形式的摘抄必須保留上述作者和http地址

Solaris日誌介紹

假設你是一位元使用solaris作業系統的網站管理員,有一天你無意中在你硬碟/var/adm目錄下messages檔中看到了如下類似內容:

Apr 24 20:31:04 nmssa /usr/dt/bin/rpc.ttdbserverd[405]: _Tt_file_system::findBestMountPoint -- max_match_entry is null, aborting…
Apr 24 20:31:05 nmssa inetd[140]: /usr/dt/bin/rpc.ttdbserverd: Segmentation Fault - 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所做的工作,是不是很爽?

其實網路安全,可以從一些小的點點滴滴的方面加以注意,使用得當,一樣會起到較好的作用,管理員,從關注你的日誌檔開始吧。

 


E-mail : andrew@tophk.net