本文介绍了如何在Windows系统中部署Snort入侵检测系统,包括选择Windows平台的优势、安装Snort的详细步骤、配置Snort+Barnyard2+BASE日志分析系统的方法,以及设置开机自启动等内容,旨在帮助初学者快速搭建Snort IDS平台。

1.平台选择

1.1操作界面

     新手通常对 Windows 系统更为熟悉,作为全球广泛使用的桌面操作系统,其具备直观的图形界面和便捷的操作流程。在 Windows 环境下,学习者能够充分利用已有的文件管理、软件安装等知识基础。例如,用户可以轻松地在资源管理器中定位软件安装文件,运用熟悉的操作习惯进行文件管理等。使得学习者在学习 Snort 过程中,可有效降低因操作系统不熟悉而带来的额外学习成本,将主要精力集中于 Snort 本身功能的深入理解与掌握。

1.2图形化工具支持

Windows 系统为 Snort 提供了多种配套的图形化工具,这些工具极大地便利了,新手对网络流量的直观理解和分析。以 Snort - GUI(图形用户界面)工具为例,允许用户在简洁易用的界面中实现对 Snort 服务的启动、停止操作,并能够便捷地查看规则、日志等关键信息。相较于 Linux 系统,尽管后者也存在图形化工具,但多数情况下,Snort 在 Linux 系统中的配置与管理依赖于命令行操作,对于新手而言,这种复杂性可能会提高学习门槛。

     以上这些工具,允许用户在简洁易用的界面中实现对 Snort 服务的启动、停止操作,并能够便捷地查看规则、日志等关键信息。相较于 Linux 系统,尽管后者也存在图形化工具,但多数情况下,Snort 在 Linux 系统中的配置与管理依赖于命令行操作,对于新手而言,这种复杂性可能会提高学习门槛。

1.3 资源获取与安装

     在 Windows 系统下,获取并安装 Snort 相对简单,从官方下载页面 https://snort.org/downloads 获取最新安装包。大家在购《Windows 10环境快速安装Snort可视化系统》课程后,通过网盘下载所有资源包,运行安装向导,按提示完成安装即可,无需手动输入复杂参数,这一过程对新手十分友好。但需注意:Windows 环境在安全性、吞吐量、内存占用、稳定性及配置灵活性方面存在明显局限。为深入掌握 Snort 并规避这些短板,作者专门开发了《手动构建 Snort 系统》课程,引导读者在 Linux 等更优平台上搭建高性能、高可靠的 Snort 环境。

2、 Windows 10安装Snort

    为了让初学者在Windows 10  64位系统环境下快速安装Snort系统,我们这里采用了批处理程序来实现。在进行实验时,请务必仔细核对实验环境和要求,以确保实验的顺利进行。

2.1实验环境要求

以下软件安装要求是笔者在长期工作实践中总结出的关键点,大家在实验前务必核对自己的实验环境是否满足这些要求。

1).宿主机(物理机)应具备至少4G内存和50G的剩余存储空间,建议使用8G内存配合SSD固态硬盘以获得更佳性能;

2).实验应在独立的专用实验局域网中进行;

3).每个虚拟机应配置一块虚拟网卡,并采用桥接模式与宿主机连接;

4).宿主机应通过有线网络与交换机连接,尽量避免使用Wi-Fi或热点方式联网;

5).确保Windows版本、Snort版本以及抓包工具npcap的版本位数保持一致;

例如,若操作系统安装的是Windows 10 64位版本,则系统中的Snort也应使用64位版本。在下载安装包时需特别注意,未明确标注64位的通常为32位安装包,而标注为x64的则为64位安装包,两者不可混用。具体区分方法如图1所示。

Snort应安装在D:\winids目录下。接下来,让我们通过一个实例来了解如何从程序名上区分32位和64位的安装包。

Windows 10 系统中部署Snort_Windows

图1 Snort 32/64位安装软件

在图1中,箭头所指的两个安装包均为64位安装包,其余为32位安装包,如果弄混淆了,安装不会报错,但运行Snort时会发生故障。

2.2 安装软件要求

