概述
保证系统安全的一项很重要的工作就是定期查看日志文件。系统管理员一般比较忙,没有时间定期完成这项工作,这样就可能带来一些安全问题。
下面是Logcheck概括性的介绍:
审核和记录系统的事件是非常重要的。特别是当你的计算机连接到Internet上之后,系统管理员如果对“异常”的事件保持警觉,就能防止系统被入侵。在Unix系统中如果仅仅把系统事件作为日志记录下来,而不去查看,还是无济于事。Logchek可以自动地检查日志文件,先把正常的日志信息剔除掉,把一些有问题的日志保留下来,然后把这些信息email给系统管理员。Logcheck被设计成自动运行,定期检查日志文件以发现违反安全规则以及异常的活动。Logcheck用logtail程序记住上次已经读过的日志文件的位置,然后从这个位置开始处理新的日志信息。
注意事项
下面所有的命令都是Unix兼容的命令。
源路径都为“/var/tmp”(当然在实际情况中也可以用其它路径)。
安装在RedHat Linux 6.1和6.2下测试通过。
要用“root”用户进行安装。
Logcheck的版本是1.1.1。
软件包的来源
Logcheck的主页:http://www.psionic.com/abacus/logcheck/。
下载:logcheck-1.1.1.tar.gz。
安装软件包需要注意的问题
最好在编译前和编译后都做一张系统中所有文件的列表,然后用“diff”命令去比较它们,找出其中的差别并知道到底把软件安装在哪里。只要简单地在编译之前运行一下命令“find /* >Logcheck1”,在编译和安装完软件之后运行命令“find /* > Logcheck2”,最后用命令“diff Logcheck1 Logcheck2 > Logcheck-Installed”找出变化。
解压软件包
把软件包(tar.gz)解压:
[root@deep /]# cp logcheck-version.tar.gz /var/tmp/
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf logcheck-version.tar.gz
编译和优化
必须修改“Makefile”文件,设置Logcheck的安装路径、编译标记,还要根据你的系统进行优化。必须根据RedHat的文件系统结构来修改“Makefile”文件,并且在“PATH”环境变量的设定的路径中安装Logcheck的脚本文件。
第一步
转到Logcheck所在的目录。
编辑“Makefile”文件(vi Makefile)并改变下面这些行:
CC = cc
改为:
CC = egcs
CFLAGS = -O
改为:
CFLAGS = -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions
INSTALLDIR = /usr/local/etc
改为:
INSTALLDIR = /etc/logcheck
INSTALLDIR_BIN = /usr/local/bin
改为:
INSTALLDIR_BIN = /usr/bin
INSTALLDIR_SH = /usr/local/etc
改为:
INSTALLDIR_SH = /usr/bin
TMPDIR = /usr/local/etc/tmp
改为:
TMPDIR = /etc/logcheck/tmp
上面这些修改是为了把“Makefile”配置为使用“egcs”编译器,使用适应于我们系统的编译优化标记,并且把Logcheck的安装目录设置成遵循RedHat的文件系统结构。
第二步
编辑“Makefile”文件(vi +67 Makefile)改变下面这些行:
@if [ ! -d $(TMPDIR) ]; then /bin/mkdir $(TMPDIR); fi
改为:
@if [ ! -d $(TMPDIR) ]; then /bin/mkdir -p $(TMPDIR); fi
加上“-p”参数是让安装程序根据需要自动创建目录。
第三步
安装Logcheck:
[root@deep logcheck-1.1.1]# make linux
上面的命令为Linux操作系统配置Logcheck,然后把源文件编译成二进制文件,最后把二进制文件和配置文件拷贝到相应的目录。
清除不必要的文件
用下面的命令删除不必要的文件:
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf logcheck-version/ logcheck-version_tar.gz
“rm”命令删除所有编译和安装Logcheck所需要的源程序,并且把Logcheck软件的压缩包删除掉。
配置“/usr/bin/logcheck.sh”文件
因为我们不使用“/usr/local/etc”这个路径,所以必须改变“logcheck.hacking”、“logcheck.violations”、“logcheck.ignore”、“logcheck.violations.ignore”和“logtail”中所有的路径到要改变。Logcheck的脚本文件“/usr/bin/logcheck.sh”允许设置一些选项,可以改变路径和程序的运行。这些都有详细的注释,也很简单。
第一步
编辑“logcheck.sh”文件(vi /usr/bin/logcheck.sh)并且改变:
LOGTAIL=/usr/local/bin/logtail
改为:
LOGTAIL=/usr/bin/logtail
TMPDIR=/usr/local/etc/tmp
改为:
TMPDIR=/etc/logcheck/tmp
HACKING_FILE=/usr/local/etc/logcheck.hacking
改为:
HACKING_FILE=/etc/logcheck/logcheck.hacking
VIOLATIONS_FILE=/usr/local/etc/logcheck.violations
改为:
VIOLATIONS_FILE=/etc/logcheck/logcheck.violations
VIOLATIONS_IGNORE_FILE=/usr/local/etc/logcheck.violations.ignore
改为:
VIOLATIONS_IGNORE_FILE=/etc/logcheck/logcheck.violations.ignore
IGNORE_FILE=/usr/local/etc/logcheck.ignore
改为:
IGNORE_FILE=/etc/logcheck/logcheck.ignore
第二步
把Logcheck放到crontab中,使之成为cronjob:
安装完Logcheck之后,必须以“root”权限编辑本地的“crontab”文件,并把Logcheck设置成每小时运行一次(当然你也可以把时间设长一点或者设短一点)。
l 用下面的命令编辑crontab:
[root@deep /]# crontab -e
# Hourly check Log files for security violations and unusual activity.
00 * * * * /usr/bin/logcheck.sh
注意:如果没有必要的话,Logcheck是不会用email报告任何东西的。
安装到系统中的文件
> /etc/logcheck
> /usr/bin/logcheck.sh
> /etc/logcheck/tmp
> /etc/logcheck/logcheck.hacking
> /etc/logcheck/logcheck.violations
> /etc/logcheck/logcheck.violations.ignore
> /etc/logcheck/logcheck.ignore
> /usr/bin/logtail
> /var/log/messages.offset
> /var/log/secure.offset
> /var/log/maillog.offset
版权说明
这篇文章翻译和改编自Gerhard Mourani的《Securing and Optimizing Linux: RedHat Edition》,原文及其版权协议请参考:www.openna.com。