一、安装
概念
用snort软件打造入侵监测系统:
入侵监测系统和防火墙关系
总结:从概念上我们可以看出防火墙是针对黑客攻击的一种被动的防御,IDS则是主动出击寻找潜在的攻击者;防火墙相当于一个机构的门卫,收到各种限制和区域的影响,即凡是防火墙允许的行为都是合法的,而IDS则相当于巡逻兵,不受范围和限制的约束,这也造成了IDS存在误报和漏报的情况出现。
- IDS是继防火墙之后的又一道防线,防火墙是防御,IDS是主动检测,两者相结合有力的保证了内部系统的安全;
- IDS实时检测可以及时发现一些防火墙没有发现的入侵行为,发行入侵行为的规律,这样防火墙就可以将这些规律加入规则之中,提高防火墙的防护力度。
- IDS是继防火墙之后的又一道防线,防火墙是防御,IDS是主动检测,两者相结合有力的保证了内部系统的安全;
- IDS实时检测可以及时发现一些防火墙没有发现的入侵行为,发行入侵行为的规律,这样防火墙就可以将这些规律加入规则之中,提高防火墙的防护力度。
3,构建入侵监测系统
升级系统
下载snort
从源安装:
将源文件下载和保存在以下文件夹中:
在安装snprt之前,我们需要先安装Libpcap 和 DAQ
某些网卡具有可能影响Snort的功能。其中两个特征被命名为“大”
接收卸载”(lro)和“通用接收卸载”(gro)。启用这些功能后,网络
卡在被内核处理之前执行数据包重组。
默认情况下,Snort将截断大于默认snaplen 1518字节的数据包。此外,LRO和
GRO可能会导致基于流目标的重新组装出现问题。我们建议您关闭LRO和
格罗。在linux系统上,您可以运行:
安装libpcap
安装 DAQ
安装Snort:
二、配置
现在需要修改一些配置文件,从snort.org中下载规则,对snort做测试运行
首先,我们需要升级共享库
CentOS上的Snort安装在/usr/local/bin/Snort目录下,创建符号链接到/usr/sbin/snort。
是一种很好的做法
要验证snort的安装,请使用以下命令:
如果加载共享libdnet.1库时出错,请创建以下链接并重试
要在CentOS上安全地运行Snort而无需root访问,我们应该创建一个新的非特权用户和一个新的守护程序的用户组
然后创建文件夹结构以保持Snort配置,使用下面的命令。如果你安装了
使用yum的Snort这些目录应该已经在安装时添加,请检查以确保。
设置新目录的权限:
创建新的文件:
Pulled_Pork 是用perl编写的用于管理Snort规则集的工具。Pulled_Pork
的特点包括:
使用Oinkcode自动下载规则
下载新规则集之前的MD5验证
完全处理共享对象(SO)规则
生成so_rule规则存根文件
修改规则集状态(禁用规则等)
该项目由JJ Cummings负责
安装必要的软件包:
从git下载Pulledpork 并下载
要验证Pulledpork的安装,请使用以下命令:
运行这些命令以更改snort.conf上的规则路径,并生成一些文件:
然后对pulledWork配置文件进行如下更改:替换oinkcode
保存并运行这些文件:
运行 Pulledpork:
如果您得到(指定的Snort二进制文件不存在!
请更正该值或在puppedpork.conf中指定完整规则tarball名称!
在第2120行中 /usr/local/bin/puppedProk.pl)错误如下所示:
要使Pulledpork自动运行,请访问https://snort.org/oinkcodes 阅读说明书。
例如:(确保使用他们的命令)
三、配置网络和规则集
编辑snort.conf文件以修改几个参数:
如下改变参数:
在本教程中,我们使用ELK堆栈来存储和可视化snort日志文件夹中的警报和日志。为了这个,我们需要设置snort输出日志,如下所示:
最后,通过以下命令测试snort配置文件:
如果你得到成功的信息,一切都是正确的。
为了测试Snort,我们将规则添加到local。规则:
这些规则对发送到$HOME_ NET的所有icmp消息发出警报(snort警报结构可在snort.org中找到)
四、作为守护进程运行snort
要在CentOS上作为服务在后台运行snort,您应该将以下脚本复制到/etc/init.d/
然后
并将此脚本复制到该文件(替换接口名称):
如果使用yum安装Snort,则应该已经配置了启动脚本。启动服务为
如下所述。
如果我们使用systemctl status snortd.service,我们应该看到如下输出:
在/etc/sysconfig/snort文件中,我们可以确定snort如何启动和嗅探哪个接口,或者确定如何保存输出日志。如果我们将日志存储到“barnyard2”,我们需要注释这个文件中的一些变量
比如:
注释这些变量:
保存并退出。现在,snort已经安装好,可以在Nids模式下使用了。
五、通过邮件发送警报
要通过电子邮件发送警报,我们需要将snort配置为向rsyslog发送日志:
然后将rsyslog配置为将从snort接收到的日志存储到/var/log/alert.log:
现在安装swatch
为swatch的配置文件创建文件夹
现在我们需要配置swatch在taild日志文件中查找特定的单词
在本例中,我将swatch配置为查找包含“Priority:1”和“Priority:2”的警报
作为守护进程运行并使用新的配置文件
for run in stratup make swatch.sh and copy upper command into it and append ;
六、通过snort监视程序发送警报
如果您使用base,snort watcher可以查找base数据库以查找新警报并发送给他们您可以从github找到它:
https://github.com/miladstar77/Snort-Watcher
七、ELK Stack
我们可以使用ELK stack来存储和可视化警报,而不是base和banyard2。
Elasticsearch是一个基于Lucene的开源搜索引擎,用Java开发。它提供了一个
分布式多租户全文搜索引擎,带有HTTP仪表板web界面(Kibana)。这个
数据以JSON文档模式进行查询、检索和存储。Elasticsearch是一种可扩展的搜索
引擎,可用于搜索所有类型的文本文档,包括日志文件。Elasticsearch是“Elastic Stack”或ELK Stack的核心。
Logstash是一个用于管理事件和日志的开源工具。它为数据收集提供实时流水线。Logstash将收集您的日志数据,将数据转换为JSON文档,并将它们存储在Elasticsearch中。
Kibana是一个用于Elasticsearch的开源数据可视化工具。Kibana提供了一个漂亮的仪表板web界面。它允许您管理和可视化来自Elasticsearch的数据。它不仅漂亮,而且强大。
我们必须在另一个系统上安装ELK,或者如果我们想在snort系统上安装ELK,我们应该有8gbram。
首先下载java
举例说明:
在这一步,我们将下载和配置Elasticsearch,我们将从elastic.co提供的rpm包中安装Elasticsearch,并将其配置为在localhost上运行(通过无法从外面接触到以确保安装的安全性和可行性)。
配置elasticsearch
为Elasticsearch启用内存锁。这将禁用Elasticsearch的内存交换。
检查Elasticsearch是处于运行状态的:
下载和配置Kibana:
我们将用nginx web服务器安装和配置Kibana。Kibana将在本地主机IP上侦听
地址和Nginx充当Kibana应用程序的反向代理。
配置kibana:
八、安装Nginx和httpd工具包:
配置nginx:
然后创建访问Kibana的用户和密码:
现在我们需要在conf.d目录中创建一个新的虚拟主机配置文件。创建新文件
带vi的“kibana.conf”
对nginx进行测试并运行
安装和配置日志存储:
配置日志存储
通过 Logstash我们收集日志,然后过滤它们。我们从filebeat接收日志:
运行 logstash
安装并运行Filebeat:
我们可以通过filebeat将snort警报从日志文件发送到logstash。
如果有多个传感器,则必须在每个传感器上安装filebeat并向主系统发送警报。
如果你想要的发送日志到其他的系统,将"localhost:5044"改为"mainipaddress:5044"
运行filebeat:
打开你的网站浏览器,输入你的ip地址去看Kibana:
要从菜单中将snort索引添加到Kibana,请执行以下操作:
开放管理/索引模式
然后:创建索引模式
在索引模式中搜索:snort-*
然后将索引添加到kibana。如果没有看到索引,请返回并检查堆栈的安装。
索引添加到Kibana之后,您可以看到您的日志。
您可以在“可视化”菜单中创建图表并创建仪表板。
这是我的仪表盘。如果您有任何问题,您可以发送电子邮件到smr@gmail.com.