软件需求涵盖以下6个关键环节:

  • 操作系统必须是Windows 10 专业版,并且需要全新安装(避免潜在的配置冲突)。硬盘应划分为两个分区,即C盘和D盘,其中系统应安装在C盘,并创建一个新用户账户名为Snort,登录用户名也应为Snort。请勿使用旧系统来替代实验环境;
  • 请勿启用防火墙和AntiVirus软件;
  • 请勿安装Microsoft IIS服务;
  • 对于浏览器的选择,建议使用谷歌浏览器进行Web配置;
  • 所有批处理程序需要以管理员权限执行;

2.3 BASE运行要求

BASE(Basic Analysis and Security Engine)是一套由PHP程序编写的Web应用程序,主要用来管理入侵检测系统所产生的日志,让管理者能够有效地利用此Web界面管理入侵检测系统所产生的事件。

BASE 用来查看Snort IDS告警的Web应用程序,该程序运行于PHP+MySQL+Apache环境,所以我们在Windows 10下搭建运行环境使用。

下面最小实验环境,仅需一台物理机,在这台宿主机内安装两台虚拟机,一台VM虚拟机安装Win10+安装Snort,用宿主机模拟Attack。

3.搭建Snort+Barnyard2+BASE日志分析系统

 3.1工作流程

Snort在进入IDS工作模式之前,首先要对snort.conf配置文件进行基础设置,对一些目录和规则输出插件等参数进行初始化配置,对于初学者暂时不必关注如何设置,只需要执行一条批处理程序就能完成任务,工作流程如图2所示。该流程图在实际工作中具有普遍性,不但适用于Windows环境中安装,也适用于其他操作系统环境中安装。

Windows 10 系统中部署Snort_数据库_02

图2 Snort IDS工作流程

Snort设置成功的标志是在Snort日志目录能够输出merged.log.timestamp报警文件,该文件即Snort的输出结果,又是Barnyard2的输入数据源,如果大家在实验过程中没有发现merged.log文件,需对之前的操作步骤进行核查。Barnyard2读取Snort产生的日志文件之后会转储至MySQL数据库,最后通过BASE程序读取数据库展示出来实现Snort报警可视化。

在介绍完IDS工作流程之后,接下来我们将开始安装系统。

3.2安装与设置

步骤1: 下载并安装素材包(初始化系统)

首先,扫描二维码下载素材包。随后,检查虚拟机的网卡连接模式,并确认磁盘分区D盘有足够的可用空间。将素材压缩包解压,并放置于D:\soft-install目录下。请注意,从步骤1至步骤13,所有必需的安装包和脚本均应从D:\soft-install目录中获取。

接下来,安装7z1900-x64和Notepad++程序,建议使用默认的安装路径。素材功能的安装详情请参见表1。

表1   安装素材清单(序号不代表安装顺序)

序号

名称

用途

官网地址

1

Npcap 1.6

抓包软件

 https://npcap.com/#download

2

Snort 2.9.19

Snort 64位安装包 

 https://www.snort.org/

3

Barnyard2-2.1.14

读取snort日志并存储到MySQL数据库

 https://github.com/firnsy/barnyard2

4

AppServ 8.6

AMP集成环境安装包

 https://www.appserv.org/

5

Adodb-5.20.20.zip

数据库接口文件

 https://adodb.org/

6

Notepad++

文本编辑器

 https://notepad-plus-plus.org/

7

7z1900-x64.exe

解压缩程序

 https://www.7-zip.org/

8

批处理文件

安装脚本(不能重复执行)

添加SNORT服务

自动运行barnyard2

9

Local.rules等配置文件

安装配置文件

10

Setup.exe

IDScenter安装文件

Windows 10以上系统,安装操作扫码学习视频:

Windows 10 系统中部署Snort_snort_03

步骤2:安装npcap.1.6.exe

Npcap为Windows下的一个抓包程序,目前最新版本为1.7,下载地址:https://npcap.com/#download,仅支持在Windows 7以上系统安装,具体安装过程按该程序提示安装即可。

步骤3:安装Snort 2.9.19

将Snort程序安装到D:\winids\。安装完成之后开始配置Snort。安装过程都是图形化提示,大家根据屏幕提示操作。当安装完成时,会在屏幕提示“Snort has successfully installed.”

步骤4:获取系统IP及监听网卡名称

以管理员身份打开命令提示符界面,获取主机IP地址执行以下命令。

c:\User\snort>ipconfig

获取当前主机网卡列表输入以下命令。

