Su+ELK实现网络监测(3)——实际应用配置

news2024/10/5 16:29:02

Su+ELK实现网络监测(3)——实际应用配置

  • Suricata
    • 一、启动项
    • 二、规则使用
    • 三、解析eve.json文件
    • 四、主要目录及文件位置
  • ElasticSearch
    • 一、启动项
    • 二、主要目录及文件位置
  • Logstash
    • 一、启动项
    • 二、配置项
    • 三、主要目录及文件位置
  • kibana
    • 一、启动项
    • 二、可视化
    • 三、DSL语法、es索引别名
    • 四、查看索引、删除索引、删除索引模板
  • 其他
    • 一、生命周期
    • 二、任务调度
    • 三、补充

前两章节内容:
Su+ELK实现网络监测(1)——Suricata安装与配置
Su+ELK实现网络监测(2)——ELK安装与配置

在服务器上部署suricata+elk环境,交换机上配置好端口镜像(服务器网口连接交换机上的观察端口、交换机上的出入网口配置为镜像口)可实现对所有进出公司网络的数据流量进行实时监测

参考:https://support.huawei.com/enterprise/zh/doc/EDOC1000069579?section=z05d

  • 对suricata的suricata.yaml配置好需要监测的网段、数据文件保存的位置,并定期对规则集进行更新,且定期处理输出的eve.json文件;
  • 对elasticsearch的elasticsearch.yml配置好集群、节点、数据文件保存的位置;
  • 对logstash的logstash.conf配置好相应的input、filter、output原则(特别是fliter);
  • 在kibana上对索引进行可视化、设计看板等;

Suricata

一、启动项

默认启动、设置开机自启

  • 默认启动
/usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0	     # eth0为网卡的名称

若需要 停止suricata,运行如下命令即可:

ps -ef | grep suricata | grep -v grep		# 查看suricata的执行进程
kill -9 id					                # 杀死suricata的进程id
rm -f /var/run/suricata.pid                 # 文件锁,防止重复启动
  • 设置开机自启
[root@localhost ]# cd /usr/lib/systemd/system
[root@localhost /usr/lib/systemd/system]# vim suricata.service
[Unit]
Description=Suricata Intrusion Detection System
After=network.target
	
[Service]
Type=simple
ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0
PrivateTmp=true
	
[Install]
WantedBy=multi-user.target
[root@localhost /usr/lib/systemd/system]# systemctl daemon-reload	        # 重新加载刷新服务
[root@localhost /usr/lib/systemd/system]# systemctl enable suricata.service	# 设置开机自启
[root@localhost /usr/lib/systemd/system]# systemctl start suricata.service	# 开启
[root@localhost /usr/lib/systemd/system]# systemctl status suricata.service	# 查状态
[root@localhost /usr/lib/systemd/system]# systemctl stop suricata.service	# 关闭

查看系统服务命令:systemctl list-unit-files --type=service

二、规则使用

vim /etc/suricata/suricata.yaml
》设置规则目录:

default-rule-path: /var/lib/suricata/rules		# /var/lib/suricata/rules是放置定期更改的规则位置,可以每天下载/更新规则集
  rule-files					                # 用来选择启用哪些规则(默认只有suricata.rules文件)
  • 默认情况下,suricata-update管理规则会将多个规则集的每一条都写到 /var/lib/suricata/rules/ suricata.rules文件中

  • 如果要引入第三方规则,那就需要修改default-rule-path路径,并且在rule-files中注释掉suricata.rules
    而引入第三方规则,路径可以选择在 /usr/share/suricata/rules

    /usr/share/suricata/rules 是随 Suricata 包提供的只读规则,这些规则通常在解码数据包和协议时发出异常警报
    所以找到第三方规则下载拷贝到 /usr/share/suricata/rules 中,并在rule-files里进行添加相应规则名称即可
    如:

    • 方法一:wget -P /usr/share/suricata/rules/ https://rules.emergingthreats.net/open/suricata/rules/emerging-activex.rules
    • 方法二:wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
      tar -zxvf emerging.rules.tar.gz -C /usr/share/suricata/rules # 将其解压到/usr/share/suricata/rules
  • 注意!如果引入第三方规则或者还有其他规则需要更新,那么需要先执行suricata-update,再做测试suricata -T

  • 更改后的效果如图所示:

  • Emerging Threats维护的规则(常用此规则库)链接:Proofpoint Emerging Threats Rules
    ET规则集每条规则的作用解释,可参考:Suricata规则介绍、以及使用suricata-update做规则管理

