[关闭]
@cdmonkey 2021-06-09T05:43:59.000000Z 字数 8720 阅读 1245

tripwire

开源工具


https://linux.cn/article-3528-1.html
http://www.linuxfly.org/post/133/1/1/
http://www.freebuf.com/articles/system/19208.html
http://www.ibm.com/developerworks/cn/aix/library/au-usingtripwire

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/tripwire.html
https://www.ibm.com/developerworks/aix/library/au-usingtripwire/index.html

其能够对要求校验的系统文件进行类似md5的运行,而生成一个唯一的标识,即“快照(snapshot)”。当这部分系统文件的大小、inode号、权限、时间等任意属性被修改后,再次运行该工具,其会进行前后属性的对比,并生成相关的详细报告。

  1. [root@svn-test tripwire-2.4.2.2-src]# ./configure --prefix=/usr/local/tripwire
  1. ./configure --prefix=/usr/local/tripwire
  2. make
  3. make install
  4. # 从这里开始就会有一些需要安装着手动输入的内容。
  5. LICENSE AGREEMENT for Tripwire(R) 2.4 Open Source
  6. Please read the following license agreement. You must accept the
  7. agreement to continue installing Tripwire.
  8. Press ENTER to view the License Agreement.
  9. ...
  10. Please type "accept" to indicate your acceptance of this
  11. license agreement. [do not accept]
  12. ...
  13. This program will copy Tripwire files to the following directories:
  14. TWBIN: /usr/local/tripwire/sbin
  15. TWMAN: /usr/local/tripwire/man
  16. TWPOLICY: /usr/local/tripwire/etc
  17. TWREPORT: /usr/local/tripwire/lib/tripwire/report
  18. TWDB: /usr/local/tripwire/lib/tripwire
  19. TWSITEKEYDIR: /usr/local/tripwire/etc
  20. TWLOCALKEYDIR: /usr/local/tripwire/etc
  21. CLOBBER is false.
  22. Continue with installation? [y/n]
  23. ...
  24. Creating key files...
  25. (When selecting a passphrase, keep in mind that good passphrases typically
  26. have upper and lower case letters, digits and punctuation marks, and are
  27. at least 8 characters in length.)
  28. Enter the site keyfile passphrase:

Configure Tripwire

安装完成后会于设定文件目录下创建密钥文件、设定文件以及使用密钥加密后的设定文件。

  1. [root@svn-test ~]# ls /usr/local/tripwire/etc/ |sort
  2. site.key
  3. svn-test-local.key
  4. tw.cfg
  5. twcfg.txt # 设定文件:定义数据库、策略文件及软件的可执行文件的位置。
  6. tw.pol
  7. twpol.txt # 策略文件:定义检测的对象以及出现问题时采取的行为。
  1. [root@svn-test etc]# vim twcfg.txt
  2. ROOT =/usr/local/tripwire/sbin
  3. POLFILE =/usr/local/tripwire/etc/tw.pol
  4. DBFILE =/usr/local/tripwire/lib/tripwire/$(HOSTNAME).twd
  5. REPORTFILE =/usr/local/tripwire/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
  6. SITEKEYFILE =/usr/local/tripwire/etc/site.key
  7. LOCALKEYFILE =/usr/local/tripwire/etc/svn-test-local.key
  8. EDITOR =/bin/vi
  9. LATEPROMPTING =false
  10. LOOSEDIRECTORYCHECKING =false
  11. MAILNOVIOLATIONS =true
  12. EMAILREPORTLEVEL =3
  13. REPORTLEVEL =3
  14. MAILMETHOD =SENDMAIL
  15. SYSLOGREPORTING =false
  16. MAILPROGRAM =/usr/sbin/sendmail -oi -t

Generating key

Create site-key

  1. [root@svn-test ~]# cd /usr/local/tripwire/sbin/
  2. ./twadmin --generate-keys --site-keyfile /usr/local/tripwire/etc/site.key

Create local-key

  1. [root@svn-test ~]# cd /usr/local/tripwire/sbin/
  2. ./twadmin --generate-keys --site-keyfile /usr/local/tripwire/etc/`hostname`-local.key

Configuration file signature

Create Database

Tripwire的数据库是基于Policy文件建立的。但默认的Policy文件并没有有效的依照我们的需要建立数据完整性监测规则,所以这里通过一段Perl脚本来让数据监测实际满足于我们的需要。

Encryption policy file

