[20121121]關於linux下history命令.txt

lfree發表於2012-11-21
[20121121]關於linux下history命令.txt

昨天跟別人聊天,提到linux下history命令帶來的安全隱患,主要是一些命令會記錄在~/.bash_history中。實際上有許多方法可以使系統不記錄這樣一些命令,自己也看了一些文件,總結如下:

1.使用環境變數HISTCONTROL。

export HISTCONTROL=ignorespace

如果設定HISTCONTROL=ignorespace,這樣開頭有空格的命令就不會記錄。例子:

export HISTCONTROL=ignorespace
ls -l
 sqlplus scott/tiger
history | tail -4

 1014  2012-11-21 10:12:31 = export HISTCONTROL=ignorespace
 1015  2012-11-21 10:12:35 = ls -l
 1016  2012-11-21 10:12:53 = history | tail -4

--可以發現sqlplus的命令就沒有記錄在裡面。

2.以上情況下要主要要求管理員在輸入口令時有意識的規避,前面加空格,或者在命令列不輸入口令。不注意還是會記錄在歷史檔案中的。還可以使用HISTIGNORE引數,這樣可以限制一些命令不出現在歷史記錄中。

export HISTIGNORE="sqlplus*:impdp*:expdp*:imp*:exp*:rlwrap*:*system*"

注意一定要使用*號,而且和上面的HISTCONTROL=ignorespace配合起來,就可以達到比較好的安全目的。例子:

export HISTIGNORE="sqlplus*:impdp*:expdp*:imp*:exp*:rlwrap*:*system*"
export HISTCONTROL=
w
 sqlplus scott/tiger
 sqlplus system/xxxx
history | tail

 1001  2012-11-21 10:35:48 = export HISTIGNORE="sqlplus*:impdp*:expdp*:imp*:exp*:rlwrap*:*system*"
 1002  2012-11-21 10:35:50 = w
 1003  2012-11-21 10:36:02 =  sqlplus scott/tiger
 1004  2012-11-21 10:36:05 = history | tail

--可以發現取消HISTCONTROL設定,帶空格的sqlplus命令記錄在歷史中,而sqlplus system/xxxx因為包括在*system*中不記錄。
--所以要建立更加嚴格的安全機制,最好設定如下:

export HISTIGNORE="*sqlplus*:*imp*:*exp*:*rlwrap*:*system*"
export HISTCONTROL=ignorespace

3.另外history其他引數中設定,我個人覺得設定如下:(效果如上)
export HISTTIMEFORMAT='%F %T = '






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-749635/,如需轉載,請註明出處,否則將追究法律責任。

相關文章