在CentOS 8上安装和配置Tripwire安全监视工具

在本教程中,您将学习如何在CentOS 8上安装和配置Tripwire安全监视工具。 开源的商业的 版。在此设置中,我们将学习如何安装和设置Tripwire的开源版本。

那么,什么是Tripwire?它是领先的基于主机的入侵检测工具之一。根据他们的Github页面,“开源Tripwire是一种用于监视和警告文件和目录更改的安全性和数据完整性工具”

它的工作方式是“将当前文件系统状态与已知的基准状态进行比较,并在检测到任何更改时发出警报。基线和检查行为由策略文件控制,该策略文件指定要监视的文件或目录以及要在其上监视的属性,例如哈希,文件许可权和所有权。当发生预期的更改(例如升级程序包)时,可以将基准数据库更新为新的已知良好状态。还可以更新该策略,例如,以减少噪音或覆盖新安装的软件包。”

在CentOS 8上安装和配置Tripwire安全监视工具

Tripwire实际上应安装在干净的OS上,以充分利用它。如果要在已使用的系统上进行安装,则它将在首次运行时创建一个基线。

遵循本指南以了解如何在CentOS 8上安装和配置Tripwire。

运行系统更新

确保您的系统软件包是最新的;

dnf update

在CentOS 8上安装EPEL Repos

Tripwire在默认的CentOS 8存储库上不可用。但是,它是由EPEL存储库提供的,可以通过执行以下命令将其安装在CentOS 8上。

dnf install epel-release

检查EPEL仓库是否确实提供了Tripwire;

yum provides tripwire
tripwire-2.4.3.7-5.el8.x86_64 : IDS (Intrusion Detection System)
Repo        : epel
Matched from:
Provide    : tripwire = 2.4.3.7-5.el8

因此,所有人都准备开始安装。

在CentOS 8上安装Tripwire

dnf install tripwire

在CentOS 8上配置Tripwire安全监视工具

最初设置Tripwire时,它将创建一个记录某些文件信息的数据库。然后,当它运行时,它将一组指定的文件和目录与数据库中存储的信息进行比较。任何添加或删除的文件都会被标记并报告。从数据库中先前记录的状态更改的任何文件也会发生相同的情况。

如果定期对系统文件运行Tripwire,则在运行Tripwire时会发现任何文件更改。 Tripwire将报告更改,这将为系统管理员提供一个线索,如果某些文件已被更改,他们需要立即采取损害控制措施。

生成Tripwire加密密钥

首先,您需要生成Tripwire sitelocal 加密密钥。站点密钥用于签名配置和策略,而本地密钥用于签名数据库和报告。本地密钥就像一个私有密钥,并且对于每个系统都是唯一的,而站点密钥就像一个公共密钥,可以在系统之间共享。

可以使用称为以下工具的Tripwire管理和实用工俱生成密钥 twadmin。该工具允许对Tripwire文件进行编码,解码,签名和验证,并提供一种生成和更改本地和站点密钥的方法。

生成本地密钥时,建议您在密钥名称上包括系统主机名。

在CentOS 8和类似的衍生产品上,您可以使用以下命令创建主机名: hostnamectl 命令如下所示。

hostnamectl set-hostname centos8.kifarunix-demo.com

接下来,继续生成密钥。

生成Tripwire本地密钥;

