在加载各核心内嵌模块之前,需要对保护的网站目录进行初始化,初始化的过程就是扫描整个网站保护目录,对所有文件添加水印的过程。在初始化之前,请先确认当前网站没有被非法添加网页木马, 没有隐藏后门,否则一旦经过初始化阶段,这些有问题的文件也会被认定为合法文件了。
如果需要检查网站是否包含网页后门,请查阅【5.2 检查网页木马/Windows】章节。
推荐在控制台里,使用图形化方式初始化水印。如果需要在控制台里执行水印初始化,一定要先做好站点的路径映射和服务器关联,否则无法在控制台上执行该步骤。水印初始化的具体步骤请见【3.4.6 水印签发 】章节。
在少量特殊情况下,也可以使用命令行方式批量签发水印。方法:
编辑”同步服务器安装目录“/wmktool.conf 配置文件,把其中的 dirs 段,改为需要做水印初始化的目录;如果有多个目录,需要用逗号分隔,每个目录的两边用双引号括起来;目录分隔符要使用正斜杠”/“:
xxxxxxxxxx{"ServerRoot":"C:/Tercel/iGuard5/igdagent","filter":[""],"dirs":["C:/Apache24/htdocs","C:/Apache2427/htdocs"]}
cmd回到命令行状态,执行以下命令,可以对wmktool.conf里指定的目录执行水印初始化:
wmktool.exe -f wmktool.conf
如果需要查询某个特定文件的水印值是否正常,可以执行:
wmktool.exe -f wmktool.conf -c verify ”需要校验的文件名“
如果返回码为0,则校验通过;如果返回码为110,则校验失败。
在上述两步已完成的基础上,再进行以下配置。
1) 目录权限设置:分别设置同步服务器安装目录(默认C:\Tercel\iGuard5\igdagent)下的三个子目录:alert、modules、signdb对用户Authenticated Users'具有可读和可写权限。具体操作方法为: 右击要设置权限的子目录,选择“共享与安全”,在“安全”选项卡里,选择“添加”,选择用户“Authenticated Users”,并赋予该用户对子目录的读写权限(图示2-18)。

图示 2-18 设置特定目录的用户权限
2)在全局注册模块:运行“开始”→“管理工具”→“Internet信息服务”或直接执行Inetmgr。点击“Internet信息服务(IIS)管理器”主窗体下的顶级主机名(如本例中“WIN2008-QA”),显示IIS配置主页(图示2-19)。

图示 2-19 显示IIS配置管理器主页(IIS7.0)
在IIS配置管理器主页中的功能列表中,选择“模块”功能,双击打开,进入模块界面(图示2-20)。

图示 2-20 打开模块界面(IIS7.0)
点击右上角的“配置主机模块”,再打开的配置主机模块窗体中点击“注册”按钮(图示2-21)。

图示 2-21 配置本机模块
并在弹出的注册本机模块窗体中“名称(N)”中填入“iGuard”,“路径”浏览选择同步服务器安装目录下的mod_iis7_iguard.dll模块(图示2-22)。
32位系统请选择:'C:\Tercel\iGuard5\igdagent\modules\iis7\mod_iis7_iguard.dll'
64位系统请选择:'C:\Tercel\iGuard5\igdagent\modules\iis7_64\mod_iis7_iguard.dll'

图示2-22 注册本机模块(IIS7.0)
完成后点击“确定”按钮,“注册本机模块”窗体中的iGuard模块已成功注册。此时iGuard模块会显示在全局启用的模块列表中(图示2-23)。

图示2-23 注册完成后的模块列表(IIS7.0)
默认情况下,在完成全局iGuard注册和加载后,“网站”下的所有的虚拟主机也会继承iGuard防护,无需再单个配置。
3)但也有部分使用场景,仍然需要对单个虚拟主机设置加载iGuard模块。通常而言,是该虚拟主机曾经删除过iGuard模块,其后又重新加载,才会需要执行以下步骤。
首先点击主窗体下需要加载模块的虚拟主机(如“Default Web Site”),显示该主机的配置主页(图示2-24)。

图示2-24 单个虚拟主机的配置主页(IIS7.0)
再点击其中的“模块”功能,确认在当前模块列表中没有iGuard模块(图示2-25)。