三、解析eve.json文件

eve.json文件解析: event_type类型解析
官方eve.json文件解析文档: https://www.osgeo.cn/suricata/output/eve/eve-json-format.html#event-type-rdp
日志代码解析: https://zhuanlan.zhihu.com/p/344571466
在线json校验格式化工具: https://www.bejson.com/

四、主要目录及文件位置

目录:

/usr/bin/suricata		     # suricata启动路径
/etc/suricata/			     # 存放suricata执行和配置文件目录(classification.config  reference.config  suricata.yaml  threshold.config)
/usr/share/suricata/rules/ 	 # 是随 suricata 包提供的只读规则。这些规则通常在解码数据包和协议时发出异常警报
/var/lib/suricata/rules/	 # 规则文件存放目录,如果不做更改,后续suricata-update更新来的规则都存在这

文件:

/etc/suricata/suricata.yaml	 # suricata的配置文件,重中之重!
/var/data/suricata/fast.log	 # 简单告警日志文件,日志匹配的输出都在这里
/var/data/suricata/eve.json	 # 详细事件输出文件,json格式,该条信息包括数据包的时间戳、元组信息、对应的签名信息等

ElasticSearch

一、启动项

默认启动、设置开机自启

  • 默认启动
su es							  # 因为elasticsearch是不允许root用户启动的,所以需要切换用户
cd /usr/local/elasticsearch/bin
./elasticsearch					  # 非后台启动,主要用于调试
./elasticsearch -d				  # 后台启动
# 首次启动成功后,可以使用如下命令测试
curl http://192.168.234.10:9200
curl '192.168.234.10:9200/_cluster/health?pretty'		# 查看es健康状态
# 若需要 停止elasticSearch,运行如下命令即可:
ps -ef | grep elasticsearch | grep -v grep		# 方法一:查看elastic的执行进程
jps						                        # 方法二:查看java运行的程序(找到elasticsearch程序)
kill -9 id						                # 杀死elastic的进程id
  • 设置开机自启
    /etc/init.d/ 目录下创建一个名为es的文件,使用vim编辑器进行编辑,并添加以下内容:
    vim es
#!/bin/bash
#chkconfig: 345 63 37
#description: elasticsearch startup script
#processname: elasticsearch

ES_HOME=/usr/local/elasticsearch

case $1 in
  start)
    su - es -c "$ES_HOME/bin/elasticsearch -d -p pid"
    echo "elasticsearch is started"
    ;;
  stop)
    pid=`cat $ES_HOME/pid`
    kill -9 $pid
    echo "elasticsearch is stopped"
    ;;
  restart)
    pid=`cat $ES_HOME/pid`
    kill -9 $pid
    echo "elasticsearch is stopped"
    sleep 1
    su - es -c "$ES_HOME/bin/elasticsearch -d -p pid"
    echo "elasticsearch is started"
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac
exit 0

保存并退出,修改es文件的权限为可执行: chmod +x es
将es添加到系统启动项中: chkconfig --add es
启动时可以使用/etc/init.d/es start让其运行;当不小心或者系统原因被杀死进程后,可以使用 /etc/init.d/es restart 进行再次启动

在/etc/init.d/下配置服务开机自启,参考链接:
#chkconig的意思: https://blog.csdn.net/cbuy888/article/details/87190065
/etc/init.d/介绍: https://blog.csdn.net/liaowenxiong/article/details/117083906

