Linux用戶命令記錄

很多情況下我們需要記錄用戶執(zhí)行過的命令敏晤,不管是root還是其他普通用戶,我們可以通過以下方式來記錄。

1.1艘蹋、預(yù)備知識

  • 1)PROMPT_COMMAND
    這個環(huán)境變量中設(shè)定的內(nèi)容將在交互式腳本的提示(PS1)出現(xiàn)之前被執(zhí)行。也就意味著用戶登錄后每次執(zhí)行命令前都會執(zhí)行這個變量中給出的命令票灰。
  • 2)rsyslog
    系統(tǒng)用來實現(xiàn)日志功能的女阀,配置文件在/etc/rsyslog.conf宅荤,格式日志設(shè)備(類型).(連接符號)日志級別 日志處理方式(action)
  • 3)logrotate
    Logrotate是基于CRON來運(yùn)行的,其腳本是/etc/cron.daily/logrotate浸策,日志輪轉(zhuǎn)是系統(tǒng)自動完成的冯键。
    實際運(yùn)行時,Logrotate會調(diào)用配置文件/etc/logrotate.conf庸汗。

1.2惫确、實戰(zhàn)演練

# 1. 修改rsyslog配置,local7下面添加如下行,注意用tab分割蚯舱,不是空格
vim  /etc/rsyslog.conf
local6.*                                                /var/log/auditlog
# 2. 重啟rsyslog服務(wù)
systemctl restart rsyslog

# 3. 修改環(huán)境變量文件,文件末尾新增如下行
vim  /etc/bashrc
readonly PROMPT_COMMAND='{ date "+%Y-%m-%d %T # $(who am i |awk "{print \$2,\$5}") $(whoami):[$PWD]# $(history 1 | { read x cmd; echo ${cmd}; })"; } | logger -p local6.info'

# 4. 新增logrotate配置audit日志的切割策略
vim /etc/logrotate.d/audit
/var/log/auditlog {
    daily
    compress
    rotate 365
    missingok
    notifempty
    dateext
}

1.3改化、工作原理

PROMPT_COMMAND會在命令執(zhí)行前執(zhí)行。
$(who am i |awk '{print \$2,\$5}')會輸出登錄用戶用的tty和登錄服務(wù)器的遠(yuǎn)程電腦IP或者主機(jī)名枉昏。
$PWD是內(nèi)建變量陈肛,顯示當(dāng)前執(zhí)行命令的工作目錄。
history 1 | { read x cmd; echo ${cmd};會輸出最后一條歷史命令中的執(zhí)行信息凶掰。

為了不讓用戶修改變量燥爷,使用declare -rx命令定義了只讀環(huán)境變量。這里要注意使用readonly命令也可以定義只讀變量懦窘,但是用戶用env命令看不到前翎,只有用export PROMPT_COMMAND命令將變量設(shè)置為環(huán)境變量后才能看到。

變量加到/etc/bashrc是因為用戶登錄后會加載這里的配置畅涂,包括sudo sudo su sudo su - su root su - root港华。如果加到其他文件里則部分命令后就不會加載變量,自行嘗試午衰。

修改rsyslog是可以自定義日志輸出的文件路徑和名字立宜,用logger -p這個命令配合使用。

新增logrotate配置則是需要切割日志臊岸,防止單個日志文件太大橙数,以及做好切割備份,方便查詢帅戒。


其他實現(xiàn)

【一】

declare -rx PROMPT_COMMAND='{ date "+%Y-%m-%d %T # $(who am i |awk "{print \$2,\$5}") $(whoami):[$PWD]# $(history 1 | { read x cmd; echo ${cmd}; })"; } | logger -t auditlog'

/etc/profile最后添加如下行灯帮,則日志會直接輸出到messages日志里。

logger -t auditlog
-t tag 指定日志標(biāo)簽逻住,結(jié)果格式為
Jun  3 17:32:25 XXX auditlog: 日志信息

這種方式:不定義日志格式钟哥,直接將日志寫到messages日志文件里,和其他日志放一起瞎访,但是可以指定日志標(biāo)簽腻贰,方便檢索。
缺點是(1)會導(dǎo)致日志增大扒秸,并且用戶提權(quán)后因-t標(biāo)簽的存在播演,導(dǎo)致不會記錄提權(quán)前的用戶冀瓦。(2)不能自定義日志路徑。


【二】

# 1. 創(chuàng)建審計用戶組
groupadd audit
# 2. 將普通用戶caoshibo加入audit組
usermod -a -G audit caoshibo
# 3. 創(chuàng)建存放審計日志的目錄
mkdir -p -m 2775 /var/log/Command/
chmod o+t /var/log/Command/
# 4.修改目錄的屬組為audit
chgrp audit /var/log/Command/

# Command audit
export DA=$(date +"%Y%m%d")
export HISTORY_FILE=/var/log/Command/Command-${DA}.log
(umask 002 && touch $HISTORY_FILE)
declare -rx PROMPT_COMMAND='{ date "+%Y-%m-%d %T # $(who am i |awk "{print \$2,\$5}") $(whoami):[$PWD]# $(history 1 | { read x cmd; echo ${cmd}; })"; } >>$HISTORY_FILE'

缺點:用戶可以刪除日志文件写烤。
因為普通用戶和root都要往日志文件里寫咕幻,所以需要給普通用戶加一個附加組;并且如果日志文件不存在顶霞,普通用戶登錄后也需要新建,所以普通用戶必須有日志文件父目錄的寫權(quán)限锣吼。為了能讓所有普通用戶都可以寫选浑,就給Command目錄加了SGID權(quán)限以及修改目錄屬組為audit。這樣普通用戶在這個目錄下創(chuàng)建的日志文件的屬組會自動繼承Command目錄的屬組玄叠,也就是audit古徒。(umask 002 && touch $HISTORY_FILE)命令則是因為root用戶生成的日志文件權(quán)限是644,屬組沒有寫權(quán)限读恃。所以這里用 啟動子shell并修改umask的方式生成日志文件隧膘。這樣就不會修改root默認(rèn)的0022的umask。
其他審計軟件:
https://www.splunk.com/ 免費(fèi)2個月

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寺惫,一起剝皮案震驚了整個濱河市疹吃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌西雀,老刑警劉巖萨驶,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異艇肴,居然都是意外死亡腔呜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門再悼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來核畴,“玉大人,你說我怎么就攤上這事冲九“荩” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵娘侍,是天一觀的道長咖刃。 經(jīng)常有香客問我,道長憾筏,這世上最難降的妖魔是什么嚎杨? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮氧腰,結(jié)果婚禮上枫浙,老公的妹妹穿的比我還像新娘刨肃。我一直安慰自己,他們只是感情好箩帚,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布真友。 她就那樣靜靜地躺著,像睡著了一般紧帕。 火紅的嫁衣襯著肌膚如雪盔然。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天是嗜,我揣著相機(jī)與錄音愈案,去河邊找鬼。 笑死鹅搪,一個胖子當(dāng)著我的面吹牛站绪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播丽柿,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼恢准,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了甫题?” 一聲冷哼從身側(cè)響起馁筐,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坠非,沒想到半個月后眯漩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡麻顶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年赦抖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辅肾。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡队萤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出矫钓,到底是詐尸還是另有隱情要尔,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布新娜,位于F島的核電站赵辕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏概龄。R本人自食惡果不足惜还惠,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望私杜。 院中可真熱鬧蚕键,春花似錦救欧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至誊爹,卻和暖如春蹬刷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背频丘。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工箍铭, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椎镣。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像兽赁,于是被迫代替她去往敵國和親状答。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容