本篇文章是懸鏡安全實(shí)驗(yàn)室運(yùn)維小伙們寫(xiě)的一篇文章,適合初中級(jí)運(yùn)維人員閱讀。作者結(jié)合自己多年豐富的工作實(shí)戰(zhàn)經(jīng)驗(yàn),以簡(jiǎn)單、通俗易懂方式講述了如何活用history命令。

Linux系統(tǒng)下可通過(guò)history命令查看用戶(hù)所有的歷史操作記錄,在安全應(yīng)急響應(yīng)中起著非常重要的作用,但在未進(jìn)行附加配置情況下,history命令只能查看用戶(hù)歷史操作記錄,并不能區(qū)分用戶(hù)以及操作時(shí)間,不便于審計(jì)分析。
當(dāng)然,一些不好的操作習(xí)慣也可能通過(guò)命令歷史泄露敏感信息。
下面我們來(lái)介紹如何讓history日志記錄更細(xì)化,更便于我們審計(jì)分析。
1、命令歷史記錄中加時(shí)間
默認(rèn)情況下如下圖所示,沒(méi)有命令執(zhí)行時(shí)間,不利于審計(jì)分析。

通過(guò)設(shè)置export HISTTIMEFORMAT=’%F %T ‘,讓歷史記錄中帶上命令執(zhí)行時(shí)間。
注意”%T”和后面的”’”之間有空格,不然查看歷史記錄的時(shí)候,時(shí)間和命令之間沒(méi)有分割。
要一勞永逸,這個(gè)配置可以寫(xiě)在/etc/profile中,當(dāng)然如果要對(duì)指定用戶(hù)做配置,這個(gè)配置可以寫(xiě)在/home/$USER/.bash_profile中。
本文將以/etc/profile為例進(jìn)行演示。

要使配置立即生效請(qǐng)執(zhí)行source /etc/profile,我們?cè)俨榭磆istory記錄,可以看到記錄中帶上了命令執(zhí)行時(shí)間。

如果想要實(shí)現(xiàn)更細(xì)化的記錄,比如登陸過(guò)系統(tǒng)的用戶(hù)、IP地址、操作命令以及操作時(shí)間一一對(duì)應(yīng),可以通過(guò)在/etc/profile里面加入以下代碼實(shí)現(xiàn)
export HISTTIMEFORMAT=”%F %Twho -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'whoami ”,注意空格都是必須的。

修改/etc/profile并加載后,history記錄如下,時(shí)間、IP、用戶(hù)及執(zhí)行的命令都一一對(duì)應(yīng)。

通過(guò)以上配置,我們基本上可以滿(mǎn)足日常的審計(jì)工作了,但了解系統(tǒng)的朋友應(yīng)該很容易看出來(lái),這種方法只是設(shè)置了環(huán)境變量,攻擊者unset掉這個(gè)環(huán)境變量,或者直接刪除命令歷史,對(duì)于安全應(yīng)急來(lái)說(shuō),這無(wú)疑是一個(gè)災(zāi)難。
針對(duì)這樣的問(wèn)題,我們應(yīng)該如何應(yīng)對(duì),下面才是我們今天的重點(diǎn),通過(guò)修改bash源碼,讓history記錄通過(guò)syslog發(fā)送到遠(yuǎn)程logserver中,大大增加了攻擊者對(duì)history記錄完整性破壞的難度。
2、修改bash源碼,支持syslog記錄
首先下載bash源碼,可以從gnu.org下載,這里不做詳細(xì)說(shuō)明了,系統(tǒng)需要安裝gcc等編譯環(huán)境。我們用bash4.4版本做演示。
修改源碼:bashhist.c

修改源碼config-top.h,取消/#define SYSLOG_HISTORY/這行的注釋

編譯安裝,編譯過(guò)程不做詳細(xì)說(shuō)明,本文中使用的編譯參數(shù)為: ./configure –prefix=/usr/local/bash,安裝成功后對(duì)應(yīng)目錄如下:

此時(shí)可以修改/etc/passwd中用戶(hù)shell環(huán)境,也可以用編譯好的文件直接替換原有的bash二進(jìn)制文件,但最好對(duì)原文件做好備份。
替換時(shí)要注意兩點(diǎn):
1、一定要給可執(zhí)行權(quán)限,默認(rèn)是有的,不過(guò)有時(shí)候下載到windows系統(tǒng)后,再上傳就沒(méi)有可執(zhí)行權(quán)限了,這里一定要確定,不然你會(huì)后悔的;
2、替換時(shí)原bash被占用,可以修改原用戶(hù)的bash環(huán)境后再進(jìn)行替換。
查看效果,我們發(fā)現(xiàn)history記錄已經(jīng)寫(xiě)到了/var/log/message中。

如果要寫(xiě)到遠(yuǎn)程logserver,需要配置syslog服務(wù),具體配置這里不做詳細(xì)講解,大家自己研究,發(fā)送到遠(yuǎn)端logserver效果如下圖所示。

通過(guò)以上手段,可以有效保證history記錄的完整性,避免攻擊者登錄系統(tǒng)后,通過(guò)取消環(huán)境變量、刪除history記錄等方式抹掉操作行為,為安全審計(jì)、應(yīng)急響應(yīng)等提供了完整的原始數(shù)據(jù)。
|