Linux文件系统保护最佳实践:Tripwire

简介:

Linux的系统安全管理主要可以分为四个部分,最重要的部分莫过于其文件系统。Linux系统的最大特点就是文件系统,其中所有的设备都是通过文件进行操作和管理。用户可以采用Linux开源领域最为优秀的Tripwire工具来协助进行文件系统安全保护。

为了防止被篡改,Tripwire对其自身的一些重要文件进行了加密和签名处理。这里涉及到两个密钥:site密钥和local密钥。其中,前者用于保护策略文件和配置文件,如果多台机器具有相同的策略和配置的话,那么它们就可以使用相同的site密钥;后者用于保护数据库和报告,因此不同的机器必须使用不同的local密钥。

下要给出该软件的安装以及使用步骤,要得到该软件可以从Sourceforge直接获得(当前最新版本为tripwire-2.4.1.2-src.tar.bz2)。

(1)解压缩安装文件到/usr/local目录

//切换工作路径
#cd /usr/local/       

//解压缩
#tar xvfj tripwire-2.4.1.2-src.tar.bz2  

(2)执行make命令,进行安装

//进入已经解压的文件夹
#cd tripwire-2.4.1.2-src  

//生成makefile文件
#./configure

//执行make命令
#make         

//执行make install命令
#make install

(3)生成基准数据库

成功编译Tripwire,就可以准备开始对须要监控的文件进行扫描,以生成Tripwire数据库,在Tripwire的src目录下:如下操作:

#./tripwire –init      

(4)测试

数据库生成了,使用命令运行Tripwire,扫描系统变化和细小改变

#./tripwire—check

当第一次运行Tripwire时,须要进行一些准备工作,主要有编辑config文件、检查邮件报告是否正常、根据需要配置策略文件和初始化数据库文件,即创建一个签名的基线数据库。下一次运行时,它使用twpol.txt文件产生一个新的签名数据库。然后,比较两个数据库,实施用户定义的任何选项屏蔽(排除经常更改的文件),最后通过电子邮件或显示器来为用户在终端上输出一个可读的报告。

为了确保Tripwire正确地运行,要特别注意其安装和配置的过程,具体步骤如下:

1.创建密钥和签名

在安装Tripwire之后,可以使用如下命令进行设置:

#./twinstall.sh

脚本twinstall.sh的作用在于执行下列任务:

  1. 创建site和local密钥,这时会要求输入口令(参见下面的步骤);如果这两个密钥也已存在,则可以跳过此步骤。其中,site密钥存放在site.key文件中,而local密钥则存放在hostname-local.key(这里的hostname是指该机器的主机名)文件之中。
  2. 利用site密钥对默认配置文件twcfg.txt进行签名,并将签名(而非被签名的文件twcfg.txt)存放于文件tw.cfg之中。
  3. 利用site密钥对默认策略文件twcfg.pol进行签名,并将签名(而非被签名的文件twcfg.pol)存放于文件tw.pol之中。

2.编辑配置文件

首先打开文本格式的配置文件twcfg.txt,该文件的位置在前面所述安装过程后的/usr/local/etc目录下。然后根据需要修改配置文件,修改完毕后存盘。最后使用twadmin命令根据已编辑的文本文件生成一个加密的配置文件。

ROOT          =/usr/local/sbin
POLFILE       =/usr/local/etc/tw.pol
DBFILE        =/usr/local/lib/tripwire/$(HOSTNAME).twd
REPORTFILE    =/usr/local/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE   =/usr/local/etc/site.key
LOCALKEYFILE  =/usr/local/etc/localhost.localdomain-local.key
EDITOR        =/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL   =3
MAILMETHOD    =SENDMAIL
SYSLOGREPORTING =false
MAILPROGRAM   =/usr/sbin/sendmail -oi -t
 
#twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key twcfg.txt 

