linux安全-用户行为监控
??????? linux下面有好多shell,常見的有 /bin/bash、/bin/sh、/bin/csh、/bin/tcsh、/bin/ksh,而我們最常用bash,因為它提供了history功能,幫助我們更好的與系統交互。但本文主要講解的是如何更加熟悉的了解別的用戶包括黑客都在你的系統上做了什么操作,通常(bash)這些操作默認都會保存到~/.bash_history 文件中,但如果這些用戶不想給你留下操作記錄,就會想辦法把自己的操作從history中刪除,比如最后輸入 history -c 操作,本文將從用戶行為的操作記錄來談linux安全問題。
??????? 試驗環境: redhat 5.4 32 位
????????shell??: bash
?
?????? 默認情況下,在用戶操作完畢退出后,bash是把當前用戶的操作以覆蓋~/.bash_history 的形式寫入到此文件中,所以此時,如果用戶調用history -c 退出后,那么管理員則什么都看不到,所以這時我們就要想辦法把用戶的操作記錄給保存下來。
方法一:
?首先,執行下面命令給.bash_history文件加上只能追加的形式進行記錄
? chattr +a /home/peter/.bash_history
lsattr /home/peter/.bash_history
?? 然后,執行下面指令,修改bash以追加的方式忘給.bash_history文件中寫入內容
?shopt -s histappend
? 最后,調用下面指令使操作命令實時寫入到.bash_history 文件中
?PROMPT_COMMAND =" history -a;$PROMPT_COMMAND "
?注意:上面兩條命令寫到/etc/profile? 和/etc/bashrc文件最后即可
??? 關于shopt命令的介紹請看http://blog.csdn.net/chaofanwei/article/details/11991963
方法二:
? 利用?PROMPT_COMMAND 命令進行用戶行為的記錄
?PROMPT_COMMAND命令就是在用戶執行本指令前調用的命令,可以在set環境中查看改變量,如下
????????????????????????????????????????????????????????????????????????????????????????????? 圖1 PROMPT_COMMAND 命令
?
操作:修改/etc/profile? 和/etc/bashrc文件,在文件的最后加上以下兩句話
export HISTORY_FILE=/var/log/`date '+%Y%m'`.log
#export PROMPT_COMMAND=' date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") $PWD $(history 1 | sed "s/^[ 0-9]*//g" ) " >> /var/log/ht/ht'
export PROMPT_COMMAND=' date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") $PWD $(history 1 | sed "s/^[ 0-9]*//g" ) " >> $HISTORY_FILE'
?
注意:一定要給$HISTORY_FILE'設置相應的權限,要不一般用戶無法正確記錄命令,而是會提示權限不足的問題,所以一定要修改這個文件的權限,使一般用戶也能夠寫入。
?
最后,確保歷史變量設置合理、無法更改。
?這些歷史變量包括最重要的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會話結束時加以更新。這個命令會把上一個命令附加到磁盤上的歷史文件。
?
最后,當然也可借助系統審計功能,具體請看我之前發表的文件http://blog.csdn.net/chaofanwei/article/details/11830543
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的linux安全-用户行为监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GAE强化学习
- 下一篇: linux 其他常用命令