Linux中多種方法實時記錄歷史命令
系統中的歷史命令對於後期排除故障非常有用。一般都需要把歷史命令給儲存起來。
方法1:
實時記錄歷史命令到bash_history,不記錄日誌檔案中
[root@bing~]#vim /etc/bashrc
export HISTTIMEFORMAT=`%F %T ` #讓歷史命令記錄操作時間
export HISTSIZE=1000000 #設定儲存歷史命令條數
export HISTFILESIZE=1000000 #設定儲存歷史命令的檔案大小
shopt -s histappend
PROMPT_COMMAND=`history -a` #實時記錄歷史命令,防止丟失
優點:簡單方便,易設定
缺點:安全性較差,多使用者下,只能分別記錄到各自的.bash_history中,沒有統一管理
方法2:
實時記錄歷史命令到自定義檔案中,不記錄日誌檔案中
[root@bing~]#vim /etc/bashrc
export HISTORY_FILE=/var/.history/date `+%y-%m-%d`
.log #自定義歷史命令儲存檔案
export PROMPT_COMMAND=` { date “+%Y-%m-%d %T – USER:$USER IP:$SSH_CLIENT PS:$SSH_TTY – $(history 1 | { read x cmd; echo “$cmd”; })”; } >> $HISTORY_FILE`
把所有使用者的登入時間、登入地址、操作記錄統一記錄到指定檔案中
優點:可隨意更改存放地址,隱蔽性高,記錄多使用者操作
缺點:安全性還是不高,非法使用者還是可能找到並進行刪除
方法3:(推薦)
實時記錄歷史命令,並記錄到日誌檔案中
[root@bing~]#vim /etc/bashrc
export PROMPT_COMMAND=`history -a { command=$(history 1 | { read x y;echo $y; } );logger -p local1.notice -t bash -i “user=$USER,ppid=$PPID,from=$SSH_CLIENT,pwd=$PWD,command:$command ” }`
[root@bing~]#vim /etc/syslog.conf
local1.notice /var/log/cmd.log
優點:記錄到日誌中,配合日誌伺服器,可把日誌傳送過去,安全性高
方法4:(這個方法我未實際操作過,以下引用別人的實驗)
利用bash的新特性來記錄歷史命令,可記錄到日誌檔案中
使用bash4.1的新功能:歷史命令儲存到syslog!然後使用syslog-ng構建集中型日誌伺服器收集主機日誌。
1 下載bash:
wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
tar zxvf bash-4.1.tar.gz –C /usr/local/bash-4.1
cd /usr/local/bash-4.1
2 修改引數(根據個人需要,我只保留了pid,uid,sid等,引數請看目錄下的shell.c中):
檔案bashhist.c大約708行的位置開始,修改成以下一段:
syslog (SYSLOG_FACILITY|SYSLOG_LEVEL,”HISTORY: PID=%d PPID=%d SID=%d User=%s CMD=%s”, getpid(),getppid(), getsid(getpid()), current_user.user_name, line);
else
{
strncpy (trunc, line, SYSLOG_MAXLEN);
trunc[SYSLOG_MAXLEN -1]=`0`;
syslog (SYSLOG_FACILITY|SYSLOG_LEVEL,”HISTORY (TRUNCATED): PID=%d PPID=%d SID=%d User=%s CMD=%s”, getpid(),getppid(), getsid(getpid()), current_user.user_name, trunc);
}
注:ppid:bash父程式號
Sid: 跟蹤 su 切換後的程式號
第二段代表log長度超過600後使用的語句
3 去掉config-top.h中define SYSLOG_HISTORY的註釋。
結果如下:
define SYSLOG_HISTORY
4 編譯安裝
./configure & make && make install
5 修改使用者配置:
將使用者的bash換成現在的bash4.1
vi /etc/passwd
dongwm:x:501:501::/home/dongwm:/usr/local/bash_4.1/bin/bash
這樣日誌就會記在/var/log/messages
結果類似這樣:
Dec 2317:40:28 server -bash: HISTORY: PID=4089 PPID=4088 SID=4089 User=dongwm CMD=exit
……
在整個環境佈置了記錄功能,就能方便的查出來誰-在何時,用什麼賬號,做了什麼操作…
6 主機syslog配置(新增日誌伺服器的地址)
vi /etc/syslog.conf
在最後新增一列:
. @server.dongwm.com(你的日誌伺服器的地址)
相關文章
- linux 清空歷史執行記錄Linux
- Linux檢視歷史記錄小技巧Linux
- Linux下快速執行歷史命令的方法Linux
- Linux 中刪除目錄的多種方法Linux
- 修改Kali Linux終端歷史記錄大小Linux
- win10怎樣看歷史記錄_win10檢視歷史記錄的方法Win10
- TcxMRUEdit 最近歷史記錄
- win10系統檢視命令提示符歷史記錄的方法Win10
- Dynamics CRM 在表單上顯示更改歷史記錄(稽核歷史記錄)
- 記錄遍歷方法
- git log檢視提交歷史記錄Git
- EBS:銷售訂單歷史記錄
- Linux 中實時檢視日誌的3種方法Linux
- win10怎麼清除更新歷史記錄 win10電腦如何清除更新歷史記錄Win10
- 教你一些Linux中隱藏bash歷史命令的小技巧Linux
- 中國城市降雨量歷史記錄查詢 All In One
- linux系統安全問題,如何清除你的cli操作歷史記錄Linux
- 透過歷史記錄執行本地模型模型
- Git 學習記錄之演變歷史Git
- 如何禁止input輸入的歷史記錄?
- ClipboardManager for Mac(剪貼簿歷史記錄管理)Mac
- linux系統命令記錄Linux
- 縮短 Linux 命令節省時間的四種方法Linux
- win10如何關閉工作列歷史記錄_win10工作列歷史記錄怎麼關閉Win10
- 在 Windows 中執行 Linux 命令的 4 種方法WindowsLinux
- 4個快速查詢Linux歷史命令的技巧(history)Linux
- 7 個實用的操作 Bash 歷史記錄的快捷方式
- Git基本命令 -- 歷史Git
- 查詢SQL Server的歷史執行記錄SQLServer
- 使用 JavaScript 操作瀏覽器歷史記錄 APIJavaScript瀏覽器API
- SqlServer查詢資料改動歷史記錄SQLServer
- 清除 GitHub 歷史記錄的隱私資訊Github
- 清除“遠端桌面連線”的歷史記錄
- win10系統刪除背景圖片桌布歷史記錄的方法Win10
- Linux發展歷史Linux
- Linux 常用命令記錄Linux
- 記錄Linux我常用的命令Linux
- 視訊直播原始碼,實現本地儲存搜尋歷史記錄原始碼