Windows 10 系统中部署Snort_snort_04

从“snort.exe -W”命令执行结果分析,我们需监听第一块网卡(序号为1),有可能大家在自己的实验环境中,输出结果和本书显示的不一致,例如有可能监听网卡序号为2,大家需要根据自己的实验环境来确定有效网卡的编号,这一步非常重要。

步骤5:修改snort.conf

用思维导图可以清晰标记出有哪些地方需要修改,如图3所示。

Windows 10 系统中部署Snort_数据库_05

打开新的命令行CMD控制台,进入D盘soft-install目录,输入下面的批处理命令。

D:\soft-install>2.bat   

请注意,2.bat是一个用于配置Snort的脚本,必须在安装Snort 2.9.19之后才能运行此批处理程序。在本实验中,所有的批处理文件都不应重复执行,也不应通过鼠标双击来启动。

步骤6:以IDS模式运行Snort

以管理员身份重新打开一个终端,并执行批处理文件3.bat。

E:\soft-install>3.bat

该命令执行完之后,见到以下输出信息,表示该指令执行成功。

Windows 10 系统中部署Snort_snort_06

与此同时,当进入D:\winids\snort\log目录时,发现新增了三个文件:merged.log.1656055015、portscan和alert.ids。其中,merged.log是二进制格式的文件,而portscan和alert.ids则是文本格式。alert.ids文件可以被第三方程序(例如Splunk)调用以进行分析。随后,在Attack 上执行了ping命令,对Snort主机进行了ICMP flood测试。

备注:如果在此步骤中未能接收到报警,请确认系统中配置的监听网卡编号是否正确。

3.3安装AMP集成环境

AMP(Apache、MySQL、PHP)最初是为Linux环境设计的程序,现已成功移植到Windows平台。在当前阶段,读者不必深入了解AMP的技术细节,只需按照以下步骤操作,即可轻松完成安装,实现“即插即用”的便捷体验。

步骤7:安装Apache+PHP+MySQL集成环境

为运行BASE程序,我们首先安装appserv-win32-8.6.0文件。安装路径为D:\winids\,安装组件保持默认选项。数据库密码输入“12345678”,如图4所示。

Windows 10 系统中部署Snort_snort_07

图4 设置数据库密码

安装指南与注意事项:

  • 自动服务启动:安装程序完成后,Apache和MySQL服务将自动启动。请确保您已经记录并安全存储了root用户的密码,以防止未来访问权限的问题。
  • 版本兼容性:请注意,appserv-win32-8.6.0版本特别适合搭建Snort+BASE实验环境。如果您选择使用更高版本的appserv-win32,可能会遇到BASE程序无法正常运行的问题。
  • 替代方案推荐:phpStudy2018(phpStudy2014同样适用)提供了与appserver相似的功能,集成了最新版的Apache、PHP、MySQL、phpMyAdmin和ZendOptimizer。这个软件包无需额外配置,即可直接使用,为您提供了一个便捷且实用的PHP集成开发环境。

3.4 自动安装脚本

    新手在初次接触Snort IDS配置时,往往容易混淆配置文件和脚本文件,导致调试时出现故障。本节将介绍一个自动安装脚本,它能够将复杂的调试过程变得更加精确和高效。需要注意的是,以下介绍的所有批处理程序,都必须以系统管理员权限执行。

安装AppServ完成后,您需要打开一个新的终端窗口,导航至安装素材目录d:\soft-install,并运行核心批处理文件4.password=1-8.bat。在执行脚本的过程中,系统会提示您输入密码,此时请输入在数据库设置步骤中设定的root密码“12345678”。

注意:出于实验的便捷性考虑,此处root密码设置为简单密码。然而,在实际的网络测试环境中,强烈建议使用更为复杂的密码以增强安全性。

Windows 10 系统中部署Snort_数据库_08

接着,显示更换PHP版本的提示,我们选择“5) PHP 5.6”。

Windows 10 系统中部署Snort_Windows_09

系统会切换当前PHP版本为5.6。接下来,脚本会启动Barnyard2.1.14连接程序。

Windows 10 系统中部署Snort_snort_10

当见到以上提示“database:Closing connection to database “snort”后表示脚本执行成功。此时我们可以继续以下步骤。

注意:这个批处理执行完成之后BASE 站点开始初始化设置,如图5所示。