安装完毕后,该文件已存在,因此不必再重新创建。通常情况下,配置文件的内容不会发生变化,因此没有必要去修改它,使用Tripwire默认的就可以了。在此时我们应该测试一下Email报告功能是否起作用,以防以后遇到麻烦,输入以下命令进行测试。

#tripwire --test --mail user@domain.com 

3.编辑策略文件

首先打开文本格式的策略文件twpol.txt。该文件的位置在前面所述安装过程后的/usr/local/etc目录下。Tripwire在安装时已经在策略文件中写入了默认的检查规则。这些默认的规则主要检查重要的系统文件和Tripwire自身文件的完整性。

由于默认的配置就不能监视系统中的SUID和SGID文件,而这对于我们的系统安全是非常重要的,因此,我们需要修改配置加入对这个项目的监视。使用如下命令可以找出系统中的所有SUID文件:

#find / -type f -perm -4000 -print

以下命令可以找出系统中的所有SGID文件:

#find / -type f -perm -2000 -print

现在,我们需要把以上命令找出的SUID和SGID文件加入到Tripwire的/策略文件中去。除此之外,我们还要把所有用户home目录下的初始文件也纳入监视的范畴。主要包括以下文件:

  1. .bashrc、.profile、.bash_profile、.cshrc、kshrc、.login等
  2. bash、csh以及ksh登录之后的初始化命令或者脚本
  3. .forward:告诉/usr/lib/sendmail把邮件转发到某些地址
  4. .rhosts:可以使用rsh登录到本帐户的远程主机名
  5. .xinitrc、.Xauthority、Xdefault等X窗口系统的一些重要文件

在创建Tripwire的特征码数据库之前,还有一件事情要做,就是检查.netrc和.rhosts文件的权限是否是600。修改完策略文件后存盘。最后使用twadmin命令根据已编辑的文本文件生成一个加密的策略文件。最后,策略文件的文本文件要删除掉,否则该文件的内容易被察看。

#twadmin --create-polfile twpol.txt 

安装完毕后,该文件已存在,因此不必再重新创建。

4.生成基准数据库

配置文件和策略文件都编辑和生成好了之后,就应该根据配置文件的规则生成基准数据库。基准数据库在Tripwire安装完毕后生成一次即可。我们使用Tripwire命令来生成基准数据库。

#tripwire --init 

基准数据库生成时,Tripwire会提示输入local key,对其进行高强度的加密,以防止对文件内容的非法改变。

5.运行完整性检查

基准数据库生成完毕之后,我们可以使用tripwire命令随时进行完整性检查了:

#tripwire --check 

进行检查时可以指定检查报告的存贮位置:

#tripwire --check --twfile/var/lib/report/report.twr 

进行检查时也可发送Email报告结果:

#tripwire --check --email-report 

进行检查时指定使用Email进行发送的报告等级:

#tripwire --check --email-report --email-report-level 2 

使用指定严重性等级的规则进行检查:

#tripwire --check --severity 80 

使用指定的规则名进行检查:

#tripwire --check --rule-name rulename 

只检查指定的文件或目录:

#tripwire --check object1 object2 object3 … 

进行检查时忽略某些属性(因为有些属性的检查比较耗费系统资源,比如Hash算法):

#tripwire --check --ignore "property, property, property, property" 

如果完整性检查完毕后,发现Email报告功能未生效,可以检查两个方面:一个是策略文件中规则的emailto属性必须填写妥当,另一个是运行tripwire命令时,--email-report选项必须被包含。

6.查阅报告

完整性检查进行完毕后,我们就可以查阅报告以发现有哪些文件遭到了改动,改动了什么。使用twprint命令可以输出报告,它有多种使用方式。

如下命令将加密的报告内容输出到显示器:

#twprint --print-report --twrfile /var/lib/report/report.twr 

如下命令将加密的报告内容输出到一个文本文件:

#twprint --print-report --twrfile /var/lib/report/report.twr - >myreport.txt 

如下命令输出报告时指定输出的报告等级:

#twprint --print-report --report-level 4 --twrfile /var/lib/report/report.twr 

