一些異常用戶試圖移去系統上的所有活動記錄(比如 ~/.bash_history), 不過我們可以使用專門的工具來監視所有用戶執行的命令. 推薦你使用進程記帳來記錄用戶的活動, 你可以通過進程記帳查看每一個用戶執行的命令, 包括CPU時間和內存占用.
psacct程序提供了幾個進程活動監視工具: ac, lastcomm, accton和sa.
.ac命令顯示用戶連接時間的統計.
.lastcomm命令顯示系統執行的命令.
.accton命令用於打開或關閉進程記帳功能.
.sa命令統計系統進程記帳的情況.
1). 安裝psacct或acct軟件包
如果你使用RHEL, 使用up2date命令:
# up2date psacct
如果你使用CentOS/Fedora Core Linux, 使用yum命令:
$ sudo apt-get install acct
或
# apt-get install acct
2). 啟動psacct/acct服務
在Ubuntu/Debian Linux系統上, pacct可以自動啟動.(安裝包會在系統上創建一個/var/account/pacct文件). 但是在Red Hat/Fedora Core/Cent OS, 你需要手動啟動psacct服務. 敲入下面兩個命令創建/var/account/pacct文件和啟動pacct服務:
# chkconfig psacct on
# /etc/init.d/psacct start
如果你使用SUSE Linux, 服務的名稱為acct, 敲入下面的命令:
# chkconfig acct on
# /etc/init.d/acct start
現在我們可以了解如何利用這些工具來監視用戶的命令和時間.
3). 顯示用戶連線時間的統計信息
命令可以根據登陸數/退出數在屏幕上打印出用戶的連線時間(單位為小時). 總計時間也可以打印出來. 如果你執行沒有任何參數的ac命令, 屏幕將會顯示總計的連線時間:
$ ac
輸出:
total 95.08
顯示每一天的連線統計時間:
$ ac -d
輸出:
Nov 1 total 8.65
Nov 2 total 5.70
Nov 3 total 13.43
Nov 4 total 6.24
Nov 5 total 10.70
Nov 6 total 6.70
Nov 7 total 10.30
…..
..
…
Nov 12 total 3.42
Nov 13 total 4.55
Today total 0.52
顯示每一個用戶的總計連線時間和所有用戶總計連線時間:
$ ac -p
輸出:
vivek 87.49
root 7.63
total 95.11
4). 查找用戶過去執行的命令
你可以使用lastcomm命令打印出用戶過去執行的命令. 你也可以通過用戶名, tty名或命令名來搜索以往執行的命令.
比如顯示vivek用戶過去執行的命令:
$ lastcomm vivek
輸出:
[code]
userhelper S X vivek pts/0 0.00 secs Mon Nov 13 23:58
userhelper S vivek pts/0 0.00 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.01 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.00 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.01 secs Mon Nov 13 23:45
gcc vivek pts/0 0.00 secs Mon Nov 13 23:45
which vivek pts/0 0.00 secs Mon Nov 13 23:44
bash F vivek pts/0 0.00 secs Mon Nov 13 23:44
ls vivek pts/0 0.00 secs Mon Nov 13 23:43
rm vivek pts/0 0.00 secs Mon Nov 13 23:43
vi vivek pts/0 0.00 secs Mon Nov 13 23:43
ping S vivek pts/0 0.00 secs Mon Nov 13 23:42
ping S vivek pts/0 0.00 secs Mon Nov 13 23:42
ping S vivek pts/0 0.00 secs Mon Nov 13 23:42
cat vivek pts/0 0.00 secs Mon Nov 13 23:42
netstat vivek pts/0 0.07 secs Mon Nov 13 23:42
su S vivek pts/0 0.00 secs Mon Nov 13 23:38
[/code]
每一行信息都在屏幕上打印出來, 我們以第一行輸出項為例:
userhelper S X vivek pts/0 0.00 secs Mon Nov 13 23:58