为最近项目上要用到snort3,但是找了很多博客都是snort2.9.x的安装与配置,所以只能靠着官网文档和自己的反复摸索来学习snort3相关的内容。后面将会把snort3相关的发一个系列的博客,这是第三篇,实现了snort3与ELK数据展示分析组件联动进行告警可视化。后续内容敬请期待,等我理清了思路就来~

往期回顾

Ubuntu 18.04上使用snort3搭建NIDS(一)| 安装篇
Ubuntu 18.04上使用snort3搭建NIDS(二)| 配置篇
在上一节中,经过配置,大概可以实现一个建议的网络入侵检测系统了,但是它对于检测到的潜在的攻击数据只是简单的进行记录、在输出的告警文件中提示。我们希望这个网络入侵检测系统可以有更为高效、清晰的展示功能,而ELK作为一款强大的数据分析展示组件,非常合适。所以我们要通过在服务器上部署ELK,来实现snort3告警数据可视化

服务器端ELK部署

前一阵阿里云搞活动,学生认证可以免费领半年的ECS,刚好现在用上。阿里云ECS提供了远程ssh登录的网页,但是感觉不是很舒服,所以我用的是XShell和Xftp,感觉用起来很方便,对于家庭和学校使用是免费的,在这里挂个官网链接,直接去下载就可以~
毕竟是免费的ECS,下载网速有限制,所以用ftp穿ELK组件就比较合适了。xftp和xshell使用是非常简单的,我就不过多展示了。ELK部署其实有很多大佬写的比较好的博客可以参考,我这里就简单写一下过程,以及这之中遇到的一些坑

部署Elasticsearch

首先要安装一下jdk1.8,安装前先要更新一下包列表,不然找不到

sudo apt update
sudo apt install openjdk-8-jre-headless

把Elasticsearch解压,然后进入config目录,修改配置文件
vim elasticsearch.yml 我下载的是7.6.2版本的,默认的配置文件其实已经写好了但是全部注释掉了,找到相应的行改一下就好

#------------- Node --------------
node.name = node-1
#------------ Network ------------
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
#----------- Discovery ----------
cluster.initial_master_nodes: ["node-1"]

改好之后保存,ELK有一个很奇葩的设定不能以root身份启动,所以需要新建一个用户

groupadd groupname
useradd username -g groupname -p password
su root
#切换到elasticsearch的父路径下
chown -R groupname:username elasticsearch-7.6.2
su username
cd elasticsearch-7.6.2/bin
./elasticsearch

这时Elasticsearch应该就可以启动了,可以通过服务器公网IP:9200在浏览器中访问
第一个坑
本来觉得设置好了之后就万事大吉了,但是Chrome提示说服务器拒绝了我们的访问请求。原因在于:阿里云ECS默认只允许ssh、ftp和icmp流量,我们需要到控制台开放相应的端口才可以。

我本着用哪个开哪个的原则只开放了9200(后面Kibana还要开放5601),如果嫌麻烦的话可以直接端口那里写**-1/-1开放全部端口**

至此ElasticSearch部署告一段落

部署Kibana

毕竟是同一个场出的东西,使用方法都差不多,解压后进入到config目录,然后修改kibana.yml文件

server.port : 5601
server.host : "0.0.0.0"
elasticsearch.hosts : ["http://0.0.0.0:9200"]

其他的都不用管,直接启动就行
第二个坑
和之前一样,我切换到了新建的用户上去启动,但是提示说权限不足,简单的解决方案是用root或者普通用户加sudo执行./kibana --allow-root

在上述工作都做好之后,满心期待打开5601端口,只看到一行小字

Kibana server is not ready yet

第三个坑
回到Xshell,发现了满屏红色,虽然是warning,然而它运行不了啊,和error也没啥区别

再一看Elasticsearch那边,疯狂的提示

no known master mode, scheduling a retry

网上搜了一下,大概问题是没有设置主节点,所以返回到elasticsearch.yml里面,加上了一行

node.master : true

再重新运行,问题解决。成功后的kibana看起来是这样的

本地配置snort

打开之前配置好的snort.lua 在最下面(约224行),会看到configure outputs,按照下面的改一下就可以了

-- 7 configure outputs
alert_csv=
{file = true,
}alert_json =
{file = true, limit = 5,fields = 'timestamp pkt_num pkt_gen pkt_len src_addr src_port dst_addr dst_port proto ttl tos service rule sid rev msg priority action',
}