二、主要目录及文件位置

目录:

/usr/local/elasticsearch/bin/	# elasticsearch启动路径
/var/data/es-data		   		# 数据存放目录
/var/data/es-log				# 日志存放目录

文件:

/usr/local/elasticsearch/config/elasticsearch.yml	# elasticsearch的配置文件

Logstash

一、启动项

默认启动、设置开机自启

  • 默认启动
cd /usr/local/logstash/bin/
./logstash -f ../config/logstash.conf
# 因为logstash由java编写的,若需要 停止logstash,运行如下命令即可:
jps					# 查看java运行的程序
kill id				# 找到logstash的进程id,并杀死

若执行时出现如下报错(表示之前运行的instance有缓存,需要更改data设置)

cd /usr/local/logstash/data
ls -la
rm -rf .lock

参考自:Logstash报错:Logstash could not be started because there is already another instance using the configured data directory

  • 设置开机自启
    /etc/init.d/ 目录下创建一个名为logstash的文件,使用vim编辑器进行编辑,并添加以下内容:
[root@localhost ~]# cd /etc/init.d
[root@localhost /etc/init.d]# vim logstash
#!/bin/sh
#chkconfig: 345 80 20
#description: logstash startup script
#processname: logstash
	
LOGSTASH_HOME=/usr/local/logstash
LOG_FILE=$LOGSTASH_HOME/logs/start.log
	
case $1 in
  start)
    echo "Starting logstash..."
    $LOGSTASH_HOME/bin/logstash -f $LOGSTASH_HOME/config/logstash.conf >> $LOG_FILE &
    ;;
  stop)
    echo "Stopping logstash..."
    kill `ps -ef | grep logstash | grep -v grep | awk '{print $2}'`
    ;;
  *)
    echo "Usage: $0 {start|stop}"
    ;;
esac
exit 0

保存并退出,修改logstash文件的权限为可执行: chmod +x
logstash 将logstash添加到系统启动项中: chkconfig--add logstash
启动时可以使用/etc/init.d/logstash start 让其运行;当不小心或者系统原因被杀死进程后,可以使用 /etc/init.d/logstash start 进行再次启动

二、配置项

将suricata入侵检测数据采集到es中,修改logstash中管道的规则(input、filter、output)
vim /usr/local/logstash/config/logstash.conf

修改如下配置:
参考:logstash.conf、 logstash.conf中关于filter的其他原则参考:logstash - 副本.conf

关于logstash.conf中input设置 参考该链接:https://blog.csdn.net/qq330983778/article/details/105644835
关于logstash.conf中input中的sincedb字段 参考该链接: https://blog.csdn.net/qq_39669058/article/details/86480578
官方配置说明文档: https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html

三、主要目录及文件位置

目录:

/usr/local/logstash/bin/		# logstash启动路径

文件:

/usr/local/logstash/config/logstash.conf	# logstash的配置文件,重中之重,特别重要!
/usr/local/logstash/config/logstash.yml		# logstash设置文件,用于控制logstash的执行过程

关于logstash.yml文件,可参考:https://blog.csdn.net/JineD/article/details/106642424

kibana

一、启动项

默认启动、设置开机自启

  • 默认启动
cd /usr/local/kibana/bin
./kibana --allow-root

浏览器访问该网址:192.168.234.10:5601 进入kibana工作台(若服务器有开启防火墙,需将5601端口加入防火墙中)

  • 设置开机自启
[root@localhost ]# cd /usr/lib/systemd/system
[root@localhost /usr/lib/systemd/system]# vim kibana.service
[Unit]
Description=kibana
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/kibana/bin/kibana --allow-root
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

[root@localhost /usr/lib/systemd/system]# systemctl daemon-reload
[root@localhost /usr/lib/systemd/system]# systemctl enable kibana.service
[root@localhost /usr/lib/systemd/system]# systemctl start kibana.service
[root@localhost /usr/lib/systemd/system]# systemctl status kibana.service

二、可视化

