1.概述
入侵检测(Intrusion Detection),顾名思义,便是对入侵行为的发觉。它通过对计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。进行入侵检测的软件与硬件的组合便是入侵检测系统(Intrusion Detection System,简称IDS)。与其他安全产品不同的是,入侵检测系统需要更多的智能,它必须可以将得到的数据进行分析,并得出有用的结果。一个合格的入侵检测系统能大大的简化管理员的工作,保证网络安全的运行。 日志是使系统顺利运行的重要保障。它会告诉我们系统发生了什么和什么没有发生。然而,由于日志记录增加得太快了,铺天盖地的日志使系统管理员茫然无措,最终使日志成为浪费大量磁盘空间的垃圾。日志具有无可替代的价值,但不幸的是它们经常被忽略,因为系统管理员在并不充裕的时间里难以查看大量的信息。标准的日志功能不能自动过滤和检查日志记录,并提供系统管理员所需要的信息。 对于入侵者来说,要做的第一件事就是清除入侵的痕迹。这需要入侵者获得root权限,而一旦系统日志被修改,就无法追查到攻击的情况。因此,好的系统管理员应该建立日志文件检测。有很多工具可以实现日志检测的功能,其中就有Logcheck和Swatch。本文将对Logcheck和Swatch逐一进行介绍。
2.日志文件系统 审计和日志功能对于系统来说是非常重要的,可以把感兴趣的操作都记录下来,供分析和检查。UNIX采用了syslog工具来实现此功能,如果配置正确的话,所有在主机上发生的事情都会被记录下来,不管是好的还是坏的。 Syslog已被许多日志系统采纳,它用在许多保护措施中--任何程序都可以通过syslog记录事件。Syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络纪录另一个主机上的事件。 Syslog依据两个重要的文件:/sbin/syslogd(守护进程)和/etc/syslog.conf配置文件,习惯上,多数syslog信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog纪录包括生成程序的名字和一个文本信息。它还包括一个设备和一个行为级别(但不在日志中出现)。 /etc/syslog.conf的一般格式如下 设备.行为级别 [;设备.行为级别] 记录行为 设备 描述 auth 认证系统:login、su、getty等,即询问用户名和口令 authpriv 同LOG_AUTH,但只登录到所选择的单个用户可读的文件中 cron cron守护进程 daemon 其他系统守护进程,如routed kern 内核产生的消息 lpr 打印机系统:lpr、lpd mail 电子邮件系统 news 网络新闻系统 syslog 由syslogd产生的内部消息 user 随机用户进程产生的消息 uucp UUCP子系统 local0~local7 为本地使用保留 行为级别 描述 debug 包含调试的信息,通常旨在调试一个程序时使用 info 情报信息 notice 不是错误情况,但是可能需要处理 warn(warning) 警告信息 err(error) 错误信息 crit 重要情况,如硬盘错误 alert 应该被立即改正的问题,如系统数据库破坏 emerg(panic) 紧急情况 记录行为(举例) 描述 /dev/console 发送消息到控制台 /var/adm/messages 把消息写到文件/var/adm/messages @loghost 把消息发到其它的日志记录服务器 fred,user1 传送消息给用户 * 传送消息给所有的在线用户 有个小命令logger为syslog系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。用法:logger 例如:logger This is a test! 它将产生一个如下的syslog纪录:Apr 26 11:22:34 only_you: This is a test! 3.Logcheck 3.1 logcheck介绍 Logcheck是一软件包,用来实现自动检查日志文件,以发现安全入侵和不正常的活动。Logcheck用logtail程序来记录读到的日志文件的位置,下一次运行的时候从记录下的位置开始处理新的信息。所有的源代码都是公开的,实现方法也非常简单。 Logcheck SHELL脚本和logtail.c程序用关键字查找的方法进行日志检测。在这儿提到的关键字就是指在日志文件中出现的关键字,会触发向系统管理员发的报警信息。Logcheck的配置文件自带了缺省的关键字,适用于大多数的*inx系统。但是最好还是自己检查一下配置文件,看看自带的关键字是否符合自己的需要。 Logcheck脚本是简单的SHELL程序,logtail.c程序只调用了标准的ANSI C函数。Logcheck要在cron守护进程中配置,至少要每小时运行一次。脚本用简单的grep命令来从日志文件检查不正常的活动,如果发现了就发MAIL给管理员。如果没有发现异常活动,就不会收到MAIL。 3.2 安装和配置logcheck 3.2.1 下载Logcheck 下载网址 下载后放在/backup目录 3.2.2 安装 以root用户身份登录, [root@only_you /root]# tar zxvf /backup/logcheck-1.1.1.tar.gz [root@only_you /root]# cd logcheck-1.1.1 [root@only_you logcheck-1.1.1] make linux file://在Linux平台下使用 make install SYSTYPE=linux file://缺省安装目录是/usr/local/etc make[1]: Entering directory `/root/logcheck-1.1.1' Making linux cc -O -o ./src/logtail ./src/logtail.c Creating temp directory /usr/local/etc/tmp file://在/usr/local/etc下创建目录tmp Setting temp directory permissions chmod 700 /usr/local/etc/tmp Copying files cp ./systems/linux/logcheck.hacking /usr/local/etc file://拷贝文件到/usr/local/etc目录 cp ./systems/linux/logcheck.violations /usr/local/etc cp ./systems/linux/logcheck.violations.ignore /usr/local/etc cp ./systems/linux/logcheck.ignore /usr/local/etc cp ./systems/linux/logcheck.sh /usr/local/etc cp ./src/logtail /usr/local/bin file://把logtail程序拷贝到/usr/local/bin目录 Setting permissions chmod 700 /usr/local/etc/logcheck.sh file://logcheck的脚本 chmod 700 /usr/local/bin/logtail file://修改文件访问权限,确认只有root用户才能操作 chmod 600 /usr/local/etc/logcheck.violations.ignore file://不同的配置文件 chmod 600 /usr/local/etc/logcheck.violations chmod 600 /usr/local/etc/logcheck.hacking 3.2.3
logcheck.sh 主脚本文件。控制所有的处理过程,用grep命令检查日志文件,发现问题报告系统管理员。由cron定时启动 logtail 记录日志文件上次处理到的位置。被logcheck程序调用,避免重复处理已处理过的日志文件。所有的日志文件都由此程序处理,在同一目录下会产生文件######.offset,其中######是检查的日志文件名。文件中记录了logtail开始处理的偏移量,如果删除掉,则从文件开始处进行处理。Logcheck跟踪日志文件的inode号和文件大小,如果inode号发生变化,或者是文件大小比上次运行时的小, logtail会重置偏移量,处理整个文件 Logcheck.hacking 文件中包含了系统受到攻击时的关键字。这个文件的关键字比较稀少,除非能知道某种特定的攻击方式的特征。缺省的关键字是ISS(Internet Security Scanner)攻击产生的,或者是sendmail中的地址栏里的非法语法。在日志文件中找到了关键字就会给管理员发信。 logcheck.violations 文件中包含了产生否定或拒绝信息的系统事件。如denied,refused等。
logcheck.violations.ignore 文件中包含了要对logcheck.violations进行反向查找的关键字。 3.2.4 配置 为了使logcheck运行正常,先要对syslog.conf进行配置,你应该根据自己的需要进行配置,下面给出的只是一个例子 把下面的内容加到/etc/syslog.conf中 #记录mail,news以外的消息 *.*;mail.none;news.none -/var/log/messages #记录认证请求 auth.*;authpriv.* /var/log/authlog #记录所有的内核消息 kern.* /var/log/kernlog #记录警告和错误消息 *.warn;*.err /var/log/syslog 这四个文件/var/log/messages,/var/log/authlog,/var/log/kernlog,/var/log/syslog也就是logcheck要检查的日志文件 重起syslog,[root@only_you]#/etc/rc.d/init.d/syslog restart 用编辑器(vi等)打开文件/usr/local/etc/logcheck.sh,在其中会找到下面的内容 # Linux Red Hat Version 3.x, 4.x $LOGTAIL /var/log/messages > $TMPDIR/check.$ $LOGTAIL /var/log/secure >> $TMPDIR/check.$ $LOGTAIL /var/log/maillog >> $TMPDIR/check.$ 这是logcheck自带的内容,也就是logcheck要检查的日志文件,把它该为下面的内容,使之于syslog.conf的内容相一致:(应该根据你配置的syslog.conf进行修改) $LOGTAIL /var/log/messages > $TMPDIR/check.$ $LOGTAIL /var/log/authlog >> $TMPDIR/check.$ $LOGTAIL /var/log/kernlog >> $TMPDIR/check.$ $LOGTAIL /var/log/syslog >> $TMPDIR/check.$ 还可以找到一行为 SYSADMIN=root,指的是发邮件时的收信人,缺省为root@localhost,本机的root用户,如果机器与Internet相连,也可以指定真实的帐号,我就把它改为了only_you@linuxaid.com.cn,这样就可以随时收到邮件了,不须用root帐号登录到linux机器上去。 在/etc/crontab中增加一项,让cron定时启动logcheck。关于cron的用法请参考相应文档。 00,10,20,30,40,50 * * * * root /usr/local/etc/logcheck.sh 每10分钟运行一次 3.2.5 测试 都配置好了,试试效果如何吧。登录一下,故意输错口令,看看有什么事情发生。10分钟以后,我的only_you@linuxaid.com.cn信箱真的收到了一封信,信的内容大致如下 Apr 26 13:51:13 only_you -- wap[1068]: LOGIN ON pts/1 BY wap FROM *.*.*.* Apr 26 13:51:24 only_you PAM_unix[1092]: authentication failure; wap(uid=500) -> root for system-auth service 刚装好不长时间,logcheck就报告有人试图登录到我的机器上来,不知道这位IP为211.69.197.1的朋友想干什么? Security Violations =-=-=-=-=-=-=-=-=-= Apr 26 15:30:53 only_you xinetd[528]: refused connect from 211.69.197.1 Apr 26 15:30:53 only_you xinetd[528]: refused connect from 211.69.197.1 Unusual System Events =-=-=-=-=-=-=-=-=-=-= Apr 26 15:30:53 only_you xinetd[528]: refused connect from 211.69.197.1 Apr 26 15:30:53 only_you xinetd[528]: refused connect from 211.69.197.1 Apr 26 15:30:53 only_you xinetd[528]: FAIL: ftp libwrap from=211.69.197.1 Apr 26 15:40:00 only_you CROND[1388]: (root) CMD (/usr/local/etc/logcheck.sh) Apr 26 15:40:00 only_you CROND[1388]: (root) CMD (/usr/local/etc/logcheck.sh) Apr 26 15:40:00 only_you CROND[1390]: (root) CMD ( /sbin/rmmod -as) Apr 26 15:40:00 only_you CROND[1390]: (root) CMD ( /sbin/rmmod -as) Apr 26 15:30:53 only_you xinetd[528]: FAIL: ftp libwrap from=211.69.197.1 4.swatch SWATCH (The Simple WATCHer and filer) 是Todd Atkins开发的用于实时监视日志的PERL程序。Swatch利用指定的触发器监视日志记录,当日志记录符合触发器条件时,swatch会按预先定义好的方式通知系统管理员。 Swatch非常容易安装。它是一个PERL程序,无需编译。Swatch有一个很有用的安装脚本,将所有的库文件、手册页和PERL文件复制到相应目录下。安装完成后,只要创建一个配置文件,就可以运行程序了。Swatch的下载网址,最新的版本为3.0.1 。下载后也放到了/backup目录。 4.1 安装 以root用户身份登录, [root@only_you /root]# tar zxvf /backup/swatch-3.0.1.tar.gz [root@only_you /root]# cd swatch-3.0.1 现在的版本需要perl 5和Time::HiRes, Date::Calc,Date::Format, file::Tail.模块,系统自带的perl可能不包括,没关系,它的安装程序会自己到网上去找 [root@only_you swatch-3.0.1]# perl Makefile.PL 系统提示HiRes 1.12模块没有安装,询问是否安装,回答y, 接着系统提示Are you ready for manual configuration? [yes] 敲n就会自动配置,然后它自己到网上去装东西,具体在干什么我也不清楚了。装完这个又说缺别的东西,还是让它自己去装。试着执行一下./swatch,如果没有错误信息就说明安装成功了。 4.2 配置swatchrc swathrc文件的格式如下 # Bad login attempts watchfor /INVALID REPEATED INCOMPLETE/ echo bell 3 mail=only_you@linuxaid.com.cn # Machine room temperature watchfor /WizMON/ echo inverse bell watchfor后跟/pattern/, 其中的"pattern"代表一个swatch将要进行搜索匹配的正则表达式,也就是我们的触发器,下面紧跟的以“Tab”开头的是当表达式匹配时所要执行的动作,Swatch允许指定包括显示、email、呼叫或任何指定的执行文件。上面第一个watchfor的含义是找到/INVALID REPEATED INCOMPLETE/后把信息显示到屏幕上,响铃,同时向only_you@linuxaid.com.cn发MAIL。详细的正则表达式的格式请参考相应的文档 缺省情况下,swatch认为swatchrc文件为~/.swatchrc,可以通过运行时指定参数来改变,如果未找到swatchrc文件,则使用缺省的配置 watchfor = /.*/ echo = random 4.3 测试 Swatch启动时可以带很多参数,但使用通常如下格式启动它就可以了: /usr/local/bin/swatch -c /var/log/syslogrc -t /var/log/syslog & -c参数用于指定配置文件,-t参数指定实时监视的日志文件,"&"使swatch在后台运行。启动后,swatch产生子进程,因此swatch是以两个进程运行的,在停止swatch时必须杀掉两个进程。 -t参数是用tail Cf filename,从文件的末尾开始查找,如果想查找整个文件,则应该使用-f filename。 现在让我们来实验一下,在swatch程序所在的目录下建立swatchrc文件,内容如下: watchfor = /FAILED/ echo=random 执行./swatch Cc swatchrc Cf /var/log/authlog,所有登录失败的记录就会显示出来,并且还用不同的颜色来显示。 Apr 26 17:43:34 only_you login[2344]: FAILED LOGIN 1 FROM cjm FOR dsf, Authentication failure Apr 27 09:55:50 only_you login[932]: FAILED LOGIN 1 FROM (null) FOR root, Authentication failure 5.总结 日志是很强大的工具,然而它的大量数据也很容易淹没我们。如果我们没有足够的时间去检查数以兆计的数据时,很可能会忽略那些有用的资料。日志自动检测系统可以帮助我们解决这个问题。这些自动检测系统将我们所需要的信息实时地通知我们。希望本文能对如何定制你自己的日志文件自动检测系统有一定的帮助。
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 电视盒子怎么看百度云迅雷9怎么关闭右侧 迅迅雷99.99下载不完怎么网易云音乐怎么上传歌
最新文章
2022支付宝万能福扫福微信迎新春状态怎么设
微信小老虎头像怎么设置 微信ID后面设置小老抖音压岁钱卡怎么获得2022 抖音压岁钱获取方微博隐私保护怎么设置 微博隐私保护功能完善今日头条2022年集卡活动开启时间 今日头条2
人气排行 智学网怎么登录 智学网怎么查分数 智学网统教你怎么写电子邮箱格式?以163和QQ邮箱为例腾讯大王卡用了后悔怎么办 腾讯大王卡值得办缺少或丢失xinput1_3.dll解决方法,xinput1应用程序无法正常启动0xc000007b解决方法快播关闭怎么办?快播不能用了怎么看片将pdf文件转换为word文件的最简单方法如何破解QQ空间密码和权限
查看所有0条评论>>