怎麼知道誰動了個人 Linux 主機?

Linux系統下可經過history命令查看用戶全部的歷史操做記錄,在安全應急響應中起着很是重要的做用,但在未進行附加配置狀況下,history命令只能查看用戶歷史操做記錄,並不能區分用戶以及操做時間,不便於審計分析。java

固然,一些很差的操做習慣也可能經過命令歷史泄露敏感信息。面試

下面咱們來介紹如何讓history日誌記錄更細化,更便於咱們審計分析。spring

一、命令歷史記錄中加時間

默認狀況下以下圖所示,沒有命令執行時間,不利於審計分析。shell

經過設置export HISTTIMEFORMAT='%F %T ',讓歷史記錄中帶上命令執行時間。windows

注意」%T」和後面的」’」之間有空格,否則查看歷史記錄的時候,時間和命令之間沒有分割。安全

要一勞永逸,這個配置能夠寫在/etc/profile中,固然若是要對指定用戶作配置,這個配置能夠寫在/home/$USER/.bash_profile中。bash

本文將以/etc/profile爲例進行演示。intellij-idea

要使配置當即生效請執行source /etc/profile,咱們再查看history記錄,能夠看到記錄中帶上了命令執行時間。ide

若是想要實現更細化的記錄,好比登錄過系統的用戶、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記錄完整性破壞的難度。

二、修改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 系列面試題和答案,很是齊全。

替換時要注意兩點:

一、必定要給可執行權限,默認是有的,不過有時候下載到windows系統後,再上傳就沒有可執行權限了,這裏必定要肯定,否則你會後悔的;

二、替換時原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開發手冊(嵩山版)》最新發布,速速下載!

以爲不錯,別忘了隨手點贊+轉發哦!

相關文章
相關標籤/搜索