Windows 10 系统中部署Snort_Windows_11

图 5

后续只需依照页面提示进行简易设置,即可启用BASE。

步骤9:启动Barnyard2

要启动Barnyard程序,我们需要打开一个新的终端窗口,并切换到D:\soft-install\目录下执行批处理文件5.barnyard2.bat。此时,屏幕上会弹出以下提示。

Windows 10 系统中部署Snort_数据库_12

如观察到上述信息,表示数据库已成功接收到来自Snort的报警记录。

步骤10:查看数据库报警记录

请进入d:\soft-install目录,并执行批处理文件6.mysql-event.bat。

脚本会提示您输入密码,密码为123456。当您看到如下提示时,意味着Snort、Barnyard2与MySQL组合架构的系统联调已经成功。如果输出结果为0,请终止后续实验,并从步骤2开始重新检查。

Windows 10 系统中部署Snort_Windows_13

步骤11:检查Apache和MySQL数据库的运行状态

在Windows 10 主机中打开浏览器输入网址: http://127.0.0.1/ 如图6所示。

Windows 10 系统中部署Snort_Windows_14

图6 Appserv安装成功界面

见到图6中显示的“Now you running on PHP 5.6.30”表示PHP切换正常。为了查看MySQL数据库,我们打开phpMyAdmin工具,在浏览器里输入网址 http://127.0.0.1/phpmyadmin/,验证对话框中用户名root,密码为:12345678如图7所示。

Windows 10 系统中部署Snort_数据库_15

图7  phpMyAdmin登录界面

在左边菜单中找到snort数据库,event表,如图8所示。

Windows 10 系统中部署Snort_数据库_16

图8 查看event表

3.5安装和设置BASE

BASE,即Basic Analysis and Security Engine的缩写,代表基础的分析与安全引擎,是一个用于浏览Snort IDS告警的Web应用程序。在Windows系统中配置好AMP集成环境后,接下来我们只需初始化BASE,便能开始使用。

步骤13:初始化BASE

在执行了上述步骤后,正确运行了4.password1-8.bat程序,接着在浏览器中输入网址 http://127.0.0.1/base/,即可显示出BASE的配置界面,如图9所示。

Windows 10 系统中部署Snort_Windows_17

图9 设置BASE

该步骤中系统会调用BASE源码包中sql目录下create_base_tbls_mysql.sql文件(文件注释见附件),将它导入snort数据库snort表。

此时,点击Create BASE AG按钮后,显示界面如图2-10所示。

Tips:该步骤中系统会调用BASE源码包中sql目录下create_base_tbls_mysql.sql文件(文件注释见附件),将它导入snort数据库snort表。

SHELL操作命令:

/usr/bin/mysql -u root -p"$myrootpass" < /var/www/htdocs/base/sql/create_base_tbls_mysql.sql snort
  • 1.

类比命令:

/usr/bin/mysql --user=root --password=123456 < /usr/local/src/barnyard2-2-1.14/schemas/create_mysql snort
  • 1.

Windows 10 系统中部署Snort_snort_18

图10 配置BASE

此时,点击Main page按钮完成设置之后,系统显示BASE正常工作界面如图2-11所示。

Windows 10 系统中部署Snort_数据库_19

步骤12: 安装PEAR绘图功能

为了使BASE具备可视化功能,您需要安装PEAR组件(一个开源绘图程序)。请以系统管理员权限打开一个新的终端窗口,导航至D:\soft-install\pear-install目录,并执行以下命令:

D:\soft-install\pear-install>php go-pear.phar

所有提示都保持默认。

Windows 10 系统中部署Snort_Windows_20

在进入目录d:\winids\AppServ\php5执行下列命令

pear install d:\soft-install\pear-install\Numbers_Roman-1.0.2.tgz

pear install d:\soft-install\pear-install\Image_Color-1.0.4.tgz

pear install d:\soft-install\pear-install\Image_Canvas-0.3.5.tgz

pear install d:\soft-install\pear-install\Image_Graph-0.8.0.tgz

见到如下提示信息表示安装成功。

Windows 10 系统中部署Snort_snort_21

PEAR组件安装完成之后,必须重启Apache服务,添加的PEAR画图组件才能生效。最后打开Web UI界面,点击Graph Alert Data按钮。图12所示。

