注:本实验已在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上,或者是一个网络节点处。
说明:本译文使用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
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
***检测系统,我们希望本指南能给您带来很大的帮助。
转载于:https://blog.51cto.com/donet/75557