- 论坛徽章:
- 0
|
前段时间为了找到一个跟踪用户命令的方法,苦思多日,不得答案。用mkfifo 做管道连接.bash_history文件,因为bash 在logout的时候无法读去管道里的东西,实验失败。最后还是老朋友eagle鹰给我了一个站点,上面有个bash-bofh-2.05b-0.0.1的东东,偶下载下来,将README文件翻译出来,实验后效果很理想,本着GPL精神,偶把汉化后的README帖出来给大家看看。
http://www.ccitt5.net/archives/
README for bash-2.05b BOFH 0.0.1 patch(johnzw汉化)
这个patch是把用户模块里运行在bash上的命令记录到syslog。这个patch的优点是不需要写入syslog的高级权限。因此用户运行一个shell时,syslog可以记录用户使用的命令,而且(倘若你有一个健全的syslog文件权限)用户不能修改或檫掉日志里的记录,相对而言,用户可以修改或檫掉与其包含相同记录信息的.bash_history文件,因为在用户自己的目录里这个文件的所有者是用户自己。当然,也可以通过设置把该history文件指向一个NULL设备从而逃避日志记录。
要使用这个patch,下面列出的命令对大多数人是必须的:
tar zxvf bash-2.05b.tar.gz
tar zxvf bash-bofh-2.05b-0.0.1.tar.gz
cd bash-2.05b
cat ../bash-bofh-2.05b-0.0.1/bash-bofh-2.05b-0.0.1 | patch -p1
**
The patch provides you with four new directives to configure
这个patch在你configure bash代码的时候提供了4个新的选项(./configure -- )
--enable-bofh (default)
开启bash-bofh记录。当该patch包被应用的时候,这是个缺省选项并不需要特别指定。这儿也有一个相对应的选项 --disable-bofh 关闭bash-bofh记录。
--disable-script-bofh (default)
缺省选项bash-bofh并不记录运行在交互式shell上的shellscript里运行的命令, Enabling logging of non-interactive commands can be fairly noisy since it means all commands run in /etc/rc.d/* , /etc/profile upon login etc etc is logged.
(偶这句话不会翻译,哪位高手指点一下)
然而如果你想记录如此多的命令,那么你可以通过 --enable-script-bofh这个选项来配置。
--with-bofh-logfacility (defaults to LOG_USER)
在这个选项的控制下,syslog模块里的bash-bofh默认情况下记录LOG_USER。"man 3 syslog" or "cat /usr/include/syslog.h" 能够提供你一个可用的syslog参数和等级列表。举个例子,如果想让bash-bofh 用LOG_LOCAL0参数代替LOG_USER 进行记录,你应该在./configure的时候给出如下参数:
--with-bofh-logfacility=LOG_LOCAL0
--with-bofh-loglevel (defaults to LOG_INFO)
这个参数和 --with-bofh-logfacility类似,但它是控制记录事件等级的。缺省的是LOG_INFO。 举个例子,想让bash-bofh 记录LOG_DEBUG来代替LOG_INFO ,你应该给出如下参数:
--with-bofh-loglevel=LOG_DEBUG
**
在bash-bofh-2.05-0.0.1的文件夹下有一个有效的子文件夹split-userlog,它可以对bash-bofh的日志存档文件(默认的是/var/log/messages)按照日志里出现的用户名进行有效的分离,分离出的文件以username.log保存。
下面的命令是安装这个插件必须的:
cd split-userlog
make
make install
可执行的二进制文件安装在/usr/local/sbin/目录下,名字split-userlog,权限755。
使用的语法是: split-userlog LOGFILE <OUTPUT_DIRECTORY>;
LOGFILE 应该包含 bash-bofh 行。 OUTPUT_DIRECTORY是一个选项,如果给定路径的话,split-userlog将把分离的结果写在OUTPUT_DIRECTORY下并以username.log命名,否则写在当前的目录下。
现在,在你疯狂的进行日志监控之前,我知道有很多人都在使用,而且是数以亿计的。这个patch的目的不是提供一个完美的日志以记录你电脑里的用户、守护进程或者幽灵使用过的命令。只有一种解决方案那就是在内核级别上做完全的审核,然后我们才能谈论特性损失。然而这个patch包给你一个非常好的能力来监控你的用户。
EF <ef@ccitt5.net>;
http://www.ccitt5.net |
|