ubuntu History命令顯示操作時間、使用者和登入IP

來源:互聯網
上載者:User

0x01 背景
在ubuntu系統的維護中,經常會用到history命令。
但是考慮到同事誤操作責任追究以及被入侵後的線索追查,ubuntu系統中預設提供的history命令難以滿足我們的需求。
經過一番調研,發現可以通過修改/etc/profile 檔案 一定程度上滿足需求。
0x02 需求
執行history命令時能夠實現以下效果:
(1)顯示命令執行的時間
(2)顯示執行命令的使用者名稱
(3)顯示執行命令的使用者的源IP
(4)A使用者可以方便的查看B使用者的記錄
0x03 配置實現
要實現第二小節中的前兩個需求,只需要簡單配置/etc/profile檔案即可,即在/etc/profile檔案尾追加以下內容:

export HISTTIMEFORMAT="%F %T `whoami` "

要實現第三個需求,稍微複雜一點,需要首先通過 以下命令來擷取登入源IP:

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]thenUSER_IP=`hostname`

然後再export HISTTIMEFORMAT時,將USER_IP作為參量寫入HISTTIMEFORMAT,即:

export HISTTIMEFORMAT="%F %T $USER_IP:`whoami` "

而要實現第四個需求,則需要修改記錄的存放位置,預設情況下,記錄是儲存在使用者目錄下的.bash_history(完整路徑為/home/使用者名稱/.bash_history)檔案中的,所以A使用者要訪問B使用者的記錄必須先提升自己為root許可權,否則是無法開啟B使用者的home目錄的,即使擁有了root許可權,如果系統有10個使用者,則需要進入10個不同的檔案夾查看各個檔案夾下的.bash_history檔案,從而實現尋找所有擁有所有記錄的目的。
為了方便,可以利用HISTFILE環境變數,將所有使用者的記錄,集中到一個目錄下,通過使用者名稱區分各自的記錄檔案:

export HISTFILE="/opt/history/${LOGNAME}"

綜合以上所以小技巧,我們不難得到以下指令碼:

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]thenUSER_IP=`hostname`fiif [ ! -d /opt/history ]thenmkdir /opt/historychmod 777 /opt/historyfiif [ ! -d /opt/history/${LOGNAME} ]thenmkdir /opt/history/${LOGNAME}chmod 300 /opt/history/${LOGNAME}fiexport HISTSIZE=4096export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] "export HISTFILE="/opt/history/${LOGNAME}.history"chmod 600 /opt/history/*history* 2>/dev/null

將以上代碼追加到/etc/profile檔案末尾即可,然後退出登入再重新登入,即可發現history的顯示格式和隱藏檔都發生了變化。

0x04總結分析
對於需求中的第二條,其實是比較冗餘的,一個使用者執行history只顯示自己的記錄才是符合常理的,如果執行history,可以連其它使用者的執行記錄都列印出來,雖然有使用者名稱這個欄位來區分,但是一眼看去,區分起來還是比較麻煩的,而通過HISTFILE將所有使用者的記錄隱藏檔集中到一個目錄下,即可以方便管理員查看所有使用者命令,又不會影響各個使用者自己執行的效果。
到此,藉助第三小節的最後的整合配置,可以為系統維護人員提供極大的管理遍曆,但是依然有一個小瑕疵:
記錄隱藏檔中儲存了曆史操作的命令記錄,但是時間和使用者名稱以及IP卻不是可顯的,其內容格式如下:

#1359020553ifconfig#1359020554ls#1359020559cat /etc/profile

很明顯#1359020559是該cat /etc/profile的執行時間,儘管系統可以準確的識別並格式化為易人話的資料並輸出,但檔案中儲存的內容卻不方便人工閱讀,並且檔案中並為記錄該命令執行的使用者名稱和登入源IP(或許應該在其它檔案中有記錄,但是暫時不確定history命令是如何定位執行某個命令的使用者名稱和登入源IP的)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.