这里的fields是输出告警文件中的字段,顺序可以自己改;limit的意义是如果输出的告警内容已经大于5MB了 就开始在新的文件中写入告警文件,也就是说每个告警文件最大为5MB
设置好之后运行一下试试看

snort -c LOCATION/snort.lua -l LOCATION/log/ -i NIC -s 65535 -k none -m 0x1b
字段 意义
-c LOCATION/snort/lua 指定snort使用的配置文件,LOCATION是snort安装位置
-l LOCATION/log/ 指定告警文件输出位置
-i NIC 指定要监听的网卡,NIC是网卡名
-s 65535 设置最大报文长度为65535 以免截断某些长报文
-k none 忽略校验和错误(若不设置,会自动drop校验和错误的数据包)
-m 0x1b 将输出文件的umask设为033

默认情况下snort的输出文件umask值为077,这样除了文件所有者之外其他用户无法读取,自然在后面用elk处理的时候会出现问题
所以改成033(000 011 011 也就是0x1b)

如果lua文件中没有写错的话,snort应该可以正常运行(如果提示有错的话,检查一下是不是json那里的字段名写错了)然后随便访问点什么东西(之前在第二篇中我们已经设立了一个对任意TCP流量都发出告警的规则)
按Ctrl+C退出,这个时候log文件夹中就可以看到alert_csv.txt和alert_json.txt文件

将数据发送到ELK服务器

配置Filebeat

之前写了很多,然后粘贴代码的时候卡住了,结果啥都没了又得重新写这段,心情就不是很美妙,可能会写的简略些
首先进入到filebeat的目录下,修改filebeat.yml文件,在input模块添加两个log类型,并将logstash output解除注释
(因为我们要用logstash对数据进行一些预处理再发上去,所以不用直接发到elasticsearch,上面elasticsearch outputs模块保持注释状态即可)

#============= Filebeat Inputs ==============
- type: logpaths:- /usr/local/etc/snort/log/alert_json.*fields:file_format: jsonsource: snort3enabled: true- type: logpaths:- /usr/local/etc/snort/log/alert_csv.*fields:file_format: csvsource: snort3enabled: true#============= Logstah Outputs ==============output.logstash:hosts: ["http://`publc_ip_addr`:5044"]

其他内容保持默认不用管就可以了,然后运行一下filebeat

./bin/filebeat -c filebeat.yml -e

如果没什么问题 应该会看到这样的界面

然后满屏的提示

配置Logstash

本来我想的是不用Logstash,直接用Filebeat将文件传到服务器上,但是

这谁顶得住啊,还是用logstash处理一下再发吧
与其他几个组件不同的是,logstash的配置工作大多在.conf文件中完成,在config文件夹中给出了一个conf的示例文件,复制一下再做些改动就成