可视化看板导入
附件已导出的可视化模板:Kibana可视化看板文件

  1. 进入kibana工作台,找到已创建好的kibana索引模板,进去后找到其对应的url地址,”index_patterns/” 后面的id就是该索引模板的id;

  2. 在附件中找到模板(ndjson文件)打开并编辑,定位到references字段(一般在每条数据的末尾处),把其中的id值修改成第一步找到的索引模板id;
    如:“references”:[{“id”:“243ce1a0-d73d-11ed-****”,“name”:“kibanaSavedObjectMeta.searchSourceJSON.index”,“type”:“index-pattern”}]

  3. 进入kibana工作台,左边栏选择设置,找到kibana中的 “已保存对象“,点击右上角的 ”导入“即可。

三、DSL语法、es索引别名

参考附件: DSL语法、es索引别名的解释与使用
DSL查询与过滤: https://yiyige.blog.csdn.net/article/details/94875073
Es索引别名的含义与基本用法(es开源社区文档): https://blog.csdn.net/wlei0618/article/details/125363206
es索引别名的使用方法: https://cloud.tencent.com/developer/article/1531847

四、查看索引、删除索引、删除索引模板

查看接口名称(终端输入 或 kibana输入api)

curl '192.168.234.10/_cat/indices?v'
GET _cat/indices?v

获取指定索引详细信息(终端输入 或 kibana输入api)

curl -XGET '192.168.234.10:9200/suricata_logxx?pretty'	# 其中suricata_log xx表示索引名称 ,即output所指定的名称
GET suricata_logxx/_search
{
  "query": {
    "match_all": {}
  }
}

删除指定索引(终端输入 或 kibana输入api)

curl -XDELETE '192.168.234.10:9200/suricata_logxx'
DELETE /suricata_logxx

删除索引模式只能在kibana操作面板中找到对应的索引模式进行删除操作

其他

一、生命周期

可以解决单个索引中数据量过大的问题,根据需要可设置每条索引至多存在多少条数据、存放多少天等(以下api配置是在kibana的开发工具中输入的)
注意:先暂停logstash的启动,设置完生命周期后再启动!

配置信息:es生命周期

二、任务调度

1、生命周期更换索引名称(每日执行)
vim es_ilm.sh

#!/bin/bash
yesterday=$(date +%Y%m%d -d "yesterday")
today=$(date +%Y%m%d)

# 当过了第二天0时0分,将之前es生命周期配置好的索引及其索引别名进行替换
cmd1="curl -XPOST 'http://192.168.234.10:9200/_aliases' -H 'Content-Type: application/json' -d '{\"actions\": [{\"remove\": {\"index\": \"suricata_$yesterday*\",\"alias\": \"suricata_alias\"}},{\"add\": {\"index\": \"suricata_$yesterday*\",\"alias\": \"suricata_${yesterday}_alias\"}}]}'"

# 根据当天日期创建新的初始化索引信息,并指定为可写索引
cmd2="curl -XPUT 'http://192.168.234.10:9200/suricata_${today}-000001' -H 'Content-Type: application/json' -d'{\"aliases\":{\"suricata_alias\":{\"is_write_index\": true}}}'"

# 执行完上面的代码后,还需要再运行如下命令:
# 查看所有索引别名信息(api写法:GET _cat/aliases?v)
cmd3="curl -XGET 'http://192.168.234.10:9200/_cat/aliases?v'" 

# 查看当前索引别名的解释信息(api写法:GET /suricata_alias/_ilm/explain)
cmd4="curl -XGET 'http://192.168.234.10:9200/suricata_alias/_ilm/explain'"

# 逐条执行每个命令
eval "$cmd1";
eval "$cmd2";
eval "$cmd3";
eval "$cmd4"

crontab -e
0 0 * * * /root/es_ilm.sh

2、存储eve.json文件(每月执行)
mkdir /var/data/suricata/evefiles
vim su _month.sh

