亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

完善Linux/UNIX審計 將每個shell命令記入日志

添加時間:2012-6-8  添加: 51CTO.com 

編者按:為了確保服務器的安全,保留shell命令的執行歷史是非常有用的一條技巧。然而,shell雖然有歷史功能,但是這個功能并非針對審計的目的而設計,因此很容易被用戶篡改或是丟失。本文介紹的步驟能夠幫助你將每個shell命令記入日志(你可以將本文和bash history logging攻防一文參考著閱讀,看看攻防雙方的思路有何不同)。本文作者David Douthitt是一位經驗豐富的UNIX和Linux系統管理員,曾做過Linux發行版的打包工作,也是《Advanced Topics in System Administration》和《GNU Screen: A Comprehensive Manual》兩本書的作者。以下為正文:

將用戶執行的每個shell命令記入日志比最初想象的要來得困難。shell的歷史功能原本旨在幫助用戶使用以前用過的命令。我們都知道這種使用場合:你剛輸入了一個長長的字段,可是拼錯了一個字符。shell的歷史讓你可以改正這一個字符,而不必輸入其余的所有字符。

然而, shell歷史很難滿足審計的目的。換言之,它不是為了確保系統安全而設計的。

對于bash shell來說,問題顯得尤其困難,因為該shell的目的是,不管用什么辦法,盡可能為用戶簡化生活——所以,它擁有所有的“花哨功能”(bells and whistles)。必須顧及所有這些多種功能,并且防止對歷史文件進行更改。

Korn shell比較簡單,使得保護shell的歷史比較容易。

如果想要嚴加保管這些shell的歷史,需要執行一系列的步驟。

首先,鎖定shell的歷史文件本身。更改它的屬性,末尾只添加chattr +a .sh_history或chattr +a .bash_history。這樣一來,就不可能刪除或更改文件中的數據,連用戶都無法改變屬性——只有root用戶才能改變。

其次,確保歷史變量設置合理、無法更改。這些歷史變量包括最重要的HISTFILE、HISTCOMMAND和HISTIGNORE。要做到這一點,使用shell的typeset命令,帶-r選項,這使得指定的變量擁有只讀屬性。良好的操作規范是使所有歷史環境變量都變為只讀,比如:

export HISTCONTROL=

export HISTFILE=$HOME/.bash_history

export HISTFILESIZE=2000

export HISTIGNORE=

export HISTSIZE=1000

export HISTTIMEFORMAT=“%a %b %Y %T %z ”

typeset -r HISTCONTROL

typeset -r HISTFILE

typeset -r HISTFILESIZE

typeset -r HISTIGNORE

typeset -r HISTSIZE

typeset -r HISTTIMEFORMAT

HISTTIMEFORMAT是bash shell的擴展,將在歷史文件中提供時間戳。

對于bash shell來說,你需要更改歷史的一些標準選項:

shopt -s cmdhist

#設置cmdhist將把多行命令放入到單單一個歷史行

shopt -s histappend

#設置histappend將確保被添加到歷史文件,而不是像通常的做法那樣覆蓋歷史文件。

另外對于bash shell來說,還要設置PROMPT_COMMAND:

PROMPT_COMMAND=“history -a”

typeset -r PROMPT_COMMAND

這是由于bash shell實際上把歷史寫入到內存中,歷史文件僅在shell會話結束時加以更新。這個命令會把上一個命令附加到磁盤上的歷史文件。

最后,創建一個SIGDEBUG陷阱,將命令發送到系統日志(syslog)。VMware的ESXi借助自己版本的ash shell已經具有這樣的功能。簡而言之,應創建一個把當前命令記入日志(從歷史文件獲。┑暮瘮担缓笥胠ogger命令,把它發送到系統日志。這一步在bash shell和Korn Shell中都適用。

這些步驟有些冗長,不過在新版的bash和ksh中有一些新的功能特性,讓這一切變得極其容易。GNU Bash在4.1版中添加了記入到系統日志中的功能,只需要編譯shell的時候開啟該功能即可激活。

自推出ksh93以來,Korn Shell就一直具有審計功能。類似bash 4.1,用戶審計是一項編譯時功能。想看看你所用的ksh93版本是否安裝了審計功能,可以執行下列命令中的某一條:

echo ${.sh.version}

echo $KSH_VERSION

在Ubuntu 10.10中,我得到了來自ksh93的這個輸出:

# echo ${.sh.version}

Version JM 93t+ 2009-05-01

如果審計功能開啟,特征字符串(JM)還會有字母A(開啟審計功能),可能還有字母L(開啟針對用戶的審計功能)。IBM Developer WorksMusings of an OS Plumber都刊有介紹Korn Shell審計的出色文章。

Bash shell含有審計功能的可能性也比較小。Ubuntu 10.10上的bash是4.1.5(1)版本。

對于仍在使用C shell(以及尤其是tsch)的用戶,tcsh有一個變種名為“tcsh-bofh”,它支持記入到系統日志中。遺憾的是,tcsh-bofh并沒有得到長期的維護。早在2010年1月,tcsh-bofh的FreeBSD端口就從FreeBSD端口樹(port tree)去除了。

上述信息也可以在shell之外獲取。比如有兩個命令:lastcomm(來自Ubuntu Main軟件倉庫中的acct程序包)和auditctl(來自Ubuntu Universe軟件倉庫中的auditd程序包)。另外, Linux Journal在2002年刊發過一篇關于Linux進程統計的好文章。另外還有rootsh和snoopylogger這兩個程序包,只是兩者都不在Ubuntu軟件倉庫中。Rootsh好比是type的執行版本,而snoopylogger是你可以添加到用戶環境的系統庫。

關鍵字:服務器、shell命令、程序包、系統庫

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站