图示2-25 单个虚拟主机的模块列表(IIS7.0)
点击右侧的“配置本机模块”。在显示的当前模块列表中,核选“iGuard”模块一项(图示2-26)。

图示2-26 单个虚拟主机的iGuard模块配置(IIS7.0)
最后点击“确定”退出。确认在当前虚拟主机“Default Web Site”的模块列表中,出现“iGuard”(图示2-27)。
图示2-27 单个虚拟主机的模块列表(IIS7.0)
最后可能需要重启IIS,以使模块生效:右击IIS顶级主机名(如“WIN2008-QA”),选择右侧“重新启动”(图示2-28)。
图示2-28 重启IIS(IIS7.0)
在上述两步已完成的基础上,再进行以下配置。
1) 首先确认所使用Apache的正确版本。执行以下命令(此处举例假设Apache安装在D:\appservers\Apache24目录下,请根据实际使用情况修改):
cmd
D:
cd D:\appservers\Apache24\bin
D:\appservers\Apache24\bin>httpd.exe -V
得到以下输出内容:
xxxxxxxxxxServer version: Apache/2.4.12 (Win32)Apache Lounge VC11 Server built: Jan 28 2015 16:48:40Server's Module Magic Number: 20120211:41Server loaded: APR 1.5.1, APR-UTIL 1.5.4Compiled using: APR 1.5.1, APR-UTIL 1.5.4Architecture: 32-bitServer MPM: WinNTthreaded: yes (fixed thread count)forked: no
在【Server version】一项写着"2.4.12",在【Architecture】一项写着32-bit,说明应该选用32位的2.4版本模块。
2) 编辑Apache的配置文件httpd.conf,根据Apache的不同版本,在文本的最后加入以下两行。这2行根据不同的 Apache版本(2.2 vs 2.4,32位vs 64位)会有细微的差异,请根据步骤1,确认正确的版本。
LoadModule ap2x_iguard5_module C:/Tercel/iGuard5/igdagent/modules/ap22/mod_ap22_iguard5.so
LoadiGuardConfigFile C:/Tercel/iGuard5/igdagent/modules/ap22/mod_iguard5.conf
LoadModule ap2x_iguard5_module C:/Tercel/iGuard5/igdagent/modules/ap22_64/mod_ap22_iguard5.so
LoadiGuardConfigFile C:/Tercel/iGuard5/igdagent/modules/ap22_64/mod_iguard5.conf
LoadModule ap2x_iguard5_module C:/Tercel/iGuard5/igdagent/modules/ap24/mod_ap24_iguard5.so
LoadiGuardConfigFile C:/Tercel/iGuard5/igdagent/modules/ap24/mod_iguard5.conf
LoadModule ap2x_iguard5_module C:/Tercel/iGuard5/igdagent/modules/ap24_64/mod_ap24_iguard5.so
LoadiGuardConfigFile C:/Tercel/iGuard5/igdagent/modules/ap24_64/mod_iguard5.conf
3)最后重启Apache服务。
在上述两步已完成的基础上,再进行以下配置。
1)确定中间件所用JDK的正确版本:
注意: 要选择32位还是64位的JAVA JNI库文件,取决于当前中间件程序使用的JDK版本是哪种。确定JDK版本的步骤为,在“开始”菜单的“运行”里,输入“cmd”,返回命令行状态。再继续输入(以下示例假设JDK安装路径为D:\jdk1.7,请根据实际情况修改):
cd D:\jdk1.7\bin
java –version
得到的输出信息为:
xxxxxxxxxxjava version "1.7.0_67"Java(TM) SE Runtime Environment (build 1.7.0_67-b01)Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
如上执行结果则为64位(中间显示“64-bit”信息),否则为32位。根据不同的平台信息,选择不同的JNI库文件:
2) 把步骤1中确立的JNI库文件放到Java的java.library.path路径下。要确定java.library.path路径的位置,可以新建一个testpath.jsp文件,内部为以下代码:
xxxxxxxxxx<%out.println(System.getProperty("java.library.path"));%>
再通过浏览器访问http://主机IP:主机端口/目录/testpath.jsp,获得如下内容:
xxxxxxxxxxD:\jdk1.7\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;……
如上结果时,则可以把igx5_jni.dll、libigx5.dll两个文件放到其中任一目录下,如D:\jdk1.7\bin。
在某些比较干净的系统里,可能还需要Visual Studio2010实时库文件msvcr100.dll的支持,所以还需要相应地把msvcr100.dll一起复制到特定目录下。
3)再把相应的中间件过滤器类文件(modules\jee\iguardfilter5.jar)添加到中间件服务器的CLASSPATH路径中。对于不同的Java应用服务器,这步操作各不相同,具体可参见各产品的技术文档。以下是常见中间件产品中的做法。
shared.loader=
改为
shared.loader="C:/Tercel/iGuard5/igdagent/modules/jee/iguardfilter5.jar"
set PRE_CLASSPATH=C:\bea\weblogic92\samples\server\examples\build\serverclasses
修改为:
set PRE_CLASSPATH=C:\bea\weblogic92\samples\server\examples\build\serverclasses;C:\Tercel\iGuard5\igdagent\modules\jee\iguardfilter5.jar
4)然后备份原Web应用配置文件web.xml为web.xml.bak,备份完成后,在web.xml文件内加入以下内容。这段内容在web.xml里的位置请参阅官方文档中【filter和filter-mapping】两部分在全局中的相对位置: http://docs.oracle.com/cd/E12839_01/web.1111/e13712/
web_xml.htm
x<filter><filter-name>iGuard Filter</filter-name><filter-class>cn.com.tcxa.iguard5.IguardFilter</filter-class><init-param><param-name>iguardConf</param-name><!-- 如果Java为64位,以下路径最好改为 C:/Tercel/iGuard5/igdagent/modules/jee_64/mod_iguard5.conf --><param-value>C:/Tercel/iGuard5/igdagent/modules/jee/mod_iguard5.conf</param-value></init-param><init-param><param-name>debug</param-name><param-value>false</param-value></init-param></filter><filter-mapping><filter-name>iGuard Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
5)最后,需要彻底重启中间件服务。重启过程中,观察启动日志,当看到类似以下信息,则为iGuard启动成功的标志。
图示2-29 iGuard在Java中间件中启动成功的标志
从iGuardV5版本开始,本地模块和网络校验模块合并为同一个文件,只靠配置文件确定以哪种方式工作。
网络校验方式往往用在多台前端Web服务器共享同一个NAS存储分区的情况下。如果不是这个网络环境,通常不需要使用这种部署模式。
在网络校验模式下,多台Web服务器中,必须选择其中一台安装同步服务器igdagent服务,在同步服务igdagent安装过程中,必须选择【安装网络校验服务模块】,安装完成后,在系统服务里,会增加一个名为【iwmsvc】的服务,该服务对应的默认端口为18999。除了这一台Web服务器外,其他的Web服务器都无需安装这个【网络校验服务】。
在这台安装了【网络校验服务】的网站上,模块的安装为常规方式,配置文件完全无需更改。但除了这一台特殊的机器之外,其他的几套Web服务器,则需要选择以网络校验的方式安装,需要更改mod_iguard5.conf配置文件。
这些特殊服务器上的mod_iguard5.conf中的合适位置,新增以下内容:
xxxxxxxxxx{..."Mode":"net","CheckServer": {"Address":$address,"Port":$port},...}
其中$address为安装了【网络校验服务】那台机器的IP地址,而$port为【网络校验服务】端口,如18999。所以完整的mod_iguard5.conf可能如下:
xxxxxxxxxx{"interrupt_action":"block","interrupt_status_code":403,"interrupt_content_type":"text/html","interrupt_info":"<html>403 Access Denied.</html>","filter":[],"ServerRoot":"C:/Tercel/iGuard5/igdagent","cache":{"width":"","height":"","ttl":""},"rewrite_paths": [{"from": "/orig/path1","to": "/real/path1","case_sensitive":false},{"from": "/orig/path2","to": "/real/path2","case_sensitive":true}],"Mode":"net","CheckServer": {"Address":"192.168.100.9","Port":18999,"PassthroughOnBusy": true},"name":"Apache22-x86","type":"AP22","desc":"Apache22的32位防护模块"}
"CheckServer"段增加一个 "PassthroughOnBusy": true ,设置通讯出现问题的时候,不再做文件校验。该选项默认为关闭false。"rewrite_paths"段做目录修正。 "rewrite_paths"里的"from"路径,为在Web前端上的网页文件路径;"to"路径,为网络校验中心上的真实文件路径,也是同步规则中的目标端路径。具体每种Web服务器的加载和配置方式,则与常规无异,参考上述章节即可。
在Windows 2008 R2以上平台里,iGuardV5支持主动发现非法的文件修改操作,并实时地从备份端恢复源文件。以下为这种部署方式的大致描述:
1)正常地部署发布和同步服务器。在发布控制台上,新增一个站点,配置该站点对应的源目录和目标目录(必须步骤),关联相应的同步服务器,确认发布服务器和同步服务器网络上联通。和以上各种模块类似,先初始化水印,详见【3.4.4 水印签发 】章节。
2)完成以上步骤后,点击桌面上的“防护状态”,再选择需要配置的服务器对应【操作】列里的“内置模块”,在可用模块下拉列表里,选择“文件异动检测”。在目录列表框,选择“从站点中导入”按钮
,把前面“路径映射”中设定的“目标目录”自动导入为防护目录。也可以不使用“导入”功能,而是手工指定需要防护的目录。确定后点击【保存】。
图示2-30 文件异动检测
自动导入的目录列表实际上就是站点配置中目标目录。
注意1:这种防护方式依赖于fcnotify文件驱动。在不确定的情况下,请在网站服务器端以管理员权限执行 fltmc ,查看系统是否已加载fcnotify驱动。如果没有,可能需要执行C:\Tercel\iGuard5\igdagent\filter\install_driver.bat 重新安装一下该驱动程序。
注意2:如果配置完成并保存后,该功能并不生效,需要在网站服务器端手工重启Web服务器上的【fcagent服务】。
在某些部署环境中,可能仅需要监控和记录网页目录的异常文件变动(该功能针对的往往是用户产生的数据,如上传目录),而无需做其他额外处理。以下为这种部署方式的大致描述:
1) 正常地部署发布和同步服务器。在发布控制台上,新增一个站点,该站点未必需要设置源目录和目标目录,仅需要关联某台同步服务器的IP地址即可。确认发布服务器和同步服务器网络上联通。
2) 在同步服务器端,编辑监控配置文件C:\Tercel\iGuard5\igdagent\conf\filewatch.conf(此为默认路径,以实际情况为准)。该文件为json格式,注意不要破坏文件格式:
xxxxxxxxxx{"watch":["C:\\inetpub\\wwwroot\\uploads","C:\\tomcat\\webapps"],"process_filter":["+ '*\\httpd.exe'","+ '*\\w3wp.exe'","+ '*\\java.exe'","- '*'"],"file_filter":["*"]}
3) 按照以上步骤调整 C:\Tercel\iGuard5\igdagent\conf\filewatch.conf 配置文件后,还需要到“系统工具”->“服务”中,重启名为【fefilter】的文件监控服务,使设置生效;
4) 以后如果设定的目录下有非法文件改动,具体的动作、用户名、进程信息等将详细记录在fefilter-yyyymmdd.log 文件中;
5)在发布服务器的Web控制台上,也可以看到相应的报警信息。
6)以上报警仅记录,没有其他处理。
7) 以上fefilter-yyyymmdd.log日志和控制台上的报警,实际上都是由C:\Tercel\iGuard5\igdagent\plugin\lua\alert.lua脚本实现的。如果有其他延伸需求,可以从这个接口再做二次开发。
注意1:这种防护方式依赖于fcnotify文件驱动。在不确定的情况下,请在网站服务器端以管理员权限执行 fltmc ,查看系统里是否已加载fcnotify驱动。如果没有,可能需要以管理员权限,手工执行C:\Tercel\iGuard5\igdagent\filter\install_driver.bat 重新安装一下该驱动程序。
注意2:如果配置完成并保存后,该功能并不生效,需要在网站服务器端手工重启Web服务器上的【fefilter 服务】。