Linux系統下可通過history命令查看用戶所有的歷史操作記錄,在安全應急回應中起著非常重要的作用,但在未進行附加配置情況下,history命令只能查看用戶歷史操作記錄,并不能區分用戶以及操作時間,不便于審計分析,
當然,一些不好的操作習慣也可能通過命令歷史泄露敏感資訊,
下面我們來介紹如何讓history日志記錄更細化,更便于我們審計分析,
1、命令歷史記錄中加時間
默認情況下如下圖所示,沒有命令執行時間,不利于審計分析,

通過設定export HISTTIMEFORMAT='%F %T ',讓歷史記錄中帶上命令執行時間,
注意”%T”和后面的”’”之間有空格,不然查看歷史記錄的時候,時間和命令之間沒有分割,
要一勞永逸,這個配置可以寫在/etc/profile中,當然如果要對指定用戶做配置,這個配置可以寫在/home/$USER/.bash_profile中,
本文將以/etc/profile為例進行演示,

要使配置立即生效請執行source /etc/profile,我們再查看history記錄,可以看到記錄中帶上了命令執行時間,

如果想要實作更細化的記錄,比如登陸過系統的用戶、IP地址、操作命令以及操作時間一一對應,可以通過在/etc/profile里面加入以下代碼實作
export HISTTIMEFORMAT="%F %Twho -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'``whoami ",注意空格都是必須的,

修改/etc/profile并加載后,history記錄如下,時間、IP、用戶及執行的命令都一一對應,

通過以上配置,我們基本上可以滿足日常的審計作業了,但了解系統的朋友應該很容易看出來,這種方法只是設定了環境變數,攻擊者unset掉這個環境變數,或者直接洗掉命令歷史,對于安全應急來說,這無疑是一個災難,
針對這樣的問題,我們應該如何應對,下面才是我們今天的重點,通過修改bash原始碼,讓history記錄通過syslog發送到遠程logserver中,大大增加了攻擊者對history記錄完整性破壞的難度,
2、修改bash原始碼,支持syslog記錄
首先下載bash原始碼,可以從gnu.org下載,這里不做詳細說明了,系統需要安裝gcc等編譯環境,我們用bash4.4版本做演示,
修改原始碼:bashhist.c

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

編譯安裝,編譯程序不做詳細說明,本文中使用的編譯引數為: ./configure --prefix=/usr/local/bash,安裝成功后對應目錄如下:

此時可以修改/etc/passwd中用戶shell環境,也可以用編譯好的檔案直接替換原有的bash二進制檔案,但最好對原檔案做好備份,另外,關注公眾號Java技術堆疊,在后臺回復:面試,可以獲取我整理的 Java/ Linux 系列面試題和答案,非常齊全,
替換時要注意兩點:
1、一定要給可執行權限,默認是有的,不過有時候下載到windows系統后,再上傳就沒有可執行權限了,這里一定要確定,不然你會后悔的;
2、替換時原bash被占用,可以修改原用戶的bash環境后再進行替換,
查看效果,我們發現history記錄已經寫到了/var/log/message中,

如果要寫到遠程logserver,需要配置syslog服務,具體配置這里不做詳細講解,大家自己研究,發送到遠端logserver效果如下圖所示,

通過以上手段,可以有效保證history記錄的完整性,避免攻擊者登錄系統后,通過取消環境變數、洗掉history記錄等方式抹掉操作行為,為安全審計、應急回應等提供了完整的原始資料,
來源:懸鏡安全實驗室
地址:http://lab.xmirror.cn/2017/05/26/sdlwdzj/
近期熱文推薦:
1.600+ 道 Java面試題及答案整理(2021最新版)
2.終于靠開源專案弄到 IntelliJ IDEA 激活碼了,真香!
3.阿里 Mock 工具正式開源,干掉市面上所有 Mock 工具!
4.Spring Cloud 2020.0.0 正式發布,全新顛覆性版本!
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266575.html
標籤:Java
上一篇:資料系結
下一篇:Java并發編程之執行緒的停止
