注:本实验已在w2k3sp1中实现,相关软件较大无法上传,有需要都请发邮件到
[email]mimemail@163.com[/email]
 
 
 
现在关于Windows上安装Snort的文档相当稀少,我们尽力做到使Windows用户的Snort新手在Windows中部署Snort环境时时减少“痛苦”,这是我们希望做到的.
 
WinIDS以其安装的简便著称(-_-!)。在大多数环境下安装Windows Instrusion Detection SystemWindows入侵检测系统)是一个非常简单的过程,通常花费不到一个小时的时间来完成之。本文介绍使用世界知名的SNORT入侵检测引擎、MySQL数据库、Apache Web服务器和BASEBasic Analysis and Security EngineKevin Johnson)来部署一个Windows入侵检测系统的主控端或者单独的Windows入侵检测系统。
我们把所有相关需要的软件做成了一个AIO(即All IN ONE)软件包,下面是关于其中我们用到的主要软件包的描述。
Apache Web Server这是主要的Internet Web站点的服务器软件,为我们的BASE安全控制台提供运行平台。
SnortSnort是一个轻量的网络入侵检测系统,用于在IP网络上实施实时的通讯分析和包日志记录。这是我们用来在网络上收集信息的软件。
WinPcap: WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。WinPcap 为用户级的数据包提供了Windows 下的一个平台。WinPcap  BPF 模型和 Libpcap 函数库在 Windows 平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库 Packet.dll 和一个高层的独立于系统的函数库 Libpcap 组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对 NDIS 中函数的调用为 Win95Win98WinNT、和 Win2000 提供一类似于 UNIX 系统下 Berkeley Packet Filter 的捕获和发送原始数据包的能力。Packet.dll 是对这个 BPF 驱动程序进行访问的 API 接口,同时它有一套符合 Libpcap 接口(UNIX 下的捕获函数库)的函数库。
MySQL ServerMySQL 是一个基于SQL的应用于众多平台的数据库服务器,我们用它来存储Snort的告警信息。所有的来自IDS探测器的告警信息都被存储在我们的MySQL数据库中。
ADODBPHP中一个对象导向的数据库封包链接库,它提供了共通的应用程序接口来跟所有支持的数据库沟通,简化了你的程序的数据库移植性操作。ADODBActive Data Object DataBase的缩写,目前支持MySQLPostgreSQLOracleInterbaseMicrosoft SQL ServerAccessFoxProSybaseODBCADO
PHP: 这是一个广泛使用的通用脚本语言,特别适用于Web开发并且可以被嵌入到HTML中。
Basic Analysis and Security Engine (BASE): BASE是一个用来查看Snort IDS告警的Web应用程序。BASE is a web-based application for viewing Snort IDS alerts. 所有探测器的信息在这里被加工整理以方便查看。
WinIDS - All In One Software Pak
提示:到200735为止,所有需要的和最新的文件已被包含进下面的AIO Software Pak中。
我们正在制作一个AIOALL IN ONE)的软件包,它包含本指南所需要的所有支持软件。我们不特别强调只有包含在AIO软件包中的软件才能用于初始化安装。但我们已经发现一些新版本的软件之间存在兼容性问题从而导致安装失败。我们在这些新的程序之间变得“融洽”后也将继续发布新版本的AIO软件包。
 
