分类: LINUX
2010-10-14 17:04:23
Linux的系统安全管理主要可以分为四个部分,最重要的部分莫过于其文件系统。Linux系统的最大特点就是文件系统,其中所有的设备都是通过文件进行操作和管理。用户可以采用Linux开源领域最为优秀的Tripwire工具来协助进行文件系统安全保护。
为了防止被篡改,Tripwire对其自身的一些重要文件进行了加密和签名处理。这里涉及到两个密钥:site密钥和local密钥。其中,前者用于保护策略文件和配置文件,如果多台机器具有相同的策略和配置的话,那么它们就可以使用相同的site密钥;后者用于保护数据库和报告,因此不同的机器必须使用不同的local密钥。
下要给出该软件的安装以及使用步骤,要得到该软件可以从直接获得(当前最新版本为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的作用在于执行下列任务:
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目录下的初始文件也纳入监视的范畴。主要包括以下文件:
在创建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系统的安全管理还包括用户管理、进程保护、日志管理等三个方面,这些将在之后的文章中进行讲解。