我们更新策略原始文件后需要重新进行签名并创建新的策略文件:

  1. [root@svn-test ~]# cd /usr/local/tripwire/etc/
  2. [root@svn-test etc]# ../sbin/twadmin --create-polfile -S site.key twpol.txt
  3. Please enter your site passphrase:
  4. Wrote policy file: /usr/local/tripwire/etc/tw.pol
  1. ../sbin/twadmin -m F -c tw.cfg -S site.key twcfg.txt

Display encryption policy file

我么能够使用下面的指令来显示策略文件的内容,从而确认“Tripwire”已经创建了新更新的策略文件。

  1. [root@svn-test ~]# /usr/local/tripwire/sbin/twadmin --print-polfile

修改完策略文件后,可使用“Tripwire”进行一次初始完整性扫描并生成新的数据库。如果已经有了数据库,于运行初始化扫描之前,首先移除原来的文件是一个好习惯,可确保有一个干净的数据库版本。

  1. # Delete old database files:
  2. [root@svn-test ~]# rm /usr/local/tripwire/lib/tripwire/svn-test.twd
  3. # Scan and re-create database files:
  4. [root@svn-test ~]# /usr/local/tripwire/sbin/tripwire --init
  5. Please enter your local passphrase:
  6. Parsing policy file: /usr/local/tripwire/etc/tw.pol
  7. Generating the database...
  8. *** Processing Unix File System ***
  9. Wrote database file: /usr/local/tripwire/lib/tripwire/svn-test.twd
  10. The database was successfully generated.

至此于系统上使用新的策略文件进行完整性检测后其输出的结果:

  1. [root@svn-test ~]# /usr/local/tripwire/sbin/tripwire --check
  2. Parsing policy file: /usr/local/tripwire/etc/tw.pol
  3. *** Processing Unix File System ***
  4. Performing integrity check...
  5. Wrote report file: /usr/local/tripwire/lib/tripwire/report/svn-test-20160701-102520.twr
  6. Open Source Tripwire(R) 2.4.2.2 Integrity Check Report
  7. Report generated by: root
  8. Report created on: Fri Jul 1 10:25:20 2016
  9. Database last updated on: Never
  10. ===============================================================================
  11. Report Summary:
  12. ===============================================================================
  13. Host name: svn-test
  14. Host IP address: 172.16.138.11
  15. Host ID: None
  16. Policy file used: /usr/local/tripwire/etc/tw.pol
  17. Configuration file used: /usr/local/tripwire/etc/tw.cfg
  18. Database file used: /usr/local/tripwire/lib/tripwire/svn-test.twd
  19. Command line used: /usr/local/tripwire/sbin/tripwire --check
  20. ===============================================================================
  21. Rule Summary:
  22. ===============================================================================
  23. -------------------------------------------------------------------------------
  24. Section: Unix File System
  25. -------------------------------------------------------------------------------
  26. Rule Name Severity Level Added Removed Modified
  27. --------- -------------- ----- ------- --------
  28. * Tripwire Data Files 0 1 0 0
  29. * Monitor Filesystems 0 0 0 2
  30. Tripwire Binaries 0 0 0 0
  31. User Binaries and Libraries 0 0 0 0
  32. Global Configuration Files 0 0 0 0
  33. RPM Checksum Files 0 0 0 0
  34. Total objects scanned: 78177
  35. Total violations found: 3
  36. ===============================================================================
  37. Object Summary:
  38. ===============================================================================
  39. -------------------------------------------------------------------------------
  40. # Section: Unix File System
  41. -------------------------------------------------------------------------------
  42. -------------------------------------------------------------------------------
  43. Rule Name: Tripwire Data Files (/usr/local/tripwire/lib/tripwire)
  44. Severity Level: 0
  45. -------------------------------------------------------------------------------
  46. Added:
  47. "/usr/local/tripwire/lib/tripwire/svn-test.twd"
  48. -------------------------------------------------------------------------------
  49. Rule Name: Monitor Filesystems (/var)
  50. Severity Level: 0
  51. -------------------------------------------------------------------------------
  52. Modified:
  53. "/var/log/cron"
  54. "/var/log/sa/sa01"
  55. ===============================================================================
  56. Error Report:
  57. ===============================================================================
  58. No Errors
  59. -------------------------------------------------------------------------------
  60. *** End of report ***
  61. Open Source Tripwire 2.4 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered
  62. trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY;
  63. for details use --version. This is free software which may be redistributed
  64. or modified only under certain conditions; see COPYING for details.
  65. All rights reserved.
  66. Integrity check complete.

Check and repair the damage

从上面的监测结果看,使用我们特制的策略文件,没有报出任何错误。