#!/bin/bash
month=$(date +%Y%m)
systemctl stop suricata.service;
mv /var/data/suricata/eve.json /var/data/suricata/evefiles/eve_${month}.json;
suricata-update;
systemctl start suricata.service;

crontab -e
59 23 28-31 * * /root/su_month.sh

3、定期删除过期的eve.json文件(每月执行)
vim del_evejson.sh

#!/bin/bash
current_time=$(date "+%Y-%m-%d %H:%M:%S")
# 计算3个月前的时间戳
three_months_ago=$(date -d "-3 months" +%s)

# 遍历文件夹中的文件
for file in /var/data/suricata/evefiles/eve_*.json
do
  # 获取文件的修改时间戳
  file_time=$(date -r $file +%s)
  # 判断文件是否是3个月前的文件
  if [ $file_time -lt $three_months_ago ]
  then
    # 删除文件
    rm -rf $file
    echo "$current_time Deleted $file"
  fi
done

crontab -e
0 1 1 * * /root/ del_evejson.sh

三、补充

  1. 解决es单机版索引状态显示为yellow:在生命周期的索引模板中添加如下两条参数即可
number_of_shards: 1				# 分片数
number_of_replicas: 0			# 副本数

参考链接:https://www.cnblogs.com/longweiqiang/p/13596795.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

公司没有一个会自动化测试的,果断离职了····

面试问到离职原因,我想这是很多面试者的痛,包括我自己,曾经也被离职原因所坑过。 面试回答离职原因简直特么就是巨坑! 话说最近我面试了个两三年经验的测试工程师,离职原因说出来就是砸自己的脚,真是感慨…

中间件(二)- Tomcat

中间件(二)- Tomcat 1. 什么是Tomcat?2. 安装tomcat(linux)2.1 下载2.2 安装2.3 配置环境变量并启动2.4 验证tomcat是否安装成功 1. 什么是Tomcat? Tomcat是一个开源、免费、轻量级的Web服务器。 Tomcat是Apache 软件基金会&…

XSS-labs-level1详解

访问题目url 我们分析一下代码层面: 接受名为“name”的GET参数并在页面上显示它。其中包含了一个对alert()的覆盖。当alert()被调用时,它将显示一个确认框提示,然后将页面重定向到“level2.php?keywordtest”的URL,这将把关键字…

Win10和Win11上设置VS(Visual Studio)默认以管理员权限权限启动设置方法

本次管理员权限启动 如果只需要当前启动为管理员权限,方法如下: 1、使用“开始”菜单 2、根据所使用的 Windows操作系统 版本,执行以下步骤之一: 在 Windows 10 中,打开“开始”菜单,然后滚动到 Visual S…

Mysql——SQL语言入门

1.创建数据库表 【1】创建数据库表t_student (1)创建数据库: (2)新建查询 (3)创建数据库表 ##单行注释 /* 多行注释 多行注释 *//* 建立一张用来存储学生信息的表 字段包含学号、姓名、性别、…

chatgpt赋能Python-python30_3__2

Python30-3**2 – 强大的Python解释器的介绍 Python30-32是一个开源的Python解释器,其名称表示30乘以3的平方,即2700,意味着它是Python 3的改进版本。Python30-32由一群志愿者开发,旨在提供一个高效、强大、易于使用的编程工具&a…

【ChatGPT】无需注册,无需科学上网,无需人工验证的速度超快的 ChatGPT

文章目录 一、ChatGPT介绍二、使用ChatGPT时经常遇到的一些问题三、一个让你呼吸顺畅的 ChatGPT 一、ChatGPT介绍 ChatGPT,全称聊天生成预训练转换器(英语:Chat Generative Pre-trained Transformer),是OpenAI开发的人…

【数学建模】矩形桌子能放平(初等模型)

把一把四只脚的椅子往不平的地面上一放,通常只有三只脚着地,放不稳,然而只要稍挪动几次,就可以四脚着地,放稳了。如何解释这种现象? 1 模型假设 椅子四条腿一样长,椅脚与地面接触可视为一个点&…

