首頁  >  文章  >  運維  >  linux shell歷史指令記錄功能怎麼用

linux shell歷史指令記錄功能怎麼用

WBOY
WBOY轉載
2023-05-12 13:19:181760瀏覽

在 linux 下面可以使用 history 指令查看使用者的所有歷史操作,同時 shell 指令操作記錄預設會儲存在使用者目錄的 .bash_history 檔案中。透過這個檔案可以查詢 shell 指令的執行歷史,有助於維運人員進行系統稽核和問題排查,同時在伺服器遭受駭客攻擊後,也可以查詢駭客登入伺服器的歷史命令操作。但是駭客在入侵後,為了抹除痕跡,會刪除 .bash_history 文件,這就需要合理備份這個文件了。

預設的 history 指令只能查看使用者的歷史操作記錄,但不能區分每個使用者操作指令的時間。這點對於問題排查相當的不方便。解決方法是在/etc/bashrc 檔案中加入以下四行來讓history 指令自動記錄所有shell 指令的執行時間:

複製程式碼 程式碼如下:

histfilesize=4000
histsize=4000
histt​​imeformat='%f %t'
export histt​​imeformat

histfilesize 表示在.bash_history 檔案中儲存指令的記錄總數,預設值為1000;histsize定義了history 指令輸出的記錄總數;histt​​imeformat 定義了時間顯示格式,該格式與date 指令後的「 "%f %t"」 是一樣的;histt​​imeformat 作為history 的時間變數將值傳遞給history 指令。

進階技巧

上面那個雖然可以記錄時間,但是無法作為審計目的使用,很容易被駭客篡改或遺失。以下這種方法詳細記錄了登入系統的使用者、ip 位址、shell 指令以及詳細操作的時間。並將這些資訊以文件的形式保存在一個安全的地方,以供系統審計和故障排查。

把以下程式碼放入 /etc/profile 檔案中,即可實現上述功能。

複製程式碼 程式碼如下:

#record history operation
user_ip=`who -u am i 2>/dev/null |awk '{print $nf}' |sed -e 's/[()]//g'`
logname=`who -u am i |awk '{print $1}'`
histdir=/user/share/.history
if [ -z $user_ip]
then
    user_ip=`hostname`
fi

if [ ! -d $histdir]
then
    mkdir -p $histdir
    chmod 777 $histdir
fi

if [ ! -d $histdir/${logname}]
then
    mkdir -p $histdir/${logname}
#    mkdir -p $histdir/${logname}
chmod 300 $histdir/${logname}

fi

export histsize=4000


dt=`date "%y%m%d_%h%m%s"`
export histfile="$histdir/${logname}/${user_ip}.history.$dt"
export histt​​imeformat="[%y.%m.%d %h:%m:%s]"
chmod 600 $histdir/${logname}/*.history* 2>/dev/null

####

以上是linux shell歷史指令記錄功能怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除