在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