Ubuntu 18.04上使用snort3搭建NIDS(三)| ELK可视化篇
为最近项目上要用到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可视化篇相关推荐
- Ubuntu 18.04上使用snort3搭建NIDS(二)| 配置篇
为最近项目上要用到snort3,但是找了很多博客都是snort2.9.x的安装与配置,所以只能靠着官网文档和自己的反复摸索来学习snort3相关的内容.后面将会把snort3相关的发一个系列的博客,这 ...
- 在Ubuntu 18.04上搭建SonarQube服务
在Ubuntu 18.04上搭建SonarQube服务 在Ubuntu 18.04上搭建SonarQube服务 安装MySQL 创建sonar数据库 安装JRE/JDK 安装SonarQube 1号坑 ...
- Ubuntu 18.04 安装 nginx 并搭建一个简单的网站
目录 一.安装 nginx 二.设置 nginx 服务器模块 三.总结 四.参考资料 尽你所学(采用 html.或 CSS.或 Javascript 等)完成一个静态网页,比如制作一个简单的个人介绍网 ...
- skype linux 安装,如何在Ubuntu 18.04上安装Skype
Skype是世界上最流行的通信应用程序之一,它使您可以拨打免费的在线音频和视频电话,以及可负担得起的拨打全球移动电话和固定电话的国际电话. Skype不是开源应用程序,也不包含在Ubuntu存储库中. ...
- Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试
Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装.部署和测试 1.环境安装 HyperLedger Fabric 1.2.0环境的安装推荐一篇博客:http ...
- 服务器接收消息写日志,在Ubuntu 18.04上配置Rsyslog集中式日志服务器的方法
本文介绍在Ubuntu 18.04操作系统上配置Rsyslog集中式日志服务器的方法. 前言 登录任何Linux系统对于分析和排除与系统和应用程序相关的任何问题至关重要,借助Graylog等工具(参考 ...
- 在Ubuntu 18.04上安装和使用Tesseract 4
量子指南 (QUANTRIUM GUIDES) Today, the extraction of information from scanned documents such as letters, ...
- ubuntu memcached php,如何在 Ubuntu 18.04 上安装 Memcached
Memcached 是一个免费的开源高性能内存中键值数据存储. 它最常用于通过从数据库调用的结果缓存各种对象来加速应用程序. 在本教程中,我们将介绍在 Ubuntu 18.04 上安装和配置最新版 M ...
- linux下如何启动vsftp服务,如何在Ubuntu 18.04上使用VSFTP快速设置FTP服务器
如果您需要配置一个FTP服务器快速启动运行,那么VSFTP的易用性是无与伦比的. 如果你想将应用程序迁移到最新版本Ubuntu Linux服务器中,并且需要快速启动并运行FTP服务器.如何操作?这实际 ...
最新文章
- Windows10+Anaconda3+Pycharm环境搭建
- gulp前端自动化相关文章收集
- [position]返回顶部
- golang.org/x/net包的安装方法
- Skywalking-06:OAL基础
- 苹果新Mac Pro生产线将从美国转至中国 会更便宜吗?
- hdu 6092 Rikka with Subset 01背包 思维
- 深度学习与人类语言处理-语音识别(part1)
- 第十章 提升论文的可读性 --《英语科技写作(文法与修辞原则)》by 方克涛
- 邮箱是互联网的个人中心
- UA OPTI512R 傅立叶光学导论13 傅立叶变换及其性质
- 中国海蜇产业发展现状及建议分析,辽宁省是我国最主要的养殖产地「图」
- python 设计单张扑克牌类Card 设计整副扑克牌类Cards
- Python面试题目:输入某年某月某日,判断这一天是这一年的第几天?
- 设置使用 CUDA/显卡 的编号
- 速速收藏——程序员接私活的七大平台
- html中字段间距代码,css调字体大小代码 css字与字之间的间距怎么调
- WPF入门第三篇 ControlTemplate、Trigger与Storyboard
- 8-1 用QPainter绘图(Painting with QPainter)
- 电子称DIY(贴应变片+写代码)