Policy File

  1. [root@svn-test ~]# cat /usr/local/tripwire/etc/twpol.txt
  2. ########## Policy file for Red Hat Linux ##########
  3. # Global Variable Definitions
  4. @@section GLOBAL
  5. TWDOCS="/usr/local/tripwire/doc/tripwire";
  6. TWBIN="/usr/local/tripwire/sbin";
  7. TWPOL="/usr/local/tripwire/etc";
  8. TWDB="/usr/local/tripwire/lib/tripwire";
  9. TWSKEY="/usr/local/tripwire/etc";
  10. TWLKEY="/usr/local/tripwire/etc";
  11. TWREPORT="/usr/local/tripwire/lib/tripwire/report";
  12. HOSTNAME=svn-test;
  13. # Predefined Variables
  14. Device = +pugsdr-intlbamcCMSH ;
  15. Dynamic = +pinugtd-srlbamcCMSH ;
  16. Growing = +pinugtdl-srbamcCMSH ;
  17. IgnoreAll = -pinugtsdrlbamcCMSH ;
  18. IgnoreNone = +pinugtsdrbamcCMSH-l ;
  19. ReadOnly = +pinugtsdbmCM-rlacSH ;
  20. Temporary = +pugt ;
  21. @@section FS
  22. # Tripwire Binaries and Data Files
  23. # Tripwire Binaries
  24. (
  25. rulename = "Tripwire Binaries",
  26. )
  27. {
  28. $(TWBIN)/siggen -> $(ReadOnly) ;
  29. $(TWBIN)/tripwire -> $(ReadOnly) ;
  30. $(TWBIN)/twadmin -> $(ReadOnly) ;
  31. $(TWBIN)/twprint -> $(ReadOnly) ;
  32. }
  33. # Tripwire Data Files - Configuration Files, Policy Files, Keys, Reports, Databases
  34. (
  35. rulename = "Tripwire Data Files",
  36. )
  37. {
  38. $(TWDB) -> $(Dynamic) -i ;
  39. $(TWPOL)/tw.pol -> $(ReadOnly) -i ;
  40. $(TWPOL)/tw.cfg -> $(ReadOnly) -i ;
  41. $(TWLKEY)/$(HOSTNAME)-local.key -> $(ReadOnly) ;
  42. $(TWSKEY)/site.key -> $(ReadOnly) ;
  43. $(TWREPORT) -> $(Dynamic) (recurse=0) ;
  44. }
  45. # User Binaries and Libraries
  46. (
  47. rulename = "User Binaries and Libraries",
  48. )
  49. {
  50. /usr/local/bin -> $(ReadOnly) ;
  51. /usr/local/include -> $(ReadOnly) ;
  52. /usr/local/lib -> $(ReadOnly) ;
  53. /usr/local/libexec -> $(ReadOnly) ;
  54. /usr/local/sbin -> $(ReadOnly) ;
  55. }
  56. # Global Configuration Files (/etc/)
  57. (
  58. rulename = "Global Configuration Files",
  59. )
  60. {
  61. /etc -> $(IgnoreNone) -SHa ;
  62. /etc/bashrc -> $(Dynamic) ;
  63. /etc/profile -> $(Dynamic) -i ;
  64. /etc/rc.d -> $(IgnoreNone) -SHa ;
  65. /etc/sysconfig -> $(IgnoreNone) -SHa ;
  66. }
  67. # Monitor Filesystems
  68. (
  69. rulename = "Monitor Filesystems",
  70. )
  71. {
  72. /usr -> $(ReadOnly) ;
  73. /var -> $(ReadOnly) ;
  74. }

Email

  1. /usr/local/tripwire/sbin/tripwire --check|mailx -s "Tripwire Report for `hostname`" wang_hz@suixingpay.com

排错

不小心把tw.cfg以及tw.pol文件移除了。

  1. [root@PBSWeChat02 etc]# /usr/local/tripwire/sbin/tripwire --init
  2. ### Error: File could not be opened.
  3. ### Filename: /usr/local/tripwire/etc/tw.cfg
  4. ### \xe6\xb2\xa1\xe6\x9c\x89\xe9\x82\xa3\xe4\xb8\xaa\xe6\x96\x87\xe4\xbb\xb6\xe6\x88\x96\xe7\x9b\xae\xe5\xbd\x95
  5. ### Configuration file could not be read.
  6. ### Exiting...

解决方法:

  1. [root@PBSWeChat02 etc]# ../sbin/twadmin -m F -c tw.cfg -S site.key twcfg.txt
  2. [root@PBSWeChat02 etc]# ../sbin/twadmin -m P -c tw.cfg -p tw.pol -S site.key twpol.txt
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注