AdDuplex 資料:微軟 Win11 份額整個 4 月增長了不到 0.4%
Shell 歷史記錄異地留痕審計與監控
摘要
我的系列文件
程式語言
Netkiller Architect 手札 |
Netkiller Developer 手札 |
Netkiller PHP 手札 |
Netkiller Python 手札 |
Netkiller Testing 手札 |
Netkiller Cryptography 手札 |
---|---|---|---|---|---|
Netkiller Perl 手札 |
Netkiller Docbook 手札 |
Netkiller Project 手札 |
Netkiller Java 手札 |
Netkiller DevOps 手札 |
作業系統
Netkiller Linux 手札 |
Netkiller Debian 手札 |
Netkiller CentOS 手札 |
Netkiller FreeBSD 手札 |
Netkiller Shell 手札 |
Netkiller Security 手札 |
---|---|---|---|---|---|
Netkiller Web 手札 |
Netkiller Monitoring 手札 |
Netkiller Storage 手札 |
Netkiller Mail 手札 |
Netkiller Multimedia 手札 |
資料庫
Netkiller Database 手札 |
Netkiller PostgreSQL 手札 |
Netkiller MySQL 手札 |
Netkiller NoSQL 手札 |
Netkiller LDAP 手札 |
---|
網路裝置及其他
Netkiller Network 手札 |
Netkiller Cisco IOS 手札 |
Netkiller H3C 手札 |
Netkiller Amateur Radio 手札 |
---|
您可以使用iBook閱讀當前文件
目錄
- 1. 什麼是Shell歷史記錄異地留痕與監控
- 2. 什麼要將Shell歷史記錄異地留痕並監控
- 3. 何時做歷史記錄異地留痕
- 4. 在哪裡做歷史記錄異地留痕
- 5. 角色與許可權
- 6. 怎麼實現歷史記錄異地留痕
- 6.1. 節點配置
- 6.2. 推送端
- 6.3. 收集端
- 7. 延伸閱讀
1. 什麼是Shell歷史記錄異地留痕與監控
首先談談什麼是“歷史記錄異地留痕”,歷史記錄就是~/.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命令應立即報警,通知相關人員檢查。
2. 什麼要將Shell歷史記錄異地留痕並監控
首先我們將要使用者操作留痕,以方便隨時調閱,我們要知道系統管理員做了那些操作,還可用於審計工作。例如我們開發工作中有一個環節就是Code Review (程式碼審查),可以幫助我們提前發現BUG,以及不合理做法,甚至是人為惡意植入後門等等。
歷史記錄異地留痕就是運維工作的 sysop review(運維審查)。
其次是監控,注意這裡的~/.bash_history監控並非實時監控,因為只有使用者推出shell後才能儲存~/.bash_history檔案。所以監控是滯後的,但也足夠能幫助我們更早的知道系統發生了那些變化。
3. 何時做歷史記錄異地留痕
這個系統可以實時部署,對現有的業務不會影響。
4. 在哪裡做歷史記錄異地留痕
歷史記錄異地留痕分為兩個部分,第一個部分是節點,第二部分是收集端,收集段同時還負責監控與報警。節點將收集的資料傳送給收集端,然後收集端歸檔日誌。
5. 角色與許可權
最高許可權著負責部署即可
6. 怎麼實現歷史記錄異地留痕
6.1. 節點配置
首先修改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
6.2. 推送端
$ 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
6.3. 收集端
$ git clone https://github.com/netkiller/logging.git
$ cd logging
$ python3 setup.py sdist
$ python3 setup.py install
配置收集端埠,編輯檔案logging/init.d/ucollection
done << EOF
1220 /backup/neo/.bash_history
1221 /backup/jam/.bash_history
1222 /backup/sam/.bash_history
EOF
7. 延伸閱讀
《日誌歸檔與資料探勘》