审计并跟踪Linux系统的异常活动详解

一些异常用户试图移去系统上的所有活动记录(比如 ~/.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  

输出:

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  

每一行信息都在屏幕上打印出来, 我们以第一行输出项为例:

userhelper S X vivek pts/0 0.00 secs Mon Nov 13 23:58  

分析:

userhelper 是进程的命令名。

S和X是标志信息, 由系统记帐程序管理。每一个标志的含义是:

◆S -- 命令由超级用户执行。

◆F -- 命令由fork产生, 但是没有exec(执行)。

◆D -- 命令终止并创建一个core文件。

◆X -- 命令被SIGTERM信号终止。

◆vivek是执行命令的用户名。

◆prts/0 终端名。

◆0.00 secs -- 进程退出时间。

你可以通过执行下面的命令来搜索进程记帐日志:

$ lastcomm rm $ lastcomm passwd  

输出:

rm S root pts/0 0.00 secs Tue Nov 14 00:39 rm S root pts/0 0.00 secs Tue Nov 14 00:39 rm S root pts/0 0.00 secs Tue Nov 14 00:38 rm S root pts/0 0.00 secs Tue Nov 14 00:38 rm S root pts/0 0.00 secs Tue Nov 14 00:36 rm S root pts/0 0.00 secs Tue Nov 14 00:36 rm S root pts/0 0.00 secs Tue Nov 14 00:35 rm S root pts/0 0.00 secs Tue Nov 14 00:35 rm vivek pts/0 0.00 secs Tue Nov 14 00:30 rm vivek pts/1 0.00 secs Tue Nov 14 00:30 rm vivek pts/1 0.00 secs Tue Nov 14 00:29 rm vivek pts/1 0.00 secs Tue Nov 14 00:29  

你可���通过终端名pts/1作为关键字来搜索进程记帐日志:

$ lastcomm pts/1  

5). 统计记帐信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/fe1fe19789b9ffe62e342d96c9a2b7df.html