注:本实验已在w2k3sp1中实现,相关软件较大无法上传,有需要都请发邮件到
[email]mimemail@163.com[/email]
 
 
 
现在关于 Windows 上安装 Snort 的文档相当稀少,我们尽力做到使 Windows 用户的 Snort 新手在 Windows 中部署 Snort 环境时时减少“痛苦”,这是我们希望做到的.
 
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

WinIDS 以其安装的简便著称( -_- !)。在大多数环境下安装 Windows Instrusion Detection System Windows ***检测系统)是一个非常简单的过程,通常花费不到一个小时的时间来完成之。本文介绍使用世界知名的 SNORT ***检测引擎、 MySQL 数据库、 Apache Web 服务器和 BASE Basic Analysis and Security Engine Kevin Johnson )来部署一个 Windows ***检测系统的主控端或者单独的 Windows ***检测系统。

我们把所有相关需要的软件做成了一个AIO(即All IN ONE)软件包,下面是关于其中我们用到的主要软件包的描述。
Apache Web Server 这是主要的 Internet Web 站点的服务器软件,为我们的 BASE 安全控制台提供运行平台。

Snort Snort 是一个轻量的网络***检测系统,用于在 IP 网络上实施实时的通讯分析和包日志记录。这是我们用来在网络上收集信息的软件。

WinPcap: WinPcap  是由伯克利分组捕获库派生而来的分组捕获库,它是在 Windows  操作平台上来实现对底层包的截取过滤。 WinPcap  为用户级的数据包提供了 Windows  下的一个平台。 WinPcap   BPF  模型和  Libpcap  函数库在  Windows  平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库  Packet.dll  和一个高层的独立于系统的函数库  Libpcap  组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对  NDIS  中函数的调用为  Win95 Win98 WinNT 、和  Win2000  提供一类似于  UNIX  系统下  Berkeley Packet Filter  的捕获和发送原始数据包的能力。 Packet.dll  是对这个  BPF  驱动程序进行访问的  API  接口,同时它有一套符合  Libpcap  接口( UNIX  下的捕获函数库)的函数库。

MySQL Server MySQL 是一个基于 SQL 的应用于众多平台的数据库服务器,我们用它来存储 Snort 的告警信息。所有的来自 IDS 探测器的告警信息都被存储在我们的 MySQL 数据库中。

ADODB PHP 中一个对象导向的数据库封包链接库,它提供了共通的应用程序接口来跟所有支持的数据库沟通,简化了你的程序的数据库移植性操作。 ADODB Active Data Object DataBase 的缩写,目前支持 MySQL PostgreSQL Oracle Interbase Microsoft SQL Server Access FoxPro Sybase ODBC ADO

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

提示:到<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> 2007 3 5 为止,所有需要的和最新的文件已被包含进下面的 AIO Software Pak 中。

我们正在制作一个 AIO ALL 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上,或者是一个网络节点处

在开始安装前,我们强烈建议您使用MBSA Microsoft Baseline Security Analyzer )解决所有的安全问题。

说明:本译文使用C盘作为WinIDS的分区.
安装基本的Windows***检测系统(WinIDS

预安装任务

提示:下列任务这些必须在安装 WinIDS 前完成
提示:
1 .在一些情况下微软系统默认安装 IIS 。要保证在开始安装 WinIDS IIS 已被移除。
2 .进入到 C:\Windows\system32\drivers\etc 下,适用写字板打开 hosts 文件,将 本机 ip  winids’ 加入到文件中(如下所示),保存退出,在命令行中使用 ’ping winids’ 测试。
3 .将下载的 AIO 软件包解压缩
安装 WinPcap

一路 next accept finish 即可
安装和配置 Snort
1.安装 Snort 程序到 c:\snort
提示:在安装开始的第二个步“ Install Options ”处,由于 Snort 的所有 Windows 版本已经默认支持将日志记录到 Mysql ODBC 数据库服务器,所以此处可以选择第一个单选按钮或者可以选择其它两个以添加额外的数据库支持。
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

php windows 压缩文件包解压到 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 拥有上述目录的使用权限。

 

测试 Apache PHP 的安装

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 提示符号。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

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"

 

确认 MySQL Snort 正在运行

通过任务管理器中的“进程”选项卡确认其中列出的进程是否有 ”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 ***检测系统,我们希望本指南能给您带来很大的帮助。