zoukankan      html  css  js  c++  java
  • SWATCH 规格严格

    作者:backend
    出处:Lance Spitzner
    主页:http://www.nsfocus.com/
    日期:1999-12-14


    过滤
        日志具有无可替代的价值,但不幸的是它们经常被忽略,因为系统管理员在并不充裕的时间里难以查看大量的
    信息。标准的日志功能不能自动过滤和检查日志记录,并提供系统管理员所需要的信息。下面我将简述如何过滤并
    得到所需要的信息,然后介绍一个日志工具。
        本文的第一部份将讲述如何制定过滤计划和所需要的信息,第二部份是日志过滤的实现。本文介绍的日志工具
    是Todd Atkins开发的swatch。


    开始
        首先应该制定计划。制定日志计划的步骤有三步:第一步详细说明你需要知道什么,确定要从系统日志中得到
    什么信息;第二步是确定哪些日志包含有这些信息;第三步是制定可以得到这些信息的触发器。
        例如,假设你非常关心sendmail的安全,特别想知道是否有人试图使用你的邮件服务器作垃圾邮件转发。另外
    你还想知道是否有人试图通过SMTP命令(如expn、vrfy)未经授权获取相关信息。这些就是我们第一步所要确定的
    内容。
        第二步是选择信息源,或包含有所城信息的日志文件。可以通过系统日志配置文件/etc/syslog.conf了解所需
    信息被记录到哪里。例如,以下是电子邮件日志存放位置的配置:
    homer#cat /etc/syslog.conf | grep mail
    mail.debug ifdef(`LOGHOST', /var/log/syslog, @loghost)
        最后一步就是定义触发器,即指定所需要记录的日志信息。在这里我们需要的是两个针对sendmail的触发器。
            1、试图将邮件服务器作为邮件转发器非授权IP地址。
            2、试图使用已经被关闭的命令(如expn)的用户/或IP地址。
        要确定触发器的定义正确与否,可模拟触发事件,并用/usr/bin/tail -f命令监视日志文件。对于第一个触
    发器(非授权IP地址试图使用邮件服务器作邮件转发),可从一个非授权IP地址尝试使用邮件服务器作邮件转发,
    同时通过/usr/bin/tail -f命令查看日志记录。
    Oct 3 14:48:51 homer sendmail[6704]: OAA06704:
    ruleset=check_rcpt,arg1=bsmith@domain.com, relay=foo@moo.com
    [206.54.252.1],reject=550 bsmith@domain.com... Relaying denied
        我们可以看到在moo.com上有人在试图通过我们的邮件服务器转发邮件,这很可能是垃圾邮件的信号。这就是
    一个非授权邮件转发的日志记录触发器。请注意信息中还包含有IP地址和域名。
        现在,测试一下第二个触发器(非授权使用expn命令)。登录到SMTP端口并执行expn命令,同时通过
    /usr/log/tail -f /var/log/syslog命令查看日志记录。
    Oct 2 20:28:37 homer sendmail[5453]: NOQUEUE: foo@moo.com[206.54.252.1]: expn bsmith [rejected]
        我们可以看到在moo.com上有人试图查询用户名bsmith。在使用expn命令时将激活这个触发器。请注意信息中
    还包含有IP地址和域名。
        上面我们简述了制定日志过滤的三个步骤。首先是确定需要什么信息:非授权使用邮件服务器作邮件转发和
    非授权使用expn命令。然后是确定包含这些信息的日志:/var/log/syslog。最后,通过模拟事件验证日志触发
    器。现在是我们建立自动化过滤器的时候了。


    SWATCH
        SWATCH (The Simple WATCHer and filer) 是Todd Atkins开发的用于实时监视日志的PERL程序。Swatch利
    用指定的触发器监视日志记录,当日志记录符合触发器条件时,swatch会按预先定义好的方式通知系统管理员。
    在本文的例子中,我们需要swatch在有人攻击sendmail时报警。
        Swatch非常容易安装。它是一个PERL程序,无需编译。Swatch有一个很有用的安装脚本,将所有的库文件、
    手册页和PERL文件复制到相应目录下。安装完成后,只要创建一个配置文件,就可以运行程序了。Swatch的下载
    网址:ftp://ftp.stanford.edu/general/security-tools/swatch
        配置文件swatchrc是swatch软件的重点。这个文本文件告诉swatch需要监视什么日志,需要寻找什么触发器,
    和当触发时所要执行的动作。当swatch发现到与swatchrc中定义的触发器正则表达式相符时,它将执行在swatchrc
    中定义的通知程序。Swatch通过使用/usr/bin/tail -f实时监视日志文件。
        现在让我们为在上面提到的sendmail日志创建一个swatchrc文件。目的是当有人试图攻击我们的邮件服务器时
    sendmail将通过电子邮件通知我们。swatchrc文件的内容格式如下。它包含了四个用制表符分隔的字段,前面两个
    字段是必须的,而后面两个字段是可选的。
        第一个字段的格式是:
        /pattern/pattern/
        其中的"pattern"代表一个swatch将要进行搜索匹配的正则表达式,也就是我们的触发器。
        第二个字段的格式是:
        Action,action...
        其中的"action"是当表达式匹配时所要执行的动作。Swatch允许指定包括email、呼叫或任何指定的执行文件。
        第三个字段(可选)的格式是:
        HH:MM:SS
        HH是小时数,MM是分钟数,SS是秒数。这个时间间隔是设置swatch忽略同一匹配表达式的最大时间。例如,如
    果你定义时间间隔为5分钟,swatch在这个时间间隔内对同一匹配表达式将只报告一次,即使该表达式可能已匹配了
    20次。
        第四个字段(如果使用了第三个字段,则此字段是必需的)是一个时间标签,格式为start:length。它定义了
    在通知消息中时间标签的位置和长度。
        在这个sendmail实例中,我们将要为上面的两个触发器创建含有相应匹配表达式的swatchrc文件。我们希望只
    要其中有一个表达式匹配,系统将向abuse@ourcompany.com发送包含匹配记录的通知电子邮件。然而,我们也要避
    免被过多的警告信息所淹没。例如,如果攻击者试图在一分钟内转发1000封电子邮件,可能产生大量的通知消息。
    因此,我们决定设置时间间隔为5分钟。这样,不管在5分钟内有多少次匹配同一个表达式,都只会发送一封通知邮
    件。下面就是我们最终创建的swatchrc文件内容:
        /Relaying denied|expn/ echo=normal,mail=abuse@ourcompany.net 5:00 0:16
        第一个字段内容为"/Relaying denied|expn/"。如果swatch发现匹配了其中的任何表达式,它将发送一个警告
    信息。第一个表达式"Relaying denied"对应于我们上面提到的第一个触发器,此时的日志将记录有人正试图进行
    非授权邮件转发。第二个表达式"expn"则对应于第二个触发器,此时的日志将记录有人正试图执行expn命令。这两
    个触发器的具体情况请回顾本文的第一部份。
        第二个字段内容为"echo=nomal,mail=abuse@company.com",
        表示将发送包含匹配日志记录的电子邮件到abuse@ourcompany.com。
        第三和第四个字段(可选字段)内容为"5:00 0:16",表示在5分钟内不会重复同一个警告消息,并定义了时间
    标签的位置和长度。
        现在我们已正确配置了swatchrc文件,最后一个步骤就是启动swatch进程。Swatch启动时可以带很多参数,但
    使用通常如下格式启动它就可以了:
        /usr/local/bin/swatch -c /var/log/syslogrc -t /var/log/syslog &
        -c参数用于指定配置文件,-t参数指定实时监视的日志文件,"&"使swatch在后台运行。启动后,swatch产生
    子进程,因此swatch是以两个进程运行的,在停止swatch时必须杀掉两个进程。现在,sendmail的日志记录将被自
    动进行过滤,任何时间只要有人想利用你的sendmail系统,你接收到包含了匹配日志记录的电子邮件。


    总结
        日志是很强大的工具,然而它的大量数据也很容易淹没我们。如果我们没有足够的时间去检查数以兆计的数据
    时,很可能会忽略那些有用的资料。日志自动化过滤系统可以帮助我们解决这个问题。这些自动化过滤系统将我们
    所需要的信息实时地通知我们。希望本文能对如何定制你自己的日志文件自动过滤器有一定的帮助。

    原文出处(点击此处)

  • 相关阅读:
    【Go语言入门系列】Go语言工作目录介绍及命令工具的使用
    【保姆级教程】手把手教你进行Go语言环境安装及相关VSCode配置
    【Go语言入门系列】(九)写这些就是为了搞懂怎么用接口
    【Go语言入门系列】(八)Go语言是不是面向对象语言?
    【Go语言入门系列】(七)如何使用Go的方法?
    趣解计算机网络(一)之入门概念介绍
    Go语言入门系列(六)之再探函数
    redis数据类型&操作命令
    从Linux源码看Socket(TCP)的accept
    从Linux源码看TIME_WAIT状态的持续时间
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/2176557.html
Copyright © 2011-2022 走看看