snort入侵防御检测系统部署教程(winxp)

2019年7月14日 2点热度 0条评论 来源: 司徒晟昱

简介

在1998年,Martin Roesch 用C语言开发了开放源代码(Open Source)的入侵检测系统Snort。直至今天,Snort已发展成为一个具有多平台(Multi-Platform)、实时(Real-Time)流量分析、网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS。Snort符合通用公共许可(GPL——GNU General Pubic License),在网上可以通过免费下载获得Snort,并且只需要几分钟就可以安装并开始使用。

配置环境

本教程使用的是windows xp+appserv(Apache+MySQL+PHP+phpmyadmin集成环境)+snort+acid+jpgraph+adodb+winpcap

由于不同版本的软件之间很可能会产生冲突,所以部分软件我们这里直接确定好要使用的版本号。

Snort: 版本snort-2.8.3.1.Installer.exe,可以从我的csdn上下载:https://download.csdn.net/download/qiuchi1975/11328797

Winpcap:版本3.1-WinPcap.exe,csdn下载地址:http://download.csdn.net/detail/thisnameokbu/8514263

AppServ:版本appserv-win32-2.5.10.exe,AppServ软件的安装可以代替Apache、PHP、MySQL、phpMyAdmin 4种软件各自的安装过程。CSDN下载地址:https://download.csdn.net/download/qiuchi1975/11328814

其他的软件大家可以网上搜索下载,可以直接使用!

安装snort

运行snort-2.8.3.1.Installer.exe

Snort 2.8.3.1 安装完成后,“rule”文件夹中缺少文件,高版本的Snort不带规则库是因为只向注册或付费用户提供,不在授权安装用户免费使用规则库。【解决方法:可以去Snort官网下载一部分免费规则,官网地址:www.snort.org或者百度搜索下载】

winpcap安装

这个软件安装直接一路下一步就可以!

AppServ安装

选择安装目录为:C:\AppServ

可以参考:http://jingyan.baidu.com/article/91f5db1bf72ac01c7f05e3a7.html
注意:】

(1)Administrator’s Email Address:输入管理员的邮箱地址。本机如果已经安装了IIS并且启动了Web Server,则会因为IIS Web Server默认在TCP 80 端口监听,和Apache Web Server发生冲突。可以修改Apache Web Server在其他端口监听,当然也可以禁用或者卸载IIS。此处将监听端口设置为8080,然后"Next"

(2)安装完成后,要将C:\AppServ\php5目录下的php.ini-dist文件改名为php.ini,并启动Apache和MySQL(默认自动启动)

AppServ安装成功后,在浏览器输入http://localhost:8080/,出现如下界面:

在浏览器地址栏中输入:http://localhost:8080/phpMyAdmin/index.php,出现如下界面:

用户名:root

密码:安装时你设定的密码

进入界面如下:

(3)配置AppServ

AppServ对于其phpMyAdmin组件给出的配置不一定适合我们,为此需要进行一些设置。

Step 1: 编辑Apache服务器配置文件

打开安装目录下Apache2.2\conf文件夹里的httpd.conf,需要检查ServerName localhost:8080 DocumentRoot “C:/AppServ/www”

Step 2: 编辑phpMyAdmin中的关键文件

打开C:\AppServ\www\phpMyAdmin\libraries目录下的config.default.php文件,推荐以下修改:

(a)设置phpmyadmin的URL,$cfg[‘PmaAbsoluteUri’] = ‘http://localhost:8080/phpMyAdmin/’;这里假设phpMyAdmin在默认站点的根目录下

(b)设置root密码,$cfg[‘blowfish_secret’] = ‘XXXX’; 其中XXXX为你设置的root密码。

©$cfg[‘DefaultLang’] = ‘zh-gb2312’;

(d)$cfg[‘DefaultCharset’] = ‘gb2312’;