7.升级基准数据库文件

如果在报告中发现了一些违反策略的错误,而这些错误又是被认为正常的,那就要使用Tripwire命令更新基准数据库:

#tripwire --update --twrfile /var/lib/report/report.twr 

也可以在进行完整性检查之后立即自动进行更新:

#tripwire --check --interactive 

8.升级策略文件

随着系统的变化,原来的策略文件必然会不能满足需要,因此必须要不断的更新策略文件中的规则。更新和创建新的策略文件不同,因为如果为Tripwire创建了新的策略文件,那么就必须要重新生成基准数据库。更新时首先打开策略文件的文本文件:

#twadmin --print-profile > twpol.txt 

然后编辑该文件,完毕后存盘。最后使用Tripwire命令进行策略更新:

#tripwire --update-policy twpol.txt 

在此步骤中,Tripwire软件会要求输入site key。

9.改变site key和local key

sitekey和localkey是在安装时生成的,但是也可以随时修改。注意,如果已经用来加密的密钥文件被删除了或是被覆盖了,那么Tripwire加密过的文件都不能访问了。因此,我们要对这两个文件做备份。 很多时候会发现我们的口令可能不太安全,因此要改变口令。需执行以下命令即可:

#twadmin --generate-keys --local-keyfile /etc/tripwire/site.key
#twadmin --generate-keys --local-keyfile /etc/tripwire/local.key 

但是这么做的话,会造成使用以前密钥进行加密的文件无法打开的情况。我们要使用以前的策略文件、配置文件、数据库文件、报告文件的话,因此在改变口令之前,我们必须使用以下的命令把这些已加密的文件进行解密。

#twadmin --remove-encryption file1 file2 ... 

在生成新的密钥文件之后,我们还应该用新密钥对这些文件进行加密。配置文件和策略文件只能用site key加密,而数据库文件和报告文件只能用local key加密。

#twadmin --encrypt --site-keyfile /etc/tripwire/site.key file1 file2 file3 ...
#twadmin --encrypt --local-keyfile /etc/tripwire/local.key file1 file2 file3 ... 

以上就是Linux文件系统保护的实现步骤参考。Tripwire是一个非常不错的开源工具,可以说是系统运维们不可替代的工具,值得仔细研究学习。除了Linux文件系统保护之外,Linux系统的安全管理还包括用户管理、进程保护、日志管理等三个方面,这些将在之后的文章中进行讲解。

















本文转自samsunglinuxl51CTO博客,原文链接: http://blog.51cto.com/patterson/397245,如需转载请自行联系原作者



相关文章
|
1月前
|
存储 监控 Shell
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
37 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
31 2
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 文件系统维护工具 ext2ed命令使用教程
【Shell 命令集合 磁盘维护 】Linux 文件系统维护工具 ext2ed命令使用教程
26 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建Minix文件系统 mkfs.minix 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建Minix文件系统 mkfs.minix 命令使用教程
33 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 建立ext2文件系统 mke2fs命令使用教程
【Shell 命令集合 磁盘维护 】Linux 建立ext2文件系统 mke2fs命令使用教程
30 2
|
1月前
|
安全 Shell Linux
【Shell 命令集合 磁盘维护】Linux 检查和修复Minix文件系统 fsck.minix命令使用教程
【Shell 命令集合 磁盘维护】Linux 检查和修复Minix文件系统 fsck.minix命令使用教程
13 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 磁盘维护 】Linux 查和修复ext2文件系统 fsck.ext2命令使用教程
【Shell 命令集合 磁盘维护 】Linux 查和修复ext2文件系统 fsck.ext2命令使用教程
30 0
|
1月前
|
存储 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
29 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 启用指定文件系统上的磁盘配额功能 quotaon 命令使用教程
【Shell 命令集合 磁盘管理 】Linux 启用指定文件系统上的磁盘配额功能 quotaon 命令使用教程
31 1
|
1月前
|
存储 安全 Linux
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
27 0