在Ubuntu 22.04上安装和配置Tripwire的方法

本文介绍在Ubuntu 22.04 Linux系统上安装和配置Tripwire的方法,同时的方法也适用于Ubuntu 20.04、18.04版本上。Tripwire是一个开源的基于主机的入侵检测系统,它可以检查文件的完整性,它将监视和警告文件/目录的更改。Tripwire检查将当前文件系统状态与已知的基线状态进行比较,并对检测到的任何更改发出警报。基线和检查行为由策略文件控制,该文件指定要监视的文件或目录,以及要监视的属性,例如哈希、文件权限和所有权。当发生预期的更改(例如升级包)时,可以将基线数据库更新为新的已知良好状态该政策也可以更新,例如,以减少噪音或覆盖新安装的软件包。

安装和配置Tripwire的方法

1、在Ubuntu 22.04、20.04、18.04上安装Tripwire

Ubuntu的Tripwire包可以从apt存储库中获得。通过运行以下命令安装:

sudo apt update

sudo apt install tripwire

这个安装是一个交互式过程,它会问你几个问题。然后相应地回答在Ubuntu 22.04、20.04、18.04上安装Tripwire。

2、创建Tripwire密钥并初始化数据库

现在安装已经成功,我们需要生成密钥并初始化数据库,以便tripwire可以开始工作:

$ cd /etc/tripwire/

$ ls -l

total 36

-rw------- 1 root root  931 Nov 15 16:05 site.key

-rw-r--r-- 1 root root 4586 Nov 15 16:06 tw.cfg

-rw-r--r-- 1 root root 4159 Nov 15 16:06 tw.pol

-rw-r--r-- 1 root root  510 Nov 10 19:57 twcfg.txt

-rw-r--r-- 1 root root 6057 Nov 10 19:57 twpol.txt

-rw------- 1 root root  931 Nov 15 16:06 ubuntu22-local.key

我们将twcfg.txt文件REPORTLEVEL修改为4,这是最大值:

$ sudo vim twcfg.txt

ROOT          =/usr/sbin

POLFILE       =/etc/tripwire/tw.pol

DBFILE        =/var/lib/tripwire/$(HOSTNAME).twd

REPORTFILE    =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr

SITEKEYFILE   =/etc/tripwire/site.key

LOCALKEYFILE  =/etc/tripwire/$(HOSTNAME)-local.key

EDITOR        =/usr/bin/editor

LATEPROMPTING =false

LOOSEDIRECTORYCHECKING =false

MAILNOVIOLATIONS =true

EMAILREPORTLEVEL =3

REPORTLEVEL   =4

SYSLOGREPORTING =true

MAILMETHOD    =SMTP

SMTPHOST      =localhost

SMTPPORT      =25

TEMPDIRECTORY =/tmp

更改后生成配置文件:

$ sudo twadmin -m F -c tw.cfg -S site.key twcfg.txt

Please enter your site passphrase: <Enter-your-passphrase>

Wrote configuration file: /etc/tripwire/tw.cfg

3、优化Tripwire策略文件

创建包含以下内容的twpolmake.pl文件:

sudo vim twpolmake.pl

添加:

#!/usr/bin/perl

# Tripwire Policy File customize tool

# --------------------------------

# Copyright (C) 2003 Hiroaki Izumi

# This program is free software; you can redistribute it and/or

# modify it under the terms of the GNU General Public License

# as published by the Free Software Foundation; either version 2

# of the License, or (at your option) any later version.

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

# --------------------------------

# Usage:

#     perl twpolmake.pl {Pol file}

# --------------------------------

#

$POLFILE=$ARGV[0];

open(POL,"$POLFILE") or die "open error: $POLFILE" ;

my($myhost,$thost) ;

my($sharp,$tpath,$cond) ;

my($INRULE) = 0 ;

while (<POL>) {

    chomp;

    if (($thost) = /^HOSTNAME\s*=\s*(.*)\s*;/) {

        $myhost = `hostname` ; chomp($myhost) ;

        if ($thost ne $myhost) {

            $_="HOSTNAME=\"$myhost\";" ;

        }

    }

    elsif ( /^{/ ) {

        $INRULE=1 ;

    }

    elsif ( /^}/ ) {

        $INRULE=0 ;

    }

    elsif ($INRULE == 1 and ($sharp,$tpath,$cond) = /^(\s*\#?\s*)(\/\S+)\b(\s+->\s+.+)$/) {

        $ret = ($sharp =~ s/\#//g) ;

        if ($tpath eq '/sbin/e2fsadm' ) {

            $cond =~ s/;\s+(tune2fs.*)$/; \#$1/ ;

        }

        if (! -s $tpath) {

            $_ = "$sharp#$tpath$cond" if ($ret == 0) ;

        }

        else {

            $_ = "$sharp$tpath$cond" ;

        }

    }

    print "$_\n" ;

}

close(POL) ;

创建配置:

$ sudo su -

# perl twpolmake.pl twpol.txt > twpol.txt.new 

# twadmin -m P -c tw.cfg -p tw.pol -S site.key twpol.txt.new 

Please enter your site passphrase: 

Wrote policy file: /etc/tripwire/tw.pol

创建Tripwire数据库:

# tripwire -m i -s -c tw.cfg

Please enter your local passphrase: 

### Warning: File system error.

### Filename: /var/lib/tripwire/server-01.twd

### No such file or directory

### Continuing...

您可以使用以下命令打印数据库:

# twprint -m d -d /path/to/database.twd

例如:

# twprint -m d -d /var/lib/tripwire/server-01.twd

4、更新数据库

最简单的更新形式是使用报告文件中的所有更改更新数据库:

# tripwire --update --accept-all

通过手动执行检查来测试Tripwire:

# tripwire -m c -s -c /etc/tripwire/tw.cfg

在Ubuntu 22.04上安装和配置Tripwire的方法

在Ubuntu 22.04上安装和配置Tripwire的方法

如果没有遇到错误,Tripwire数据文件位于:/var/lib/Tripwire/<servername>。twd扫描结果保存在/var/lib/trapwire/report/目录下:

# ls /var/lib/tripwire/report/

server-01-20180609-073225.twr

要打印此报告,请使用语法:

# twprint -m r -t [0-4] -r /path/to/reportfile.twr

-t参数指定报告详细程度,其中0是报告内容的单行摘要,4显示所有更改对象的所有收集属性。如果未在命令行或通过REPORTLEVEL配置文件选项指定,则报告级别默认为3。示例:

# twprint -m r -t 4 -r /var/lib/tripwire/report/server-01-20180609-073225.twr

此外,请注意,您可以手动更新此报告:

# tripwire -m u -a -s -c /etc/tripwire/tw.cfg -r /var/lib/tripwire/report/server-01-20180609-073225.twr 

Please enter your local passphrase:

5、更新策略

策略更新模式在不丢失现有基线的情况下修改当前Tripwire策略:

# tripwire --update-policy updated-policy.txt

这将在更新过程中检查新策略。如果此检查检测到更改,则默认行为是显示更改并退出,而不更新策略或数据库。要接受更改并继续策略更新,请使用-Z low / –secure-mode命令行选项。

6、测试电子邮件配置

要测试电子邮件配置:

# tripwire --test --email user@domain.tld

这将使用配置文件中指定的电子邮件设置将测试电子邮件发送到指定的地址。

栏目相关文章