twadmin -m G -L /etc/tripwire/`hostname`-local.key
(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

Enter the local keyfile passphrase: ENTER_YOUR_PASSPHRASE
Verify the local keyfile passphrase: RE-ENTER_YOUR_PASSPHRASE
Generating key (this may take several minutes)...Key generation complete.

生成Tripwire站点密钥;

twadmin -m G -S /etc/tripwire/site.key

这会生成密钥并将其存储在 /etc/tripwire 目录。

ls /etc/tripwire/
centos8.kifarunix-demo.com-local.key site.key twcfg.txt twpol.txt

创建Tripwire配置文件

Tripwire配置文件存储特定于系统的信息,包括Tripwire数据文件的位置以及用于发送电子邮件通知的设置。这些设置是在安装过程中自动生成的,但可以由系统管理员进行修改。 /etc/tripwire/twcfg.txt 是签名的Tripwire配置文件的示例纯文本版本 /etc/tripwire/tw.cfg

您可以编辑 /etc/tripwire/twcfg.txt 在生成签名版本之前更新定义的参数。

要生成Tripwire配置的签名版本,您需要使用站点密钥对其进行签名,然后再编辑文件,则需要提供站点密钥密码。

运行以下命令以生成Tripwire配置。

twadmin -m F -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt

提示您输入站点密钥密码。

此命令生成twcfg.txt的加密二进制版本, /etc/tripwire/tw.cfg

要了解有关Tripwire配置的更多信息,请参阅 man twconfig

创建Tripwire策略文件

Tripwire策略文件描述了要监视的系统对象,应收集每个对象的哪些属性并将其存储在数据库文件中。策略文件中的每个对像都与一个属性掩码相关联,该属性掩码描述了Tripwire应该监视的文件或目录更改,以及可以安全忽略的更改。

Tripwire政策的纯文本版本,/etc/tripwire/twpol.txt,是在安装过程中生成的。

在Tripwire策略配置文件中,有许多策略规则适用于系统的各个部分。

参见样本部分 twpol.txt,注释行已删除。

less /etc/tripwire/twpol.txt
@@section GLOBAL
TWROOT=/usr/sbin;
TWBIN=/usr/sbin;
TWPOL="/etc/tripwire";
TWDB="/var/lib/tripwire";
TWSKEY="/etc/tripwire";
TWLKEY="/etc/tripwire";
TWREPORT="/var/lib/tripwire/report";
HOSTNAME=centos8.example.com;

@@section FS
SEC_CRIT      = $(IgnoreNone)-SHa ;  # Critical files that cannot change
SEC_SUID      = $(IgnoreNone)-SHa ;  # Binaries with the SUID or SGID flags set
SEC_BIN       = $(ReadOnly) ;        # Binaries that should not change
SEC_CONFIG    = $(Dynamic) ;         # Config files that are changed infrequently but accessed often
SEC_LOG       = $(Growing) ;         # Files that grow, but that should never change ownership
SEC_INVARIANT = +tpug ;              # Directories that should never change permission or ownership
SIG_LOW       = 33 ;                 # Non-critical files that are of minimal security impact
SIG_MED       = 66 ;                 # Non-critical files that are of significant security impact
SIG_HI        = 100 ;                # Critical files that are significant points of vulnerability
...
...
(
  rulename = "Invariant Directories",
  severity = $(SIG_MED)
)
{
  /                                    -> $(SEC_INVARIANT) (recurse = 0) ;
  /home                                -> $(SEC_INVARIANT) (recurse = 0) ;
  /etc                                 -> $(SEC_INVARIANT) (recurse = 0) ;
}

(
  rulename = "File System and Disk Administraton Programs",
  severity = $(SIG_HI)
)
{
  /sbin/accton                         -> $(SEC_CRIT) ;
  /sbin/badblocks                      -> $(SEC_CRIT) ;
  /sbin/busybox                        -> $(SEC_CRIT) ;
...
...

策略设置首先为各种系统二进制文件和目录设置变量,然后是定义将应用于特定系统文件,目录和二进制文件等的控件的变量。

例如,规则名称, rulename = "Invariant Directories"被指定为中等严重性。根据这个规则,我们有 /home/etc 应用于这些目录的控件由变量定义, SEC_INVARIANT

您可以根据需要进一步修改策略文件,包括删除系统上不存在的目录,以及添加尚未添加的目录,然后对其进行签名。

例如,为了演示其工作原理,让我们假设我们有一个名为 classified/etc/ 不应更改的目录,并且想要报告任何修改,只需在 Tripwire Data Files 规则部分。

vim /etc/tripwire/twpol.txt
...
# Tripwire Data Files - Configuration Files, Policy Files, Keys, Reports, Databases

(
  rulename = "Tripwire Data Files",
  severity = $(SIG_HI)
)
{
...
...
  $(TWSKEY)/site.key                   -> $(SEC_BIN) ;
  /etc/classified                      -> $(SEC_CRIT) ; # Custom demo file

  #don't scan the individual reports
  $(TWREPORT)                          -> $(SEC_CONFIG) (recurse=0) ;
}
...

还要注意,我已经更新了文件并删除了系统中不存在的所有文件/目录,并删除了一些文件/目录以使其易于演示。

完成对策略的签名后。

twadmin -m P -S /etc/tripwire/site.key /etc/tripwire/twpol.txt

输入密码以签署策略。您现在应该拥有签名的策略文件, /etc/tripwire/tw.pol

创建系统安全基准

更新策略后,需要通过创建系统文件和目录当前安全状态的数据库来设置Tripwire的起点。初始化Tripwire数据库;

tripwire -m i
...
### Continuing...
Wrote database file: /var/lib/tripwire/centos8.kifarunix-demo.com.twd
The database was successfully generated.

现在已设置基线。

您始终可以更新策略文件并重新初始化数据库。

要打印数据库,请使用以下命令, twprint -m d -d

twprint -m d -d /var/lib/tripwire/centos8.kifarunix-demo.com.twd

运行系统完整性检查

构建Tripwire数据库后,下一步通常是在完整性检查模式下运行tripwire。此模式按照策略文件中的指定对系统进行扫描。

因此,在运行完整性检查之前,让我们编辑上面创建的文件。

echo "test" > /etc/classified

接下来,运行完整性检查。

tripwire -m c

完整性检查报告将打印到标准输出,并保存在Tripwire配置文件中REPORTFILE设置指定的位置。在我的设置中,报告另存为 /var/lib/tripwire/report/centos8.kifarunix-demo.com-20200811-233448.twr

Open Source Tripwire(R) 2.4.3.7 Integrity Check Report

Report generated by:          root
Report created on:            Tue 11 Aug 2020 11:34:48 PM EAT
Database last updated on:     Never

===============================================================================
Report Summary:
===============================================================================

Host name:                    centos8.kifarunix-demo.com
Host IP address:              10.0.2.15
Host ID:                      None
Policy file used:             /etc/tripwire/tw.pol
Configuration file used:      /etc/tripwire/tw.cfg
Database file used:           /var/lib/tripwire/centos8.kifarunix-demo.com.twd
Command line used:            tripwire -m c 

===============================================================================
Rule Summary: 
===============================================================================

-------------------------------------------------------------------------------
  Section: Unix File System
-------------------------------------------------------------------------------

  Rule Name                       Severity Level    Added    Removed  Modified 
  ---------                       --------------    -----    -------  -------- 
  Tripwire Binaries               100               0        0        0        
  Libraries                       66                0        0        0        
* Tripwire Data Files             100               0        0        1        
  System boot changes             100               0        0        0        
  OS executables and libraries    100               0        0        0        
  Security Control                100               0        0        0        
  Login Scripts                   100               0        0        0        
  Critical configuration files    100               0        0        0        
  Critical system boot files      100               0        0        0        
  (/boot)
  Invariant Directories           66                0        0        0        

Total objects scanned:  37883
Total violations found:  1

===============================================================================
Object Summary: 
===============================================================================

-------------------------------------------------------------------------------
# Section: Unix File System
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Rule Name: Tripwire Data Files (/etc/classified)
Severity Level: 100
-------------------------------------------------------------------------------

Modified:
"/etc/classified"

===============================================================================
Error Report: 
===============================================================================

No Errors

-------------------------------------------------------------------------------
*** End of report ***

您可以从报告中查看修改后的文件。

如果要稍后打印报告,请使用 twprint -m r -t {0|1|2|3|4} -r 命令。

其中{0 | 1 | 2 | 3 | 4}指定报告的级别。例如,将详细报告打印到标准输出;

twprint -m r -t 4 -r /var/lib/tripwire/report/centos8.kifarunix-demo.com-20200811-233448.twr

以下是文件中更改了哪些属性的摘要, /etc/classified

...
Total objects scanned:  37883
Total violations found:  1

===============================================================================
Object Summary: 
===============================================================================

-------------------------------------------------------------------------------
# Section: Unix File System
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Rule Name: Tripwire Data Files (/etc/classified)
Severity Level: 100
-------------------------------------------------------------------------------
  ----------------------------------------
  Modified Objects: 1
  ----------------------------------------

Modified object name:  /etc/classified

  Property:            Expected                    Observed                    
  -------------        -----------                 -----------                 
  Object Type          Regular File                Regular File                
  Device Number        64768                       64768                       
  File Device Number   0                           0                           
  Inode Number         4320652                     4320652                     
  Mode                 -rw-r--r--                  -rw-r--r--                  
  Num Links            1                           1                           
  UID                  root (0)                    root (0)                    
  GID                  root (0)                    root (0)                    
* Size                 6                           5                           
* Modify Time          Tue 11 Aug 2020 11:19:35 PM EAT
                                                   Tue 11 Aug 2020 11:34:10 PM EAT
* Change Time          Tue 11 Aug 2020 11:19:35 PM EAT
                                                   Tue 11 Aug 2020 11:34:10 PM EAT
  Blocks               8                           8                           
* CRC32                CzvquR                      A3v0iv                      
* MD5                  CxlGrJJJLSNHxiNbTSYRGE      DY6Pyi3A+Jb9fLTLADG6JJ
...

更新Tripwire数据库

确认并确认对系统所做的更改后,即可使用该报告更新数据库。这样可以协调数据库和当前系统之间的任何差异。这样可以防止在以后的报告中显示违规行为。如果报告的更改是意外的,并且可能是恶意的,则应将更改后的文件替换为原始版本。如果有有效的更改原因,则必须更改数据库以匹配当前文件。

用当前报告更新数据库;

tripwire -m u -r /var/lib/tripwire/report/centos8.kifarunix-demo.com-20200811-233448.twr

该命令将使用您定义的EDITOR以文本格式打开报告。对于检测到的每个更改,旁边都有一个复选框, [X]。您可以从相邻的框中删除“ x”,以防止使用该对象的新值更新数据库,或者干脆让它进行更新。

...
Total objects scanned:  37883
Total violations found:  1

===============================================================================
Object Summary:
===============================================================================

-------------------------------------------------------------------------------
# Section: Unix File System
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Rule Name: Tripwire Data Files (/etc/classified)
Severity Level: 100
-------------------------------------------------------------------------------

Remove the "x" from the adjacent box to prevent updating the database
with the new values for this object.

Modified:
[x] "/etc/classified"

===============================================================================
Object Detail:
===============================================================================

-------------------------------------------------------------------------------
  Section: Unix File System
-------------------------------------------------------------------------------
...

进行更改后,保存并退出报告。

然后提示您输入本地密码短语以更新数据库。

配置Tripwire通过电子邮件发送报告

您可以设置cron作业以在特定时间段运行Tripwire检查,并将报告发送到您的邮件收件箱。

电子邮件程序和报告级别的配置设置在 /etc/tripwire/twcfg.txt。 Tripwire可以使用sendmail MTA传递您的电子邮件。

通过Postfix和Gmail SMTP中继服务器传递邮件

为了能够发送电子邮件,请使用SMTP服务器安装和配置Postfix以进行邮件中继。在我们的设置中,我们使用Gmail SMTP服务器通过Postfix中继邮件。

yum install postfix cyrus-sasl-plain mailx

接下来,将Postfix配置为使用Gmail在CentOS 8上进行邮件中继。

将以下行插入Postfix主配置文件的末尾, /etc/postfix/main.cfg。替换值 myhostname 参数。

myhostname = centos8.kifarunix-demo.com
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

您当然可以在替换主机名值之后通过执行以下命令来更新Postfix配置。

cat << 'EOL' >> /etc/postfix/main.cf
myhostname = centos8.kifarunix-demo.com
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
EOL

在更新Gmail中继帐户凭据 /etc/postfix/sasl_passwd。相应地替换gmail帐户及其密码。

echo "[smtp.gmail.com]:587 [email protected]:PASSWORD" > /etc/postfix/sasl_passwd

散列密码文件并设置适当的所有权和权限。

postmap /etc/postfix/sasl_passwd
chown root:postfix /etc/postfix/sasl_passwd*
chmod 640 /etc/postfix/sasl_passwd*

启动并启用后缀以在系统启动时运行;

systemctl enable --now postfix

使用Tripwire测试电子邮件配置;

tripwire --test --email [email protected]

maillog 行,您应该看到 status=sent (250 2.0.0 OK...

另外,选中收件箱,您应该会收到包含主题的电子邮件, Test email message from Tripwire。否则,请检查您的Postfix配置。

现在,您需要明确指定要为其接收电子邮件的报告。因此,编辑策略配置文件, /etc/tripwire/twpol.txt

vim /etc/tripwire/twpol.txt

确定要接收电子邮件的报告后,添加 emailto= 行到规则指令部分。输入您的电子邮件地址作为此参数的值。参见下面的示例,在上面的演示中,我们向其中添加了一个自定义文件 Tripwire Data Files 规则,以便我们可以将 /etc/classified 文件。

(
  rulename = "Tripwire Data Files",
  severity = $(SIG_HI),
  emailto  = [email protected]
)
{
  $(TWDB)                              -> $(SEC_CONFIG) -i ;
  $(TWPOL)/tw.pol                      -> $(SEC_BIN) -i ;
  $(TWPOL)/tw.cfg                      -> $(SEC_BIN) -i ;
  $(TWLKEY)/$(HOSTNAME)-local.key      -> $(SEC_BIN) ;
  $(TWSKEY)/site.key                   -> $(SEC_BIN) ;
  /etc/classified                      -> $(SEC_CRIT) ; # Custom demo file
  $(TWREPORT)                          -> $(SEC_CONFIG) (recurse=0) ;
}
...

完成更新策略后,请退出策略。

twadmin -m P -S /etc/tripwire/site.key /etc/tripwire/twpol.txt

对于根据规则对文件进行的任何更改, Tripwire Data Files,您将通过电子邮件收到有关更改的通知。

让我们修改文件并运行检查;

echo "test" >> /etc/classified

运行检查并通过电子邮件发送报告;

tripwire -m c -M

以下是示例电子邮件报告的摘要。


在CentOS 8上安装和配置Tripwire安全监视工具

安装cronjob来自动执行此任务;

sudo crontab -e
0 18 * * * /usr/sbin/tripwire -m c -M

上面的cronjob将每天下午6点运行,并将报告发送到您的收件箱。

这标志着我们指南的结尾,说明了如何在CentOS 8上安装和配置Tripwire安全监视工具。

参考

Sidebar