知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
首先談談什麼是“歷史記錄異地留痕”,歷史記錄就是~/.bash_history檔案,不同Shell名字可能不同,它會記錄每次用戶在鍵盤上敲下的命令,我們可以通過下面命令查詢歷史記錄。
$ history | head 1009 ls /www 1010 vim Makefile 1011 cat Makefile 1012 make index.html 1013 vim Makefile 1014 make index.html 1015 vim Makefile 1016 make index.html 1017 vim Makefile 1018 make index.html $ history | tail 2000 find /tmp/var/ 2001 ll 2002 cd workspace/Journal/ 2003 s 2004 ls 2005 make shell.html 2006 cat ~/.bash_history 2007 history 2008 history | head 2009 history | tail $ cat ~/.bash_history | head -n 100 cat /etc/issue cat /etc/resolv.conf ifconfig cat /etc/resolv.conf dmd df df -T cat /etc/fstab cat /etc/issue uname -a ps ax cd /srv/ ls cd workspace/ ls df df -T df ls cd .. ls
由於篇幅的限制,我是用了head,tail 命令限制顯示長度。
現在我在看看“監控”,監控就是過濾 ~/.bash_history 檔案內字元串,達到匹配標準,做出報警操作等等。例如我們發現adduser命令應立即報警,通知相關人員檢查。
首先我們將要用戶操作留痕,以方便隨時調閲,我們要知道系統管理員做了那些操作,還可用於審計工作。例如我們開發工作中有一個環節就是Code Review (代碼審查),可以幫助我們提前發現BUG,以及不合理做法,甚至是人為惡意植入後門等等。
歷史記錄異地留痕就是運維工作的 sysop review(運維審查)。
其次是監控,注意這裡的~/.bash_history監控並非實時監控,因為只有用戶推出shell後才能保存~/.bash_history檔案。所以監控是滯後的,但也足夠能幫助我們更早的知道系統發生了那些變化。
首先修改history格式,預設只有行號,我需要記錄每一個命令的輸入時間點。
cat >> /etc/bashrc <<EOF export HISTTIMEFORMAT="%Y-%m-%d-%H:%M:%S " EOF
此時輸入history命令你可以看到時間點
# history 741 2014-12-24-10:06:26 ll 742 2014-12-24-10:06:40 ls 743 2014-12-24-10:06:44 ll 744 2014-12-24-10:06:47 ls 745 2014-12-24-10:58:13 history
$ git clone https://github.com/netkiller/logging.git $ cd logging $ python3 setup.py sdist $ python3 setup.py install
配置啟動腳本,打開檔案logging/init.d/uhistory
HOST=127.0.0.1 #此處為收集端的IP地址 # Port | User # ------------------- # 配置連接埠號與用戶 done << EOF 1220 neo 1221 jam 1222 sam EOF