zoukankan      html  css  js  c++  java
  • tripwire--入侵检测系统

    入侵检测系统  IDS Intrusion Detection Systems
    入侵防护系统 IPS   Intrusion Prevention System
    入侵前
    (入侵后检测,事后入侵检测)   tripwire
    (入侵中检测,实时入侵检测)  snort
    因特网
          |
     路由
     |
    |
    防火墙
     |
     |
    入侵检测系统
     |
     |
    内部服务器
    tripwire
    你下载一个软件,会有md5值或数据签名等方法来让你验证这个软件是否被人恶意修改过.这也是一种完整性检测。
    你的操作系统里有很多重要的文件(如/etc/passwd,/etc/shadow,各种命令等),也不能被人恶意修改,如果你怀疑有人入侵了你的操作系统,如何检测出哪些文件被修改过内容或属性等?
    tripwire软件就可以帮你解决。
    完整性检测
    md5或者rpm等都可以对单个文件做完整性检测
    rpm -Vf
    缺点1:只针对安装的rpm包里的文件做完整性检测,无法对自建的文件做检测
    缺点2:只能检测单个文件,你需要写脚本循环去检测多个文件
    # rpm -Vf /etc/php.ini --这个文件是rpm版的php的配置文件,第一次使用这个命令,没有任何显示,表示此文件没有做过任何的改变
    # rpm -Vf /etc/php.ini --对这个文件做微小的改变后,再执行此命令就会有信息了
    S.5....T. c /etc/php.ini
    S file Size differs
    M Mode differs (includes permissions and file type)
    5 digest (formerly MD5 sum) differs
    D Device major/minor number mismatch
    L readLink(2) path mismatch
    U User ownership differs
    G Group ownership differs
    T mTime differs
    P caPabilities differ
    1,安装
    # yum install tripwire --需要epel源
    # ls /etc/tripwire/
    twcfg.txt --定义tripwire各个相关文件的路径
    twpol.txt --定义检测的对象文件,及违规时采取的行为
    # cat /etc/tripwire/twcfg.txt --查看此文件,有以下相关的文件定义
    /var/lib/tripwire/$(hostname).twd --用于存放生成的快照
    /var/lib/tripwire/report/ --存放检测的报告
    tripwire为了自身的安全,设定了两个密码文件
    /etc/tripwire/site.key --用于保护策略文件和配置文件
    /etc/tripwire/$(HOSTNAME)-local.key --用于保护数据库和分析报告
    # ls /etc/tripwire/ --做完后,就会多产生几个配置文件了
    li.cluter.com-local.key site.key tw.cfg twcfg.txt tw.pol twpol.txt
    2,建立两个密码文件
    # tripwire-setup-keyfiles
    Enter the site keyfile passphrase:
    Verify the site keyfile passphrase: --输入你设定的site密码两次
    Generating key (this may take several minutes)...Key generation complete.
    Enter the local keyfile passphrase:
    Verify the local keyfile passphrase: --输入你设定的local密码两次
    Generating key (this may take several minutes)...Key generation complete.
    Signing configuration file... --签名配置文件
    Please enter your site passphrase: --输入刚设定好的site密码
    Wrote configuration file: /etc/tripwire/tw.cfg
    Signing policy file... --签名策略文件
    Please enter your site passphrase: --输入刚设定好的site密码
    Wrote policy file: /etc/tripwire/tw.pol
    3,修改默认配置文件
    rpm版
    # man twpolicy --可以查看策略帮助
    # - ignore the following properties
    # + check the following properties
    #
    # a access timestamp (mutually exclusive with +CMSH)
    # b number of blocks allocated
    # c inode creation/modification timestamp
    # d ID of device on which inode resides
    # g group id of owner
    # i inode number
    # l growing files (logfiles for example)
    # m modification timestamp
    # n number of links
    # p permission and file mode bits
    # r ID of device pointed to by inode (valid only for device objects)
    # s file size
    # t file type
    # u user id of owner
    #
    # C CRC-32 hash
    # H HAVAL hash
    # M MD5 hash
    # S SHA hash
    Device = +pugsdr-intlbamcCMSH ;
    Dynamic = +pinugtd-srlbamcCMSH ;
    Growing = +pinugtdl-srbamcCMSH ;
    IgnoreAll = -pinugtsdrlbamcCMSH ;
    IgnoreNone = +pinugtsdrbamcCMSH-l ;
    ReadOnly = +pinugtsdbmCM-rlacSH ;
    Temporary = +pugt ;
    ===============================================================
    --以twpol.txt下面这一段为例来说明它这个默认策略文件定义的意思
    (
    rulename = "Tripwire Binaries",
    severity = $(SIG_HI)
    )
    {
    $(TWBIN)/siggen -> $(SEC_BIN) ;
    $(TWBIN)/tripwire -> $(SEC_BIN) ;
    $(TWBIN)/twadmin -> $(SEC_BIN) ;
    $(TWBIN)/twprint -> $(SEC_BIN) ; --这四个文件都要被以SEC_BIN的检测等级来检测
    }
    --然后又找到有这句变量定义
    SEC_BIN = $(ReadOnly) ;
    --又有下面这句的定义(rpm版里要man twpolicy去找,source版里有)
    ReadOnly = +pinugtsdbmCM-rlacSH ;
    -----------------------------------------------------------------------------------------------------------
    现在/etc/tripwire/twpol.txt已经默认定义了非常多的文件,但现在这里有一个问题:它默认定义的文件或命令,你的系统上不一定有,所以你要注释掉它。它默认注释的文件或命令,你的系统上却有,所以你要去掉注释.
    比如:
    下面这一句,它默认是定义的,但我系统上没有,所以需要前面加#号来注释
    /sbin/busybox    -> $(SEC_CRIT) ;
    下面这一句,默认是注释的,但我系统上有,所以我想去掉前面的注释
    #/sbin/lvchange -> $(SEC_CRIT) ;
    为了实现这两个需求,我们需要使用脚本来处理默认的policy文件
    # cp 笔记目录下/arch/TRANtwpol.sh /etc/tripwire/
    # cd /etc/tripwire/
    # cp twpol.txt twpol.txt.bak --因为这个脚本是用sed直接操作修改这个文件,所以可以先备份一下
    # sh TRANtwpol.sh twpol.txt --处理完后的twpol.txt文件就是实现了上面两个需求的文件
    这样处理并不能增加配置,也就是说你如果有需要添加的自定义需求,就只能手动再添加;下面我就添加一段做个示例,在配置文件最后加下如下一段
    (
    rulename = "notes",
    severity = $(SIG_HI)
    )
    {
    /share/ -> $(SEC_INVARIANT) (recurse = 0) ;
    /share/20170522/ -> $(SEC_CRIT);
    !/share/20170522/program/ ;
    }
    --这个策略的意思是/share/目录本身(不递归到下级子目录),只检查$(SEC_INVARIANT);/share/20170522/及其递归下级所有文件和子目录都检查$(SEC_CRIT);/share/20170522/program/及其递归下级所有都不检查任何属性
    4,把修改好的文件,定入policy文件
    # twadmin -m P twpol.txt --将修改完毕的文件,编码写入policy file
    Please enter your site passphrase:
    Wrote policy file: /etc/tripwire/tw.pol
    # file /etc/tripwire/tw.pol --把你修改好的策略都写入了这个数据文件里
    /etc/tripwire/tw.pol: data
    5,初始化
    # tripwire --init --通过上一步的数据文件来初始化数据库文件(就相当于是对你所有的配置做了数字签名)
    Please enter your local passphrase:
    Parsing policy file: /etc/tripwire/tw.pol
    Generating the database...
    *** Processing Unix File System *** --在这里时间较长,几分钟左右
    Wrote database file: /var/lib/tripwire/li.cluter.com.twd --数据库文件路径
    The database was successfully generated.
    6,怀疑被入侵后进行手动检测,或者用crontab周期性检测
    # tripwire --check --对所有定义的文件进行一次检测,速度较慢
    Wrote report file: /var/lib/tripwire/report/li.cluster.com-20160930-101619.twr --检测完的报告,时间格式为系统的年月日-时分秒
    # tripwire --check --rule-name notes --指定只检测的定义的规则名
    查看历史报告,可以看到更详细的信息
    # twprint --print-report --twrfile /var/lib/tripwire/report/li.cluster.com-20160930-101619.twr
    一般为了安全性,在写入数据库之后,把明文的twpol.txt文件给删除或者备份到其它介质
    # rm /etc/tripwire/twpol.txt -rf
    7,策略如何更新?
    a),导出正在使用的策略
    # twadmin -m p >/etc/tripwire/twpol.txt
    b),按照需求对其进行修改
    c),再导进去
    # twadmin -m P /etc/tripwire/twpol.txt
    d),重新生成数据文件
    #tripwire --init
  • 相关阅读:
    魅族note手机 图片打马赛克
    魅蓝note手机一键root
    eclipse启动时return code 13
    Eclipse adt 23中运行百度地图官网上的demo出现fatal错误
    windows上部署svn服务器
    windows下jenkins slave 搭建
    图片懒加载
    tomcat7 设置静态资源的expires过期时间
    如何将不带www的根域名301重定向到带www的主域名
    简单的防止图片另存为
  • 原文地址:https://www.cnblogs.com/skyzy/p/9201426.html
Copyright © 2011-2022 走看看