有兩種方式

第一種

vi /etc/profile

function history2syslog
{
declare command
command=$(fc -ln -0)
logger -p local1.notice -t bash -i “user=$USER,from=$SSH_CLIENT,pwd=$PWD,command:$command”
}
trap history2syslog DEBUG

不過fu不太對
/var/log/messages的內容
出現好幾行,且通常不是我要的

Mar 26 13:04:28 10.10.10.135 bash[27675]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:
Mar 26 13:04:28 10.10.10.135 bash[27677]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:
Mar 26 13:04:28 10.10.10.135 bash[27685]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:
Mar 26 13:04:28 10.10.10.135 bash[27687]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:
Mar 26 13:04:28 10.10.10.135 bash[27689]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:
Mar 26 13:04:28 10.10.10.135 bash[27691]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:#011 whoami
Mar 26 13:04:34 10.10.10.135 bash[27693]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:#011 whoami
Mar 26 13:04:34 10.10.10.135 bash[27695]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:#011 whoami
Mar 26 13:04:34 10.10.10.135 bash[27697]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:#011 whoami
Mar 26 13:06:39 10.10.10.135 bash[27779]: user=root,from=::ffff:10.10.10.143 49548 22,pwd=/root,command:#011 whoami

第二種

vi /etc/bashrc

export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; }); logger -p local1.notice -t bash -i “user=$USER,from=$SSH_CLIENT,pwd=$PWD,command:$command”; }’

第一次登入
出現前一個登入最後的動作

Mar 26 13:13:15 10.10.10.135 sshd(pam_unix)[27933]: session opened for user root by (uid=0)
Mar 26 13:13:15 10.10.10.135 bash[27973]: user=root,from=::ffff:10.10.10.143 49678 22,pwd=/root,command:whoami

我執行了w

Mar 26 13:13:15 10.10.10.135 sshd(pam_unix)[27933]: session opened for user root by (uid=0)
Mar 26 13:13:15 10.10.10.135 bash[27973]: user=root,from=::ffff:10.10.10.143 49678 22,pwd=/root,command:whoami
Mar 26 13:14:04 10.10.10.135 bash[27991]: user=root,from=::ffff:10.10.10.143 49678 22,pwd=/root,command:w

所以我擇選了第二種方式

以上

現在有一情況,就是,當我登入一般user (cross),然後ls ,然後 su – 切換成 root

messages會顯示:

cross登入

cross 作了ls

root作了exit

發現了嗎

假如cross登入時間久一點,再切換成root

這很難依時間點來馬上知道誰 su – 成root

如果要限制的很嚴,或許用 sudo (http://ssorc.tw/?p=860)

別讓一般user直接 su -至root

另外我如果只有 su 而不 su –

在messages看到會是cross在操作,不過此時cross已有root權限了

Related posts 相關文章
logger 指令測試丟訊息到~遠端的 rsyslog server 上
More...
讓 SNMP 減少記錄於 syslog 裡
More...
將windows的事件檢視記錄到linux的syslog
More...
用rsyslog架設log server收集個主機的記錄
More...

作者

留言

喔對了~ 您的 export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; }); logger -p local1.notice -t bash -i "user=$USER,from=$SSH_CLIENT,pwd=$PWD,command:$command"; }' 是定義 local1.notice 來記錄吧? 我只是把他改成寫到遠端主機去~ 遠端主機設定成把 local1.notice 都寫到 /var/log/history.log 底下 ..

    作者

    建議 1。確認server 的514 udp port 可以被 client 連到 (你說沒有成功的那幾台) 2。用tcpdump去看是否可以抓到封包,先排除是網路問題 3。再來確認本機的 histlog.log是有記錄的,如果你有記錄在本機上

您好, 經過今天得嘗試結果是有部分RHAS 主機是成功的把 history 導到遠端的 LOG SERVER: 小弟有 RHAS 2.1 X 4 跟 RHAS 4 X1 ,想照剛剛提到的方式導到一台FC8上, 利用您的這篇文章跟 rsyslog + MYSQL +LOG ANAYLOG 這篇一起用,把 history 導到 FC8  的 rsyslog 中。 結果很詭異,4台 RHAS 2.1 有1台成功, RHAS 4 也是成功的把 history 導到 FC8 上面。 3台沒成功的 RHAS 2.1 還找不出是什麼原因失敗 … 小弟把 history 導到遠端只是想防止整個log跟 history 被洗掉,保留證據在遠端 …

請問 看了您這篇文章的第二個方法之後,小弟想把他跟RSYSLOG結合在一起把HISTORY傳到另外一台LINUX上,但沒成功, 想跟您請教一下,看看小弟的做發誓不是有哪裡不正確: 您有提到使用 local1.notice logger -p local1.notice 然後小弟在來源主機(RHAS 2.1 ) 的 /etc/syslog.conf 裡面下 local1.notice @192.168.0.4 再到記錄主機 192.168.0.4(FEDORA 8) 的 /etc/rsyslog.conf 加入 local1.notice /var/log/history.log 也把 192.168.0.4 的 /etc/sysconf/rsyslog.conf 改成 SYSLOGD_OPTIONS="-m 0 -r" 請問到這裡小弟的步驟是否有誤呢?

    作者

    你client端用rsyslog 嗎,如果是要傳到別台,先試著client端用回syslogd試試 我沒試過local1.notice @ip,我文章裡有這麼提嗎 ?

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。