2.3 防护方式 Windows

2.3.1 文件水印初始化

在加载各核心内嵌模块之前,需要对保护的网站目录进行初始化,初始化的过程就是扫描整个网站保护目录,对所有文件添加水印的过程。在初始化之前,请先确认当前网站没有被非法添加网页木马, 没有隐藏后门,否则一旦经过初始化阶段,这些有问题的文件也会被认定为合法文件了。

如果需要检查网站是否包含网页后门,请查阅【5.2 检查网页木马/Windows】章节。

推荐在控制台里,使用图形化方式初始化水印。如果需要在控制台里执行水印初始化,一定要先做好站点的路径映射和服务器关联,否则无法在控制台上执行该步骤。水印初始化的具体步骤请见【3.4.6 水印签发 】章节。

在少量特殊情况下,也可以使用命令行方式批量签发水印。方法:

如果返回码为0,则校验通过;如果返回码为110,则校验失败。

2.3.2 Windows IIS7 核心内嵌

在上述两步已完成的基础上,再进行以下配置。

1) 目录权限设置:分别设置同步服务器安装目录(默认C:\Tercel\iGuard5\igdagent)下的三个子目录:alert、modules、signdb对用户Authenticated Users'具有可读和可写权限。具体操作方法为: 右击要设置权限的子目录,选择“共享与安全”,在“安全”选项卡里,选择“添加”,选择用户“Authenticated Users”,并赋予该用户对子目录的读写权限(图示2-18)。

img
图示 2-18 设置特定目录的用户权限

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

img
图示 2-19 显示IIS配置管理器主页(IIS7.0)

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

img
图示 2-20 打开模块界面(IIS7.0)

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

img
图示 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'

img
图示2-22 注册本机模块(IIS7.0)

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

img
图示2-23 注册完成后的模块列表(IIS7.0)

默认情况下,在完成全局iGuard注册和加载后,“网站”下的所有的虚拟主机也会继承iGuard防护,无需再单个配置。
3)但也有部分使用场景,仍然需要对单个虚拟主机设置加载iGuard模块。通常而言,是该虚拟主机曾经删除过iGuard模块,其后又重新加载,才会需要执行以下步骤。

首先点击主窗体下需要加载模块的虚拟主机(如“Default Web Site”),显示该主机的配置主页(图示2-24)。

img
图示2-24 单个虚拟主机的配置主页(IIS7.0)

再点击其中的“模块”功能,确认在当前模块列表中没有iGuard模块(图示2-25)。

img
图示2-25 单个虚拟主机的模块列表(IIS7.0)

点击右侧的“配置本机模块”。在显示的当前模块列表中,核选“iGuard”模块一项(图示2-26)。

img
图示2-26 单个虚拟主机的iGuard模块配置(IIS7.0)

最后点击“确定”退出。确认在当前虚拟主机“Default Web Site”的模块列表中,出现“iGuard”(图示2-27)。
img
图示2-27 单个虚拟主机的模块列表(IIS7.0)

最后可能需要重启IIS,以使模块生效:右击IIS顶级主机名(如“WIN2008-QA”),选择右侧“重新启动”(图示2-28)。
img
图示2-28 重启IIS(IIS7.0)

2.3.3 Windows Apache 核心内嵌

在上述两步已完成的基础上,再进行以下配置。

1) 首先确认所使用Apache的正确版本。执行以下命令(此处举例假设Apache安装在D:\appservers\Apache24目录下,请根据实际使用情况修改):

cmd
D:
cd D:\appservers\Apache24\bin
D:\appservers\Apache24\bin>httpd.exe -V

得到以下输出内容:

在【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服务。

2.3.4 Windows Java中间件

在上述两步已完成的基础上,再进行以下配置。

1)确定中间件所用JDK的正确版本:

注意: 要选择32位还是64位的JAVA JNI库文件,取决于当前中间件程序使用的JDK版本是哪种。确定JDK版本的步骤为,在“开始”菜单的“运行”里,输入“cmd”,返回命令行状态。再继续输入(以下示例假设JDK安装路径为D:\jdk1.7,请根据实际情况修改):

cd D:\jdk1.7\bin
java –version

得到的输出信息为:

如上执行结果则为64位(中间显示“64-bit”信息),否则为32位。根据不同的平台信息,选择不同的JNI库文件:

2) 把步骤1中确立的JNI库文件放到Java的java.library.path路径下。要确定java.library.path路径的位置,可以新建一个testpath.jsp文件,内部为以下代码:

再通过浏览器访问http://主机IP:主机端口/目录/testpath.jsp,获得如下内容:

如上结果时,则可以把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

5)最后,需要彻底重启中间件服务。重启过程中,观察启动日志,当看到类似以下信息,则为iGuard启动成功的标志。
img
图示2-29 iGuard在Java中间件中启动成功的标志

2.3.5 网络校验方式

从iGuardV5版本开始,本地模块和网络校验模块合并为同一个文件,只靠配置文件确定以哪种方式工作。

网络校验方式往往用在多台前端Web服务器共享同一个NAS存储分区的情况下。如果不是这个网络环境,通常不需要使用这种部署模式。

在网络校验模式下,多台Web服务器中,必须选择其中一台安装同步服务器igdagent服务,在同步服务igdagent安装过程中,必须选择【安装网络校验服务模块】,安装完成后,在系统服务里,会增加一个名为【iwmsvc】的服务,该服务对应的默认端口为18999。除了这一台Web服务器外,其他的Web服务器都无需安装这个【网络校验服务】。

在这台安装了【网络校验服务】的网站上,模块的安装为常规方式,配置文件完全无需更改。但除了这一台特殊的机器之外,其他的几套Web服务器,则需要选择以网络校验的方式安装,需要更改mod_iguard5.conf配置文件。

这些特殊服务器上的mod_iguard5.conf中的合适位置,新增以下内容:

其中$address为安装了【网络校验服务】那台机器的IP地址,而$port为【网络校验服务】端口,如18999。所以完整的mod_iguard5.conf可能如下:

具体每种Web服务器的加载和配置方式,则与常规无异,参考上述章节即可。

2.3.6 文件异动检测

在Windows 2008 R2以上平台里,iGuardV5支持主动发现非法的文件修改操作,并实时地从备份端恢复源文件。以下为这种部署方式的大致描述:

1)正常地部署发布和同步服务器。在发布控制台上,新增一个站点,配置该站点对应的源目录和目标目录(必须步骤),关联相应的同步服务器,确认发布服务器和同步服务器网络上联通。和以上各种模块类似,先初始化水印,详见【3.4.4 水印签发 】章节。

2)完成以上步骤后,点击桌面上的“防护状态”,再选择需要配置的服务器对应【操作】列里的“内置模块”,在可用模块下拉列表里,选择“文件异动检测”。在目录列表框,选择“从站点中导入”按钮 img,把前面“路径映射”中设定的“目标目录”自动导入为防护目录。也可以不使用“导入”功能,而是手工指定需要防护的目录。确定后点击【保存】。

img

图示2-30 文件异动检测

自动导入的目录列表实际上就是站点配置中目标目录。

注意1:这种防护方式依赖于fcnotify文件驱动。在不确定的情况下,请在网站服务器端以管理员权限执行 fltmc ,查看系统是否已加载fcnotify驱动。如果没有,可能需要执行C:\Tercel\iGuard5\igdagent\filter\install_driver.bat 重新安装一下该驱动程序。

注意2:如果配置完成并保存后,该功能并不生效,需要在网站服务器端手工重启Web服务器上的【fcagent服务】。

2.3.7 仅监控文件变化

在某些部署环境中,可能仅需要监控和记录网页目录的异常文件变动(该功能针对的往往是用户产生的数据,如上传目录),而无需做其他额外处理。以下为这种部署方式的大致描述:

1) 正常地部署发布和同步服务器。在发布控制台上,新增一个站点,该站点未必需要设置源目录和目标目录,仅需要关联某台同步服务器的IP地址即可。确认发布服务器和同步服务器网络上联通。

2) 在同步服务器端,编辑监控配置文件C:\Tercel\iGuard5\igdagent\conf\filewatch.conf(此为默认路径,以实际情况为准)。该文件为json格式,注意不要破坏文件格式:

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 服务】。