一、背景

Snort是一款著名的开源入侵检测系统,有着悠久的历史和众多用户。我们通过部署Snort系统来监测异常网络活动并发出报警。Snort的跨平台性能很好,它支持的各种Linux/Unix和Windows操作系统。

在之前的文章中,发布了如何在CentOS 7 环境中安装Snort。本文介绍如何在Windows 10 环境中让可爱的小猪Snort顺利跑起来。

二、安装准备

今天的实验我们将实现一个“Snort+Barnyard2+MySQL+PulledPork”的一个复杂架构,这些软件包都是编译好的,并非源码安装。看上去比Linux下源码编译要容易。

程序安装路径:所有程序均安装在D:\winids\

以下是本文实验涉及到的软件(文章最后会提供网盘下载):

Snort 2.9.17、Snortrules-snapshot-2917.tar.gz、Npcap、Strawberry Perl、Barnyard-mysql-windows.zip、.Net framework 4.5.2、mysql-install-community-8.0.23、7zip。

这些软件安装包集中放到D:\temp目录等待安装使用。

图1 实验处理流程

下面的实验根据Snort数据处理流程进行,首先将镜像来的网络流量输入到IDS主机网卡,经过Snort处理之后将报警(Unified2格式)存储到/var/log/snort/目录,下一步由barnyard2来读取这个二进制报警,然后保存到MySQL。

三、安装步骤

步骤1:安装Snort

在安装Snort之前首先安装Npcap(Windows环境中抓包工具),接着安装Snort2.9.17。

除了安装路径设置为D:\winids要注意以外,其余过程都按照软件界面提示安装。首次进入Snort字符界面,我们以管理员身份打开命令行终端。

进入D:\winids执行Snort

d:\winids\Snort\bin>snort -?

我们可以看到版本号和其他帮助命令。下面接着查看有效网卡。

这里,显示序号为1所列出的行为网卡的描述信息。Snort需要在该接口上嗅探。下面我们让Snort以嗅探模式进行抓包。

大量信息不断向屏幕上方翻滚,直到我们按下“Ctrl+C”组合键。不用任何配置,是不是就让Snort跑起来了呢?

步骤2:安装Strawberry Perl

Strawberry Perl安装路径:d:\ winids\strawberry\安装完成后,下面我们需要执行一系列的命令来为配置IDS做准备。首先将7zip工具放入C盘Windows目录。​

将snortrules-snapshot-29170.tar压缩包内的文件,解压缩到d:\winids\snort\目录,再将压缩包内classification.confi、reference.confi、sid-msg.map、snort.conf、threshold.conf、Unicode.map复制到d:\winids\snort\etc

步骤3:配置Snort

因为原始snort.conf配置文件有规则均为启用状态,暂时全部注销,我们利用Perl来实现。

接着新建3个文件。

删除preproc_rules目录

为Snort添加一条测试规则。

接着在命令行终端下,打开记事本,编辑snort.conf

notepad d:\winids\snort\etc\snort.conf

需要编辑的关键点如下:

原始内容(104行): var RULE_PATH ../rules

修改为: var RULE_PATH d:\winids\snort\rules

原始内容(105): var SO_RULE_PATH ../so_rules

修改为: # var SO_RULE_PATH ../so_rules

原始内容(106): var PREPROC_RULE_PATH ../preproc_rules

修改为: # var PREPROC_RULE_PATH ../preproc_rules

原始内容(109): var WHITE_LIST_PATH ../rules

修改为: var WHITE_LIST_PATH d:\winids\snort\rules

原始内容(110): var BLACK_LIST_PATH ../rules

修改为: var BLACK_LIST_PATH d:\winids\snort\rules

原始内容(243): dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/

修改为: dynamicpreprocessor directory d:\winids\snort\lib\snort_dynamicpreprocessor

原始内容(246): dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so

修改为: dynamicengine d:\winids\snort\lib\snort_dynamicengine\sf_engine.dll

原始内容(322): decompress_swf { deflate lzma } \

修改为: decompress_swf { deflate } \

原始内容(412): # preprocessor sfportscan: proto { all } memcap { 10000000 } sense_level { low }

修改为: preprocessor sfportscan: proto { all } memcap { 10000000 } sense_level { low } logfile { portscan.log }

原始内容(515): # output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types

修改为: snort.log, limit 128

注:我们在Linux环境下配置snort 时,filename后面跟的是snort.log。而此处选用merged.log的意义是相同的。

原始内容(541): # include $RULE_PATH/local.rules

修改为: include $RULE_PATH/local.rules

同时在541行后添加下面3行内容

include $RULE_PATH/winids.rules