(e) c f g [ ′ S e r v e r s ′ ] [ cfg['Servers'][ cfg[Servers][i][‘auth_type’] = ‘config’;

c f g [ ′ S e r v e r s ′ ] [ cfg['Servers'][ cfg[Servers][i][‘user’] = ‘root’; // MySQL user

c f g [ ′ S e r v e r s ′ ] [ cfg['Servers'][ cfg[Servers][i][‘password’] = ‘XXXX’;

Step 3: 配置PHP初始化文件php.ini

路径(可能是C:\WINDOWS\php.ini,也可能是C:\AppServ\php5\php.ini。如果C:\WINDOWS\下没有php.ini的话,就把C:\AppServ\php5下的php.ini复制一份过去)配置如下:

**;**open_basedir=C:\AppServ\www

magic_quotes_gpc=Off

file_uploads=Off

Step 4: 针对mysql进行。首先,建立Snort运行必需的Snort库和Snort_archive库:

打开cmd输入以下命令:

cd C:\AppServ\MySql\Bin

这是进入mysql目录下,然后输入


mysql -uroot -p

输入你设置的数据库密码

正确输入密码之后会进入mysql数据库里,可以看到光标前变成了:mysql>,然后开始创建数据库!


create database snort;

create database snort_archive;

Step 5: 使用C:\Snort\schemas目录下的create_mysql脚本建立Snort运行时必需的数据表:

这里说一下,我们之所以使用2.8.3的版本也是因为2.9级以上的snort不再提供create_mysql脚本,即使直接复制过去使用也会产生很多问题。

首先我们要退出mysql登陆状态,输入exit回车,再次进入C:\AppServ\MySQL\bin\目录下,我们接下来开始创建数据表:


 mysql -D snort -u root -p < C:\Snort\schemas\create_mysql

 mysql -D snort_archive -u root -p < C:\Snort\schemas\create_mysql

执行完create_mysql脚本后,用户可以通过在mysql提示符下运行sql语句use snort(use snort_archive),然后 show tables来验证配置的正确性。

Step 6: 必需在Apache服务器主机(暂定为localhost)上建立ACID和Snort用户,并为它们分配相关权限和访问密码,使ACID能正常访问后台数据库mysql中Snort相关的数据文件


mysql -uroot -p

输入你设置的数据库密码

登陆数据库,然后开始创建用户:

grant usage on . to “acid”@“localhost” identified by “acidtest”;

grant usage on . to “Snort”@“localhost” identified by “snorttest”;

grant usage on . to “snort”@“localhost” identified by “snorttest”;

grant select, insert, update, delete, create, alter on snort.* to “acid”@“localhost”;

grant select, insert on snort.* to “Snort”@“localhost”;

grant select, insert on snort.* to “snort”@“localhost”;

grant select, insert, update, delete, create, alter on snort_archive.* to “acid”@“localhost”;

set password for “snort”@“localhost”=password(‘snorttest’);

set password for “acid”@“localhost”=password(‘acidtest’);

通过上述命令,我们创建了建立acid和snort用户,密码分别是acidtest和snorttest,如果需要修改密码可以通过最后两行代码进行修改!

##安装Adodb、jpgraph和ACID

将adodb和jpgraph解压复制到C:\AppServ\php5目录下,分别生成C:\AppServ\php5\adodb和C:\AppServ\php5\jpgraph目录。将acid复制到C:\AppServ\www目录下生成C:\AppServ\www\acid。(注意文件夹一定不要带版本号!)

接下来修改C:\AppServ\www\acid中的acid_conf.php文件,如下:

$DBlib_path = “C:\AppServ\php5\adodb”;

$alert_dbname = “snort”;
$alert_host = “localhost”;
$alert_port = “”;
$alert_user = “acid”;
$alert_password = “XXXX”;

$archive_dbname = “snort_archive”;
$archive_host = “localhost”;
$archive_port = “”;
$archive_user = “acid”;
$archive_password = “XXXX”;

配置完成之后,打开浏览器,输入网址http://localhost:8080/acid/acid_db_setup.php

如果配置没有错误,会出现acid创建数据库界面,直接点击create database(应该是这个按键)

如果创建成功,进入mysql后use snort 后,show tables中就会出现几个acid开头的表

配置Snort

最后一步是编辑C:\Snort\etc\snort.conf。

首先修改监控的网段,如果你虚拟机ip是192.168.220.10,就将HOME_NET修改成

var HOME_NET 192.168.220.0/24

classification.config和reference.config是两个被主配置文件snort.conf引用的配置文件。classification.config文件包括了关于snort规则分类的信息,reference.config文件中罗列了一些关于报警信息的参考网站的URL,这些参考将在snort规则中引用。它们通常存放在于snort.conf相同的目录中。在snort.conf文件中将指定这些文件的目录。如果它们的存放位置发生了改变,也可以通过将主配置文件snort.conf中的相对路径改为绝对路径来进行调整:

include classification.config

include reference.config

改为绝对路径:

include C:\Snort\etc\classification.config

include C:\Snort\etc\reference.config

然后还需要修改引用路径:

dynamicpreprocessor directory C:\Snort\lib\snort_dynamicpreprocessor

dynamicengine C:\Snort\lib\snort_dynamicengine\sf_engine.dll

并设置Snort输出alert到mysql server:

output database: alert, MySql, host=localhost user=snort password=snort dbname=snort encoding=hex detail=full

然后将从网上下载的规则复制到snort/rules文件夹下!

开始测试

打开浏览器,输入网址http://localhost:8080/acid/acid_main.php

如果之前的配置没有出错,此时应该就能看见acid控制台图形界面了!

打开cmd,输入 cd C:\snort\bin,进入snort运行目录,输入命令


snort -c "C:\Snort\etc\snort.conf" -l "C:\Snort\log" -d -e -X -v -i 2

后面的2跟你用的第几个网卡有关 需要先将apache和mysql服务打开!

如果你配置的没有问题,此时snort就已经开始运行了!同时会生成日志文件,记录在C:\Snort\log下。

如果出现Not Using PCAP_FRAMES,可以不用管,直接ping一下虚拟机ip看cmd有没有抓到数据包。

然后在C:\Snort\rules目录下的local.rules中,添加自己的规则就可以在acid控制台看到监控信息了!

示例规则语句:


alert icmp any any -> $HOME_NET any (msg:"icmp Packet";sid:1234567890;rev:1;)

alert tcp any any -> $HOME_NET any  (msg:”Web Access”; sid:11111111;)

alert udp any any -> $HOME_NET any  (msg:”udp access”; sid:22222222;)

分别监控icmp、tcp、udp的数据包。

ping一下之后刷新acid控制台会发现有8个alert,抓到了ICMP的包。

至此,我们基本就大功告成了!

常见错误

1.进入http://localhost:8080/acid/acid_db_setup.php报错

可以根据报错类型进行相应的修改,如果是acid@localhost、snort@localhost等信息的报错,说明在acid和snort用户创建和赋权的时候出了错,可以重新做一遍,创建用户的时候一定记得区分大小写!上面楼主创建了snort和Snort两个用户,就是一开始的时候在这里出过错,索性直接创建了两个用户。

如果出现的是php不支持mysql之类的错误,那就是你php.ini那里有一点问题,没有将php对mysql支持语句前的注释去掉,这个百度就可以解决!

2.开启snort之后出现 Not Using PCAP_FRAMES

这个错误是因为dynamicpreprocessor directory C:\Snort\lib\snort_dynamicpreprocessor和dynamicengine C:\Snort\lib\snort_dynamicengine\sf_engine.dll这里的问题,不过影响不大,不影响使用!

3.开启snort之后报错,提示rules下某规则有问题

直接打开那个文件,将错误提示的行数的规则注释掉,然后再次运行,再次出现这个问题就再次注释,一直到能够正常运行或者不报rules出问题的错误为止!。

4.cmd中snort抓到了数据包,但是acid控制台刷新不显示

出现这个原因就是因为你没有设置相应的规则,在C:\Snort\rules目录下的local.rules中,添加自己的规则
,示例规则参考上面所述。

如果还有其他的错误,可以联系我询问

进阶功能

如果还想将snort运行的日志文件写入数据库,snort也是支持的,只需要到snort.conf文件里修改一下就可以,将

output database: log, mysql, user=snort password=snorttest dbname=snortlog host=localhost

output database: alert, mysql, user=snort password=snorttest dbname=snortalert host=localhost

这两行前的注释去掉,然后输入自己设置的数据库名密码等等。

上面是我已经自己创建了日志数据库snortlog和snortalert之后,再将相应的信息输入的。

创建方法跟上面创建snort数据库一样,都是先create snortlog,然后再用create_mysql脚本创建必备的表,再然后用grant语句将snortlog和snortalert的权限赋给snort用户和acid用户,使这两个用户能够正常访问日志数据库。

查看方法就是登进数据库之后,use snortlog,然后输入 select *from event;

就可以见到相应的日志记录数据了!

非常感谢thisnameokbu老哥所写的 snort在WinXP下的集成式安装, 对我的帮助巨大!本文所说的教程也大都使用了thisnameokbu老哥的教程 https://www.cnblogs.com/leaveyourownlife/p/4245022.html ,楼主也只是更加详细的描述了整个安装过程,并且解决了一些常见的错误。

转载自:https://www.situ9527.cn/index.php/archives/14/

    原文作者:司徒晟昱
    原文地址: https://blog.csdn.net/qiuchi1975/article/details/95919173
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。