【MCS-51】定时器原理

时间是我们设计功能模块时一个十分重要的输入或者衡量指标,而51单片机中就为我们提供了两个时域上的模块:定时器和计数器。它们可以帮助我们实现一些非实时性的功能:延迟、计时以及定时等。其中51单片机有两个16位的模块:定时器0&…

SCI论文总重复率29%,单篇重复达到了4%,请问可以了吗?

👉🏻有小伙伴问:SCI论文查重29%,有一篇跟导师之前发表的论文重复达到了4%,请问可以吗?之前重复率是37%,改了好久才改下来,但是感觉29%…

劝你别去外包,干了三年,感觉废了一半....

先说一下自己的情况,大专生,19年通过校招进入杭州某个外包软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了3年的功…

UWB技术在人员管理上的应用

UWB技术在人员管理上的应用 UWB 技术是一种新型的无线通信技术,主要用于低功耗数据快速传输以及室内静止或移动物体/人的定位跟踪与导航。在人员管理方面,UWB 技术有着广泛的应用,可以实现对人员的实时定位管理、历史轨迹追溯、电子围栏、巡…

ipa文件怎么安装到iPhone手机上?

无需越狱帮你把ipa文件安装到苹果手机上 E86苹果签名简介:点击可查看 很多人都知道apk文件是安卓的app应用程序文件名,但有人知道苹果ios的app应用程序app是什么样的文件名吗? 是ipa文件。 ipa文件由三个部分组成,payload目录下…

基于短核苷酸序列频率构建细菌系统发育树

谷禾健康 目前,原核生物的系统发育分类依赖于16S rRNA基因序列,这种序列在细菌中广泛存在且高度保守,但即使16S rDNA测序的结果显示某些细菌间序列相似性≥99%,但它们仍然不能被归为同一物种。因为基因序列中的一些保守区域并不一…

Doxygen源码分析: 子目录简要介绍

2023-05-18 23:56:46 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 1. doxygen 版本2. doxygen 目录结构.git 目录.github 目录workflows/build_cmake.ymlworkflows/coverity.ymlworkflows/docer_publish.yml addon 目录doxmlparser 目录doxyap…

金币商城功能迭代. 使用版本号乐观锁解决数据的并发修改问题

前言. 公司的商城模块嵌在微信公众号里面, 商城里面除了少量的现金业务, 大头在金币业务里面, 商城本来就是用来增加客户粘度的, 金币是客户通过某些行为免费获得如注册, 绑定,推荐等 需求. 金币方面之前的设计: 1.金币只有一个流水表,消费为负,获取为正 2.并且…

常用的表格检测识别方法 - 表格区域检测方法(下)

——书接上文 Training 半监督网络的训练分两步进行:a)对标记数据独立训练学生模块,由教师模块生成伪标签;b)结合两个模块的训练,得到最终的预测结果。 伪标签框架 实验 数据集: TableBank是文档分析领域中用于表识别…

Beats:如何在 Docker 容器中运行 Filebeat

今天在这篇博客中,我们将学习如何在容器环境中运行 Filebeat。 为了快速了解 Filebeat 是做什么用的: Filebeat用于转发和集中日志数据它重量轻,小型化,使用的资源更少它作为代理安装在你的服务器上它监视来自指定位置的日志文件…

腾讯云EdgeOne为什么能让客户降本增效?

随着数字化时代的来临,各类线上互动场景不断出现,并成为人们日常工作生活中的一部分。然而,基于互联网提供线上娱乐、线上办公、线上购物等服务的企业,在复杂的全球网络环境下会遇到网络延迟不稳定的情况,海外环境更多…

QGIS安装与简单使用流程

QGIS工具是我们地图业务领域比用的工具之一,理论就先不介绍了,今天主要介绍安装使用等基本操作: 一、下载安装 1、官网下载 Download QGIS 显示页面: 可以选择不同版本。我们以3.28为例,点击进入: 点击…