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
  • 相关阅读:
    LeetCode(111) Minimum Depth of Binary Tree
    LeetCode(108) Convert Sorted Array to Binary Search Tree
    LeetCode(106) Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode(105) Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode(99) Recover Binary Search Tree
    【Android】通过经纬度查询城市信息
    【Android】自定义View
    【OpenStack Cinder】Cinder安装时遇到的一些坑
    【积淀】半夜突然有点想法
    【Android】 HttpClient 发送REST请求
  • 原文地址:https://www.cnblogs.com/skyzy/p/9201426.html
Copyright © 2011-2022 走看看