强制的先决条件
w          只能使用包含在我们的AIO软件包中的程序
w          干净的Windows 2000/XP/Vista/2003安装
w          所有SP包和补丁均已安装
w          系统分区(比如C:\)最小5G
w          WinIDS分区(比如D:\10G以上
w          保证探测器拥有静态TCP/IP设置并且接入网络
w          WinIDS上解除所有防火墙应用程序
w          新的WinIDS探测器必须被允许接触所有网络通讯。这可以通过将探测器接入拥有端口映射功能的交换机上,hub上,或者是一个网络节点处
在开始安装前,我们强烈建议您使用MBSAMicrosoft Baseline Security Analyzer)解决所有的安全问题。
说明:本译文使用C盘作为WinIDS的分区.
安装基本的Windows入侵检测系统(WinIDS
预安装任务
提示:下列任务这些必须在安装WinIDS前完成
提示:
1.在一些情况下微软系统默认安装IIS。要保证在开始安装WinIDSIIS已被移除。
2.进入到C:\Windows\system32\drivers\etc下,适用写字板打开hosts文件,将本机ip  winids’加入到文件中(如下所示),保存退出,在命令行中使用’ping winids’测试。
3.将下载的AIO软件包解压缩
安装WinPcap
一路nextacceptfinish即可
安装和配置Snort
1.安装Snort程序到c:\snort
提示:在安装开始的第二个步“Install Options”处,由于Snort的所有Windows版本已经默认支持将日志记录到MysqlODBC数据库服务器,所以此处可以选择第一个单选按钮或者可以选择其它两个以添加额外的数据库支持。
2.将snortrules-snapshot-CURRENT.zip中的文件解压到c:\snort相应文件夹中。
3.进入c:\snort\etc下,使用写字板编辑snort.conf文件
提示:使用写字板中的“查找”寻找下列变量。
 
更改内容如下所示:
 
Original: var HOME_NET any
Change: var HOME_NET 192.168.1.0/24
 
Original: var EXTERNAL_NET any
Change: var EXTERNAL_NET !$HOME_NET
 
Original: var RULE_PATH ../rules
Change: var RULE_PATH c:\snort\rules
 
Original: # config detection: search-method lowmem
Change: config detection: search-method lowmem
 
Original: dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/
Change: dynamicpreprocessor directory c:\snort\lib\snort_dynamicpreprocessor
 
Original: dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so
Change: dynamicengine c:\ snort\lib\snort_dynamicengine\sf_engine.dll
 
提示:查找条目'preprocessor stream4_reassemble' (less the quotes), 并添加下一行到该条目之下。
preprocessor stream4_reassemble: both,ports 21 23 25 53 80 110 111 139 143 445 513 1433
 
提示:查找条目'Preprocessor sfportscan' (less the quotes)并改变下一行。
Original: sense_level { low }
Change: sense_level { low } \
 
在上一行下加入:
logfile { portscan.log }
 
提示:在'# output log_tcpdump: tcpdump.log' 下插入下一行:
output alert_fast: alert.ids
 
Original: # output database: log, mysql, user=root password=test dbname=db host=localhost
Change: output database: log, mysql, user=snort password=snort dbname=snort host=winids sensor_name=WinIDS
 
Original: include classification.config
Change: include c:\snort\etc\classification.config
 
Original: include reference.config
Change: include c: \snort\etc\reference.config
 
Original: # include threshold.conf
Change: include c:\snort\etc\threshold.conf
 
保存并退出。
 
 
 
测试Snort安装
 
打开命令行,在提示符下输入’cd c:\snort\bin’回车。
在命令提示符下输入’snort –W’,回车。
 
 
提示:当’-W’参数被使用的时候,Snort将探测多个接口,并且以数字(1-x)形式显示。Snort需要知道有哪些接口可以监控,如果没有发现网络接口,安装必须停止直到问题解决。
When the -W switch was used in the above run line, Snort may have detect multiple interfaces, and displayed then by numbers (1-x). Snort will need to know which interface to monitor. If No interface are found, the install MUST stop until the problem is corrected.
 
提示:下面的过程需要将WinIDS连接到网络,并且需要产生通讯。这通常可以通过Web浏览器打开一个远程站点来达成。
从命令行输入’snort –v –i1’,回车。
 
提示:这将以详细输出模式运行snort,并在接口1上探测通讯。
现在打开一个Web浏览器产生一些Web通讯。
提示:如果只有一个网卡,因为通讯的产生我们应该会在命令行窗口看到流经的数据统计,如果探测器上装有多个网卡并且在命行行窗口看不到数据统计,而且snort也在运行中,那么从任务管理器停止snort,然后改变’snort –v –iN’N的值再次运行snort,直到有通讯数据统计出现在命令行窗口中。
提示:N的值需要记住,以备配置文件中使用
命令行中使用’CTRL+C’或者通过任务管理器来结束Snort
安装Apache Web Server
我们这里对安装过程不做赘述,假设安装到了c:\apache目录下。
 
提示:安装好Apache后在 系统托盘处会出现一个Apache的图标,我们可以通过它来对Apache服务进行控制。
使用写字板打开c:\apache\conf\httpd.conf文件。
使用查找定位到配置文件’LoadModule ssl_module modules/mod_ssl.so’ 处,并在其下添加如下三行:
LoadModule php5_module c:\php\php5apache2_2.dll
AddType application/x-httpd-php .php
PHPIniDir c:\php
 
安装并配置PHP
phpwindows压缩文件包解压到c:\php下。
完成后:
1.  c:\php\libmysql.dll拷贝到c:\windows\system32下。
2.  使用c:\php\php.ini-dist拷贝生成c:\php\php.ini
使用写字板编辑c:\php\php.ini
所做更改如下所示:
 
Original: max_execution_time = 30
Change: max_execution_time = 60
 
Original: display_errors = On
Change: display_errors = Off
 
Original: ;include_path = ".;c:\php\includes"
Change: include_path = "d:\win-ids\php\pear"
 
Original: extension_dir = "./"
Change: extension_dir = "d:\win-ids\php\ext"
 
Original: ; extension=php_gd2.dll
Change: extension=php_gd2.dll
 
Original: ; extension=php_mysql.dll
Change: extension=php_mysql.dll
 
Original: ; session.save_path = "/tmp"
Change: session.save_path = "c:\windows\temp"
 
提示:保证’session.save_path=’变量指向正确并且存在的’windows\temp’或者’winnt\temp’目录。保证Everyone拥有上述目录的使用权限。
 
测试ApachePHP的安装
AIO包中的test.php拷贝到’c:\apache\htdocs’中,然后重起apache服务。
打开浏览器输入’[url]http://winids/test.php[/url]’
snort配置为系统服务
 
1.在命令行提示符下切换当前目录至’c:\snort\bin’下。
2.在命令行提示符下输入:’snort /SERVICE /INSTALL -c c:\snort\etc\snort.conf -l c:\snort\log -K  ascii -ix’,回车。(注意-ix中的x代表snort所探测的NIC的序号也就是前面所说的N值)
 
提示:我们应该看到服务添加成功的消息。
打开“开始/运行”对话框,输入’services.msc’,确定。
 
提示:如果snort服务已经成功安装,可以找到’Snort’条目,将其设置为’automatic’退出。
 
安装和配置MySQL
 
安装时提示:
1.选择“Standard Configuration”,复选“Include Bin Directory in Windows Path”,设置好root用户的密码。
2.重起计算机,打开命令行输入:’mysql -u root -p’,回车,输入密码,回车。                           
 
 
生成Snort数据库
 
Create the Snort Databases
 
mysql提示符下输入:
1.  create database snort;
2.  create database archive;
提示:如果现在’show databases;’,那么应该显示的数据库有 'information_schema', 'archive', 'mysql', and 'snort'.
Creating Snort Database Tables
1.在mysql提示符下输入’connect snort;’,回车。注意它将显示’Current databases:snort’并且返回mysql提示符号。
2.在mysql提示符下输入’source c:\snort\schemas\create_mysql’
3.在mysql提示符下输入’connect archive;’,回车。
4.在mysql提示符下输入’source c:\snort\schemas\create_mysql’
 
生成数据库访问和授权用户
Create Database Access and Authenticated Users
在命令行提示符号下输入:
1.         'set password for root@localhost = password('snort');' ,回车。
2.         ‘grant INSERT,SELECT,UPDATE on snort.* to snort@winids identified by 'snort'  
3.         'grant INSERT,SELECT,UPDATE,DELETE,CREATE on snort.* to base@winids identified by 'base'
4.         'grant INSERT,SELECT,UPDATE,DELETE,CREATE on archive.* to base@winids identified by 'base'
5.         'use mysql;'  
6.         'select * from user;'
 
使用写字板打开c:\mysql\mysql.ini更改其中配置如下所示:
 
Original: sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Change: sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
 
确认MySQLSnort正在运行
通过任务管理器中的“进程”选项卡确认其中列出的进程是否有”snort.exe””mysqld-nt.exe”
 
如果Snort或者MySQL的进程没有找到,可通过“事件查看器”查找原因。
 
安装ADODB
 
ADODB的压缩包解压到c:\adodb
 
安装和配置WinIDS BASE安全控制台
base的文件压缩包解压到 'c:\apache\htdocs' 目录下。
 
使用c:\apache\htdocs\base\base_conf.php.dist复制生成base_conf.php
 
c:\apache\htdocs\base下创建一个signatures文件夹,将c:\snort\doc\signatures中的文件复制到其中。
 
使用写字板打开c:\apache\htdocs\base\base.conf.php文件,更改如下所示:
 
Original: $BASE_urlpath = '';
Change: $BASE_urlpath = 'http://winids/base';
 
Original: $DBlib_path = '';
Change: $DBlib_path = 'c:\adodb';
 
Original: $DBtype = '?????';
Change: $DBtype = 'mysql';
 
Originals:
$alert_dbname = '?????';
$alert_host = '?????';
$alert_port = '?????';
$alert_user = '?????';
$alert_password = '?????';
 
Change to:
$alert_dbname = 'snort';
$alert_host = 'winids';
$alert_port = '';
$alert_user = 'base';
$alert_password = 'base';
 
Originals:
$archive_exists = 0; # Set this to 1 if you want access to the archive DB from BASE
$archive_dbname = '?????';
$archive_host = '?????';
$archive_port = '?????';
$archive_user = '?????';
$archive_password = '?????';
 
Change to:
$archive_exists = 1; # Set this to 1 if you want access to the archive DB from BASE
$archive_dbname = 'archive';
$archive_host = 'winids';
$archive_port = '';
$archive_user = 'base';
$archive_password = 'base';
 
Original: $portscan_file = '';
Change: $portscan_file = 'c:\snort\log\portscan.log';
 
提示: 必须严格按照单引号内的内容键入否则将导致BASE失败。
 
生成BASE数据库表
 
mysql命令行中输入:use snort
mysql命令行中输入:source c:\apache\htdocs\base\sql\create_base_tbls_mysql.sql
mysql命令行中输入:use archive
mysql命令行中输入:source c:\apache\htdocs\base\sql\create_base_tbls_mysql.sql
 
配置图形BASE
打开命令行窗口,切换到c:\php下。
在命令行窗口中输入:’go-pear’,两次回车
 
提示:忽略错误。
提示:现在安装需要包含的额外的PEAR包。
在命行令窗口输入: 'pear install Image_Color' ,回车
在命行令窗口输入: 'pear install Log'
在命行令窗口输入: 'pear install Numbers_Roman'
在命行令窗口输入: 'pear install [url]http://pear.php.net/get/Image_Canvas[/url]'
在命行令窗口输入:'pear install [url]http://pear.php.net/get/Numbers_Words-[/url]0.15.0'
在命行令窗口输入:'pear install [url]http://download.pear.php.net/package/Image_Graph-[/url]0.7.2.tgz' 测试PEAR安装, 在命行令窗口输入:'pear list' ,将显示PEAR包列表。
 
加固WinIDS BASE安全控制台
 
 
提示:这个过程将通过使用用户名和密码访问BASE控制台来加固BASE主文件夹。
c:\apache下创建一个passwords文件夹。
 
在命令行提示符下切换到c:\apache\bin
输入:’htpasswd –c c:\apache\passwords\passwords  base’,回车。
 
切换到’c:\apache\conf\’下,使用写字板打开httpd.conf文件。
改动如下:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
 
<Directory "d:\win-ids\apache\htdocs\base">
AuthType Basic
AuthName "WinIDS"
AuthUserFile d:\win-ids\apache\passwords\passwords
Require user base
</Directory>
 
Original: DirectoryIndex index.html index.html.var
Change: DirectoryIndex base_main.php
Original: Options Indexes FollowSymLinks
Change: Options -Indexes FollowSymLinks
重启WinIDS系统。
 
启动WinIDS BASE安全控制台
]
重启浏览器,然后输入[url]http://winids/base[/url]
 
 
提示:看到告警可能需要一段时间,而且BASE安全控制台会自动刷新。如果一段时间以后没有看到告警信息,就去我们的论坛寻求帮助或者手动生成告警信息。
 
祝贺您,已经建立了您的第一个Windows入侵检测系统,我们希望本指南能给您带来很大的帮助。