Windows 10 系统中部署Snort_snort_22

图12 启动Graph Alert

在弹出界面中依次选择数据类型、显示大小,以及开始和结束时间,参考效果如图13所示。

Windows 10 系统中部署Snort_Windows_23

图13

到此,BASE的可视化报警模块安装成功,如果没有看到显示的图像可以检测PEAR是否安装成功。

3.6 设置开机启动

我们已经配置了继承环境,包括Apache、PHP和MySQL,这些服务在开机时能够自动启动。然而,Snort和Barnyard2这两个程序需要手动启动。如果遇到意外关机,重新启动这些程序可能会比较繁琐。那么,如何设置系统以便在开机时自动运行Snort和Barnyard2呢?为了达到这个目的,我们需要进行以下配置。

步骤14:设置Snort开机自启动

进入命令行控制台,执行以下命令:

C:>cd D:\soft-install\add-service

D:>snort –W 

再次确认监听网卡编号,修改snort-service批处理文件中有关监听网卡的字段,脚本内容如图14所示。

Windows 10 系统中部署Snort_Windows_24

图14 Snort服务器脚本

此处的“-i2”参数,需要根据当前实验系统的具体数值进行填写。接下来,我们将检查本地系统服务的状态,以验证Snort服务是否正在运行,如图15所示。若需手动启动服务,应点击并将其设置为自动启动。

Windows 10 系统中部署Snort_Windows_25

图15  查看Snort服务

步骤15:设置Barnyard2开机启动

设置Barnyard2开机启动的方法和Snort,略有不同,我们进入D:\soft-install\add-service>目录执行文件auto-local-barnyard2.reg,注册表文件,在弹出对话框中,点击Y,见到成功添加注册表的提示表示此次操作成功,如图16所示。

Windows 10 系统中部署Snort_snort_26

图16 导入barnyard启动脚本

接着我们需要重启系统来验证是否满足要求,我们打开Windows任务管理器,如图17,此时发现barnyard已经自动运行。

Windows 10 系统中部署Snort_snort_27

图17 查看barnyard2进程

接下来,我们打开浏览器并输入BASE的访问地址,以验证是否能继续接收到安全事件。如果未能收到新的报警,我们需要检查snort服务是否已自动启动,以及barnyard2进程是否正在运行。

安装总结

      对于新手而言,通过上述步骤中所提及的批处理文件已在VMware虚拟机中成功安装并进行了测试,基本没有难度,主要获取资源包后,按流程操作即可,不过有两个关键点还是需要各位留意。

4.1关于网卡选择

   若在物理机上进行实验,需查明机器的监听网卡,即参照步骤4中介绍的获取当前系统IP地址及监听网卡名称的方法。在掌握IP地址和监听网卡信息后,必须调整批处理文件中“-i”参数后所跟的数字,以确保批处理文件能正确运行。图18展示了在Windows 2012 Server物理机上安装Snort的截图。

Windows 10 系统中部署Snort_snort_28

图18 显示系统当前网卡列表

可以看,出监听的网卡显示“6 Realtek PCIe GBE Family Controler”。

我们打开脚本3.bat,将下列命令进行适当修改:

原始配置:snort -c d:\winids\Snort\etc\snort.conf -l d:\winids\Snort\log -i 1

修改为:snort -c d:\winids\Snort\etc\snort.conf -l d:\winids\Snort\log -i 6

修改完成后保存退出3.bat脚本。也就是说如果大家如果直接将批处理不加修改,用到你的当前系统,有可能导致Snort因找错网卡,无法得到报警。

4.2 Snort的报警目录

所有Snort报警数据均存储于snort的日志目录中。该目录通常被称为Spool目录,其中包含的文件被称为Spool文件。这些文件主要分为两类:一类是文本格式的报警文件,它们可以使用记事本等文本编辑工具直接打开;另一类是二进制格式的报警文件,它们以“报警文件名_时间戳”的形式存在,无法直接用常规编辑器打开。以Windows系统下的Snort为例:

当Barnyard2启动成功会在命令提示符后Waiting for new data,如果接收到新报警会不断从光标处弹出,正常启动的状态如图19所示:(全文内容出自李晨光博客  https://blog.51cto.com/chenguang/ )

Windows 10 系统中部署Snort_数据库_29