cp logstash-sample.conf snort_alert.conf
vim snort_alert.conf
input {beats {port => 5044}
}
filter {if[fields][file_format] == "json" {json {source => "message"}}if[fields][file_format] == "csv" {csv {separator => ", "columns => ["time", "number", "proto", "pkt_gen", "pkt_len", "direction", "src_ap", "dst_ap", "rule", "action"]}}
}
output {if[fields][file_format] == "json" {elasticsearch {hosts => ["http://localhost:9200"] #再次提示我的logstash是放在接收端的index => "snort3_json"}}if[fields][file_format] == "csv" {elasticsearch {hosts => ["http://localhost:9200"] #如果放在发送端需要把localhost改为服务器ipindex => "snort3_csv"}}stdout{} #正常状态下logstash运行成功后不会出现新的提示,#不方便判断是否成功,加一个stdout会把他收到的东西显示在终端上#方便确定当前是否运行成功
}

保存好之后通过下面的命令来运行

./bin/logstash -f config/snort_alert.conf

启动成功后,在snort告警文件有变动之前,应该会一直显示为下图这样

发送测试数据

打开snort,继续用上文中的方式来产生一个告警文件,由于之前logstash上我们设置了回显,所以现在判断是否成功最简单的办法就是看logstash这边有没有出现大段大段的信息,像这样:

如果有,就差不多了,我们再来到ELK服务器这边,可以看到已经出现了相应的索引

Ubuntu 18.04上使用snort3搭建NIDS(三)| ELK可视化篇相关推荐

  1. Ubuntu 18.04上使用snort3搭建NIDS(二)| 配置篇

    为最近项目上要用到snort3,但是找了很多博客都是snort2.9.x的安装与配置,所以只能靠着官网文档和自己的反复摸索来学习snort3相关的内容.后面将会把snort3相关的发一个系列的博客,这 ...

  2. 在Ubuntu 18.04上搭建SonarQube服务

    在Ubuntu 18.04上搭建SonarQube服务 在Ubuntu 18.04上搭建SonarQube服务 安装MySQL 创建sonar数据库 安装JRE/JDK 安装SonarQube 1号坑 ...

  3. Ubuntu 18.04 安装 nginx 并搭建一个简单的网站

    目录 一.安装 nginx 二.设置 nginx 服务器模块 三.总结 四.参考资料 尽你所学(采用 html.或 CSS.或 Javascript 等)完成一个静态网页,比如制作一个简单的个人介绍网 ...

  4. skype linux 安装,如何在Ubuntu 18.04上安装Skype

    Skype是世界上最流行的通信应用程序之一,它使您可以拨打免费的在线音频和视频电话,以及可负担得起的拨打全球移动电话和固定电话的国际电话. Skype不是开源应用程序,也不包含在Ubuntu存储库中. ...

  5. Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试

    Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装.部署和测试 1.环境安装 HyperLedger Fabric 1.2.0环境的安装推荐一篇博客:http ...

  6. 服务器接收消息写日志,在Ubuntu 18.04上配置Rsyslog集中式日志服务器的方法

    本文介绍在Ubuntu 18.04操作系统上配置Rsyslog集中式日志服务器的方法. 前言 登录任何Linux系统对于分析和排除与系统和应用程序相关的任何问题至关重要,借助Graylog等工具(参考 ...

  7. 在Ubuntu 18.04上安装和使用Tesseract 4

    量子指南 (QUANTRIUM GUIDES) Today, the extraction of information from scanned documents such as letters, ...

  8. ubuntu memcached php,如何在 Ubuntu 18.04 上安装 Memcached

    Memcached 是一个免费的开源高性能内存中键值数据存储. 它最常用于通过从数据库调用的结果缓存各种对象来加速应用程序. 在本教程中,我们将介绍在 Ubuntu 18.04 上安装和配置最新版 M ...

  9. linux下如何启动vsftp服务,如何在Ubuntu 18.04上使用VSFTP快速设置FTP服务器

    如果您需要配置一个FTP服务器快速启动运行,那么VSFTP的易用性是无与伦比的. 如果你想将应用程序迁移到最新版本Ubuntu Linux服务器中,并且需要快速启动并运行FTP服务器.如何操作?这实际 ...

最新文章

  1. Windows10+Anaconda3+Pycharm环境搭建
  2. gulp前端自动化相关文章收集
  3. [position]返回顶部
  4. golang.org/x/net包的安装方法
  5. Skywalking-06:OAL基础
  6. 苹果新Mac Pro生产线将从美国转至中国 会更便宜吗?
  7. hdu 6092 Rikka with Subset 01背包 思维
  8. 深度学习与人类语言处理-语音识别(part1)
  9. 第十章 提升论文的可读性 --《英语科技写作(文法与修辞原则)》by 方克涛
  10. 邮箱是互联网的个人中心
  11. UA OPTI512R 傅立叶光学导论13 傅立叶变换及其性质
  12. 中国海蜇产业发展现状及建议分析,辽宁省是我国最主要的养殖产地「图」
  13. python 设计单张扑克牌类Card 设计整副扑克牌类Cards
  14. Python面试题目:输入某年某月某日,判断这一天是这一年的第几天?
  15. 设置使用 CUDA/显卡 的编号
  16. 速速收藏——程序员接私活的七大平台
  17. html中字段间距代码,css调字体大小代码 css字与字之间的间距怎么调
  18. WPF入门第三篇 ControlTemplate、Trigger与Storyboard
  19. 8-1 用QPainter绘图(Painting with QPainter)
  20. 电子称DIY(贴应变片+写代码)

热门文章

  1. 什么是制表符终止位?
  2. 如何鉴定电子合同的法律有效性?
  3. zblog php wordpress,zblogphp好用吗?个人站长使用zblog和wordpress对比后我的选择
  4. host 问题 和 证书问题
  5. es6之三个点(...) 扩展运算符数组和对象的使用场景及最常见的用法(霸霸看了都说好)
  6. 分布式系统核心理论之CAP、BASE理论
  7. uva 11300
  8. 社会工程学 | 白名单Msiexec执行payload方式!
  9. JD亿级流量电商平台商品模块业务与技术详解实战
  10. 【HMS Core】Health Kit关于获取历史数据问题