include $RULE_PATH/white_list.rules

include $RULE_PATH/black_list.rules

保存退出。

步骤4:测试Snort

第一条测试命令:

注:在以上命令行中“-i2”和“-i 2”效果相同。

在输出的信息中我们可以看到Snort已经加载了1条规则。特别强调-l参数后面跟的日志存储路径不能省略,否则无法启动Snort。

一旦 Snort 可以在 Windows (Linux)上无错误启动,下一步就是验证它是否正确查看流量并响应警报,下面利用这条规则来产生报警。

正式启用snort

现在屏幕弹出了报警,与此同时在D:\winids\Snort\log目录下生产了文件snort.log.1617001674。大家在实验时,不能完全照搬上面的命令,要根据当前系统中正确的网卡编号灵活确定。下面是检查端口扫描日志,这里就不深入展开了。

步骤5:安装MySQL 8

MySQL 8的下载路径:​ ​https://www.mysql.com/cn/downloads/​​

安装 .Net Framework 4.5.2

打开MySQL8 安装包将MySQL安装包(mysql-installer-community-8.0.23.0.msi)复制到d:\temp\目录中。准备安装MySQL8.0 MySQL安装程序“选择安装类型”窗口打开。左键单击选择“自定义”单选按钮,然后左键单击“下一步”。

MySQL安装程序的“选择产品和功能”窗口打开。“可用产品:”单击鼠标左键,展开“ MySQL Servers”,单击鼠标左键,展开“ MySQL Server”,单击鼠标左键,展开“ MySQL Servers 8.0”,单击鼠标左键,突出显示“ MySQL Server 8.0.xx-X64”,单击鼠标左键。

指向右边的绿色箭头,将“ MySql Server 8.0.23-X64”移动到“要安装的产品/功能:”部分。在“要安装的产品/功能:”下,单击鼠标左键,突出显示“ MySql Server 8.0.xx-X64”。在“取消”按钮的上方,单击“高级选项”,

然后打开“ MySQL Server 8.0.xx的高级选项”。我们需要修改程序安装目录和数据安装目录,这两个目录的路径原始路径如下:

原程序安装目录​

C:\ProgramData\MySQL\MySQL Server 8.0

原数据目录​

C:\ProgramData\MySQL\MySQL Server 8.0

无论程序目录还是数据目录都改为d:\winids\mysql

下一步继续。

确认安装内容无误之后,继续下一步。

执行安装程序

单击下一步继续。下面开始数据库配置环节在配置类型选项卡选择“Server Computer”。

通信端口保持默认。

继续安装,下面开始选择通过何种方式进行身份验证。选择Use Legacy Authentication Method,下一步继续

MySQL安装程序的“Accounts and Roles”窗口将打开。在“ MySQL根密码对话框中,键入“123456”。

MySQL安装程序的“ WindowsService”窗口打开。在“ Windows服务名称:”对话框中,键入“ MySQL”,然后单击“下一步”。

MySQL安装程序的“Apply Configuration”窗口打开。左键单击“执行”以允许成功配置MySQL Server,然后左键单击“完成”。MySQL安装程序的“产品配置”窗口打开。左键单击“下一步”。

MySQL安装程序的“安装完成”窗口打开。左键单击“完成”以完成MySQL数据库的安装。如果安装过程出现错误,大家可以点击Log选项卡来查看安装日志。以管理员身份打开CMD在提示符下,键入

copy d:\winids\mysql\lib\libmysql.dll c:\windows\system32

测试MySQL

配置MySQL8

首先修改my.ini配置文件

找到“ [mysqld]”行(76行)添加下面两行内容:

保存退出。

下面开始创建IDS数据库,数据库管理员密码为:123456

进入d:\windis\mysql\bin目录。

创建两个数据库分别为snort和archive。第一个用于存储报警信息,第二个用户数据归档库。

创建IDS数据库表

同样的方法操作archive数据库

接着执行下面命令

设置访问权限

步骤6:制作Barnyard2安装包

它从一个 IDS的网卡接收到流量开始,通过 Snort的处理,将警报(Unified2格式)存储在/var/log/snort/目录中,接下来barnyard2会将警报读取,并存储到 MySQL。

图1 Windows环境下的Snort IDS架构

从图1架构图可以发现Barnyard2相当于一个中转站,起到承上启下的作用。本实验中关键是怎样安装barnyard2,由于GitHub有源代码但没有Windows环境下安装包,无法在Windows环境运行,要实现上图所示的架构就必须准备Windows环境下的安装文件,这里有两种方式可以将Barnyard2源码包编译成Windows下的可执行程序:

MS VC编译环境,来输出可支持程序,需要调试代码,对初学者而言难度较大。

采用Cygwin Unix仿真器在Windows上编译Barnyard2。

在Windows平台通过模拟器来编译C源码包生成可执行程序,对初学者操作起来有些难度,本文推荐第2种方法,通过脚本将源码编译和调试,起到了“屏蔽”技术细节的作用,实现了将CentOS7环境中Snort IDS,迁移到Windows环境。下面,我们看一下操作步骤:

步骤1:设置环境变量

当cygwin安装完成后,需要设置系统环境变量(这里我们把cygwin安装到D盘)

添加路径:

D:\cygwin\bin;D:\winids\mysql\bin;D:\winids\snort\bin;D:\winids\Strawberry\perl\bin

准备Barnyard2源码(在这篇文章里提供地址下载:https://blog.51cto.com/chenguang/2505396)

步骤2:下载Cygwin安装包

下面,我们开始使用Cygwin模拟器,在Windows上自动编译Barnyard2。以管理员身份打开CMD窗口,进入D:\temp目录,并执行complile.bat批处理程序。

根据屏幕提示选择第一项“Compile Barnyard2 for MySQL”、“Start Compiling Barnyard2 for MySQL ”

这里需要注意,选择第一项,Cygwin开始从互联网安装下列组件:

unzip,zip,bison,automake,cmake,gcc-core,gcc-g++,libtool,make,libreadline-devel,zlib,zlib-devel,perl,patch,libgmp-devel,libedit-devel,libmariadb-devel,mariadb-common

选择带MySQL组件的Barnyard2,接下来,开始Cygwin程序安装。通过Compile.bat批处理文件来调用go-compile-m.sh脚本文件。编译完后将会生成可执行文件,并打包成压缩包。

经过一段时间编译,程序安装完成后在D盘根目录下产生名为barnyard2-x64-2.1.14-build337.zip的压缩包。

我们将barnyard2-mysql-x6402.1.14-build337压缩包放到D:\winids目录,我们在安装配置barnyard2时会用到。

步骤7:安装Barnyard2

数据库安装完成后开始安装barnyard2

下面开始配置

在终端命令行中执行命令:

Notepad d:\winids\barnyard2\etc\barnyard2.conf

原始行(27,28,29,30行):

config reference_file: /etc/snort/reference.config

config classification_file: /etc/snort/classification.config

config gen_file: /etc/snort/gen-msg.map

config sid_file: /etc/snort/sid-msg.map

改成如下内容:

技巧:由于barnyard2.1.4在启动过程中会调用sid-msg.map,时间会比较长,为了提高启动barnyard的速度,在调试过程中可以先将配置文件中第30行注销掉。待整个系统调试成功后,再重新加载这一行。

测试Barnyard2

当看到Closing connection to database “snort”说明了两个问题:

barnyard2.conf配置文件无错误

通过barnyard程序连接数据库成功。

在barnyard2.conf中我们可以知道,输入信息的配置是由“input unified2”决定。Unified2格式由Snort输出插件定义。

正式启动barnyard2

当出现Waiting for new data提示,说明barnyard2启动成功。

步骤8:安装pulledpork

前提条件:必须将Snort配置正确。才能继续安装pulledpork-8.0,它是一个Perl脚本,用来自动下载最新的Snort规则集。

配置Pulledpork操作如下:

创建目录temp

编辑pulledpork.conf

在Snort官网注册用户获取OINKCODE。

原始(19行):这一步非常重要!

rule_url=" target="_blank">https://www.snort.org/reg-rules/|snortrules-snapshot.tar.gz|<oinkcode>

修改为: rule_url=https://www.snort.org/reg-rules/|snortrules-snapshot.tar.gz|x

X=c65fc0ec980c4a16f51d0d33

配置文件修改完成,开始运行。

如果测试通过,则以下是确认Pulledpork配置文件已通过且规则已成功安装的确认。可查看D:\winids\Snort\log\ sid_changes.log了解更多详细信息。​

四、Snort+Barnyard2联合调试

以上我们对snort和barnyard2进行了安装配置,下面进行联合调试。

启动Snort

启动barnyard2

检查报警

在其他主机中PING这台机器,观察报警已验证存储到数据库。

如果收到类似上图中的结果,在收到报警的同时,数据库的Snort表中事件在不断增加,表示实验成功。下一节分享,如何实现报警可视化,例如通过Splunk或者采用Apache+PHP+BASE的方式。

观看操作演示:​ ​https://www.bilibili.com/video/BV1ZQ4y1S718/?spm_id_from=333.337.search-card.all.click​

Windows 10环境中安装Snort+Barnyard2+MySQL相关推荐

  1. windows 10环境下安装Tesseract-OCR与python集成

    前言 Tesseract是一个开源的ocr引擎,可以开箱即用,项目最初由惠普实验室支持,1996年被移植到Windows上,1998年进行了C++化.在2005年Tesseract由惠普公司宣布开源. ...

  2. 【Linux】在Windows 10环境下安装适用于 Linux 的子系统 (WSL安装指南)

    更多教程:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 安装适用于 Linux 的 Windows 子系统 (WSL) 时有两个 ...

  3. 在windows 10环境下安装 mujoco

    陆陆续续,花了一个星期,把各个模块翻了一遍,踩了无数坑.为了弄清楚中间的调用关系,连_msvccompiler.py,core.py这些都被我改过.最后,回归简单,按照正确的思路和方案安装,就没问题. ...

  4. SOLO在windows 10环境下安装

    文章目录 1. 总体环境要求 2. 安装步骤 2.1 基础软件安装 2.1.1 安装vs2017 2.1.2 安装显卡驱动(windows系统如自带,则不必安装) 2.1.3 安装cuda10 2.1 ...

  5. 详解如何在Windows 10系统中安装DeskScapes

    最近有Win10系统用户反映,在安装DeskScapes时发现步骤很多,不知道具体是要怎样安装,不敢随意操作,这令用户觉得非常苦恼.DeskScapes是一款动态壁纸的设置软件,安装确实是挺麻烦的,但 ...

  6. 在windows server2008中安装并管理mysql

    在windows server2008中安装并管理mysql 共分五步, 下载mysql 8.0.31 安装mysql 8.0.31 通过修改环境变量,实现本地管理 在navicat中管理mysql ...

  7. Snort:Barnyard2+MySQL+BASE 基于Ubuntu 14.04SNORT

    首先明确操作系统平台是Ubuntu 14.04 LTS 现在我们要在Ubuntu 14.04上部署snort NIDS(入侵检测系统). 需要这些东西: SNORT / Barnyard2 / Mys ...

  8. python27怎么安装thrift解压包_Python在Linux环境中安装Thrift

    1.文件下载:thrift-0.11.0.tar.gz 个人网盘下载:链接:https://pan.baidu.com/s/1MXgx8LuN4wk7ssVUD9Wzaw  提取码:xw85 2. 将 ...

  9. Windows 10 Technical Preview 安装体验及变化

    Windows 10 Technical  Preview  安装及最新变化 2014.10.1零晨,微软官方发布了windows 10技术预览版,下载体验一番,与大家分享一下使用心得. Window ...

最新文章

  1. matlab 求附近的根,求近似根的算法-matlab实现 | 学步园
  2. java jtable 监听事件_【Java】在JTable中设置鼠标监听器,点击操作对应数据
  3. Helm V3 新版本发布
  4. flutter 页面加载动画_Flutter撸一个加载动画
  5. gcc编译C++程序
  6. unicode转中文的工具
  7. Linux常用的网络命令笔记
  8. 写时复制就这么几行代码,还是不会?
  9. 嵌入式设计---(2)任务管理与调度
  10. STM32工作笔记0075---UCOSIII任务管理(下)
  11. 为什么使用3msip2协议_TCP协议专场
  12. 知识树 = 系统思维 + 外接大脑
  13. git(4)服务器上的 Git
  14. Serverless 极致弹性解构在线游戏行业痛点
  15. 最新智云全能API接口查询PHP源码V1.1
  16. React之npm发布Antd样式的组件
  17. 编程之美-1.3-烙饼排序问题
  18. Android实用视图动画及工具系列之三:表情加载动画和失败加载动画,人物加载动画
  19. xilinx SDK MLD文件
  20. RHEL扫描磁盘阵列

热门文章

  1. 解析XML文件(字符串)的两种方法-----SAXReader 与 DocumentHelper
  2. 不只是包子铺!巴比食品:重回高增长赛道,做中式面点第一品牌
  3. vue项目你一定会用到的性能优化!
  4. 聊一聊Spring中@Transactional注解及其失效的七种场景
  5. 《Android开发源码精编解析》最新PDF版开源,安卓工程师进阶实战
  6. 一文看懂 Theorem Theory Proposition Lemma Corollary Claim 的区别
  7. fiddle无法抓包小程序解答
  8. 国产化的接口测试、接口自动化测试工具apifox的介绍及使用
  9. 编译ASP.NET网站项目,以及部署网站到本地localhost服务器上实现独立运行
  10. 获取某个时间的当月起止时间