在 /usr/local/doc/tripwire/目录下有个 policyguide.txt 文件,是策略示例。
/etc/hosts -> +pinugs 意为如果/etc/hosts文件被改动,Tripwire将发出警告。
!/etc/init.d 前面的!意为不扫描/etc/init.d文件
“/home/fred/big file" 双引号的意思是当文件名中出现空格和特殊字符时可以识别。
#以下策略演示使用单独选项后的扫描功能:
/etc/passwd -> +a; # Access timestamp 扫描操作时间
/etc/passwd -> +b; # Number of blocks 扫描块数
/etc/passwd -> +c; # Inode timestamp (create/modify) 索引节点创建/更改时间
/etc/passwd -> +d; # Inode storage disk device number 索引节点在磁盘的存储号
/etc/passwd -> +g; # File owner's group ID 文件属主所在组的ID
/etc/passwd -> +i; # Inode number 索引节点号
/etc/passwd -> +m; # Modification timestamp 修改时间
/etc/passwd -> +n; # inode reference count 索引节点引用数
/etc/passwd -> +p; # Permissions and file mode bits 权限和文件模式位
/etc/passwd -> +r; # Device Number 设备号(对设备对象有效)
/etc/passwd -> +s; # File size 文件大小
/etc/passwd -> +t; # File Type 文件类型
/etc/passwd -> +u; # File owner's user ID 文件属主的ID
/etc/passwd -> +l; # File is increasing in size 一个增长中的文件
/etc/passwd -> +C; # CRC-32 hash value CRC-32校验值
/etc/passwd -> +M; # MD5 hash value MD5指纹
/etc/passwd -> +S; # SHA hash value SHA指纹
/etc/passwd -> +H; # Haval signature value HAVAL指纹
当Tripwire扫描或者发现违规行为时,可以在策略里添加具体属性来影响Tripwire的行为:
/etc -> +ug (recurse=false); 非递归扫描,只扫描/etc文件夹内容,但不扫描其子文件夹。
/etc -> +ug (rulename=software); 设置一个rulename,如software,/etc文件夹的扫描报告将在"software"这个名称之下。
/etc -> +ug (emailto=admin@domain.com); 如果在/etc文件夹下有任何违反策略的情况发生,Tripwire将向设置的admin@domain.com邮箱发送邮件报告。
/etc -> +ug (emailto="admin@domain.com webmaster@domain.com"); 可以向多个邮箱发送。
/etc -> +ug (severity=50); 你可以设置策略的严重程度,使得你可以快速扫描最具威胁的篡改。
在Tripwire里可以设置变量:
param1 = +SMCH; # 设置变量 param1.
dir1 = /etc/inet; # 设置变量 dir1
DIR1 = /etc/init.d; # 变量是大小写敏感的
$(dir1) -> +tbamc; #使用变量dir1来代替/etc/inet,左边替代
/etc/inet -> $(param1); #使用变量param1来代替+SMCH,右边替代
$(DIR1) -> $(param1); # 两边同时使用变量
Tripwire 也定义了一些变量:
/etc/httpd/weblog -> $(Growing); 这里的$(Growing)等同于+pinugtdl,意味着此文件大小只能增加,如日志文件。
/etc/passwd -> $(IgnoreNone); $(IgnoreNone)等同于+pinusgamctdbCMSH,意味着检查文件所有属性,用在关键的文件上,如passwd文件。
/home/fred/mytextfile -> $(IgnoreAll); $(IgnoreAll)等同于+pinusglamctdbCMSH,意味着不检查文件属性,只检查其存在与否。
/usr/httpd/index.html -> $(ReadOnly); $(ReadOnly)等同于+pinugsmtdbCM,检查是否ReadOnly。
/home/fred -> $(Dynamic); $(Dynamic)等同于+pinugtd,检查理应是动态的文件。
/dev/null -> $(Device); $(Device)等同于+pugs,检查设备文件和那些可以读取的静态文件的。
如果需要一组网络服务器使用同一个策略,但是针对每个机器又需要特定的策略,那么可以使用指令:
@@ifhost salmon # 如果服务器名为salmon,则执行下面策略
/etc -> +abcdgimnpstul; # 则执行这条策略
@@else
/bin -> +abcdgimnpstul; #而其他服务器执行下面的策略
@@endif
指令可以嵌套:
@@ifhost crayfish
/etc/passwd -> $(Growing);
@@else
@@ifhost salmon
/etc/passwd -> $(IgnoreAll);
@@endif
/etc/passwd -> $(IgnoreNone);
@@endif
下面是实际配置策略时的一些示例:
/home/fred/specialfile -> asd (emailto=fred@domain.com, Rulename=special, severity=50);
/home/fred/generalworkfile -> bm (Rulename=work, severity=60);
/home/fred/myreport -> CSH (Rulename=report, severity=75);
/home/fred/mypresentation.data -> Mpi (Rulename=urgent, severity=90);
还可以这么写:
(Rulename=standard, severity=30)
{
/home/fred -> lgu;
/home/jane -> CHM;
/home/project/report.file -> $(Growing);
}