使用elasticsearch保存h3c防火墙的nat日志
目标
- 众所周知,NAT日志是校园网日志重要的一个部分
- 由于出口绝大多数高校都是NAT,那么作为日志留存,我们就必须能够记录下具体的端口号、公网IP等。
- 传统方式如果用纯文本保存nat日志的话,量级会非常大,搜索难度非常之高,使用es来保存则可以很快的进行搜索
- 结合es的冷、温、热机制,也可以很好地满足定期删除的效果
- 同时,kibana的可视化效果也很好,适合做数据分析
方式
搭建ELK集群
这个不多说了,后面有空详细写。我们的流程是:H3C防火墙(F5030D/F5010)输出syslog->Logstash->Elasticsearch
防火墙配置部分
H3C的NAT444日志分为中国电信、中国联通、中国移动以及H3C等几种格式。我们以中国电信为例,如下:
详细说明可以看:http://www.h3c.com/cn/d_202110/1474391_30005_0.htm
大概的格式如下:
<134> 1 2021 Dec 15 07:33:47 172.1.1.1 F5030_D - NAT444:sessionbasedA [17 172.16.1.1 - 218.2.135.1 47641 38104 -]
观察上面,我们知道:
- 172.1.1.1是F5030D的接口地址
- 172.16.1.1:47461是内网IP和端口
- 218.2.135.1:38104是外网IP和端口
那么,我们首先将日志以syslog形式转发给Logstash
H3C防火墙的配置
- 首先到
系统设置
,NAT日志
中,选择输出快速日志
,这样就可以在快速日志中比较方便的编辑了。 - 来到
基本配置
,快速日志
,新建一个日志,将中国电信日志输出给日志服务器的560端口。 - 众所周知,syslog的端口是udp514,注一开始我也很头疼如何在一个UDP 514端口上区分多个设备传来的日志?后来才发现,你多起几个端口就是了…这里我们用的就是560端口。
- 在防火墙上确保到logstash服务器是通的,选择好原地址(一般是防火墙管理口),选择好时区即可
logstash的配置
logstash的安装不多说,也比较简单,配置文件我们注意是input
,filter
以及output
就可以了,也就是输入、过滤和解析、输出给es。
input部分
input部分如下:
syslog{type => "syslog-fw-f5030d-nat"host => "172.16.1.1"port => 560}
这段的意思是,在172.16.1.1
也就是logstash服务器上监听560
端口,并将这个端口来的syslog标记为syslog-fw-f5030d-nat
filter部分
其实此时日志已经可以进来了,但为了后期方便,我们还需要对他进行处理,将四元组单独作为一个key
如下:
# 出口防火墙的解析,解析nat日志
if [type] == "syslog-fw-f5030d-nat" {grok {match => {"message" => "%{IP:SIP} - %{IP:DIP} %{INT:SPORT} %{INT:DPORT} "}}}
这个其实就是grok
语法,我一开始以为很复杂,后来才发现对于nat日志这种,他已经考虑的很齐全了。。。
比如,这段%{IP:SIP} - %{IP:DIP} %{INT:SPORT} %{INT:DPORT}
就是在类似<134> 1 2021 Dec 15 07:33:47 172.1.1.1 F5030_D - NAT444:sessionbasedA [17 172.16.1.1 - 218.2.135.1 47641 38104 -]
这样的日子中,将第一个IP解析为SIP,将第二个IP解析为DIP
,第一个INT
解析为DIP
,第二个INT
解析为SPORT
。对于IP的解析,grok已经给出了IP
这个特殊代码。
ps,这里其实还是比较偷懒的,等有空再去慢慢研究。
总之最后结果就是
是不是很赞?
当然,理论上你不做filter也是可以搜索的,但是显然搜索结果很慢,也不方便写搜索语法。
output部分
上面有点跳,你要记得的是logstash的过程是input
,filter
,最后是output
才能输出给es。
output的代码也比较简单,如下
if [type] == "syslog-fw-f5030d-nat" {elasticsearch {hosts => ["your-es-ip:9200"]user => "elastic"password => "your-es-key"index => "syslog-fw-f5030d-nat-%{+YYYYMMdd}"}}
也就是将上述日志syslog-fw-f5030d
这个发送给es,并且index名称为syslog-fw-f5030d-nat-日期
这样的。
ES部分的配置
此时其实日志已经到了es里面了。但我们还是要做一些简单地操作来优化后续的查询。
- 首先我们进入kibana的
Stack Management
,点击索引模式
并点击创建索引模式
- 这里我们可以输入索引模式的名称,例如
syslog-fw-f5030d-*
,这时候他会去匹配所有的index,因为我们之前index都是按照日期分的,这里直接*就可以匹配所有 - 此时我们来到kibana的
Analytics
下的Discover
,左侧选择索引模式
即可用语法进行搜索了。
至此,大功告成!
总结
当然,还有很多可以完善的地方
- 首先是负载还不确定,我用校园网试了一下,一天大概在2~3亿条,索引不到50g的样子。这两天再观察一下宿舍cmcc无线的,这个量应该很大,不知道es吃不吃得消?
- 其次就是这里是有瓶颈的,根据配置文件我们看到,logstash是一个单点,这个挂了日志就没地方发和处理了,我测试的时候看了下,进流量大概20m不到,出反而很大在40m左右。cpu看了下还好,不是太大问题。不知道日志量大的时候会不会丢日志?syslog还是udp协议的,丢了也不知道啊…
- 以及es是单点。我虽然布了4台es节点,但是logstash只发给了master节点,如果这里出问题也是很麻烦的。
这些问题,准备在下面的es部署部分去完善吧。nat日志作为校园网日志留存很重要的一部分,先存下来,暂时还没想到有什么分析的目的,这个只有ip没有mac,似乎从ac上拿到mac,再去和认证系统匹配的意思更大?但那个用到的一般都是关系数据库了,和日志如何对接,又是一个课题…
使用elasticsearch保存h3c防火墙的nat日志相关推荐
- H3C防火墙实现NAT+DHCP
实验要求:使用防火墙,使内网中的PC自动获得IP地址,而且经过NAT转换,使内网内的主机能够正常访问因特网. 实验设备:H3C防火墙 拓扑图: 由于网络环境是处于局域网(192.168.102.0/2 ...
- H3C防火墙NAT类型及处理顺序
H3C防火墙NAT处理顺序 本文主要适用于H3C V7版本防火墙,介绍了NAT的基本类型和执行顺序.相关内容很多援引H3C官方产品文档,NAT类型及相关说明以官方文档为准. 1 NAT类型及配置说明 ...
- H3C防火墙升级系统版本报错:No sufficient storage space on the device
背景 是这样的,AK125防火墙上线后激活了ips .AV授权,然后设置的周日晚定时升级,然后周一来了发现web页面打开非常卡,大部分页面安全策略都没有结果,一直转圈圈,命令行ssh正常.但是查看一些 ...
- GNUGK 作为Gatekeeper穿透防火墙和NAT
2018-05-23 补充: 在 [ubuntu 16.04.04 上升级GNUGK 到4.9 ] 背景信息 由于内部使用Polycom的视频会议,在北.上.深各有办事处也用polycom ,偶 ...
- ElasticSearch+NLog实现.net core分布式日志管理
概述 Elasticsearch可广泛应用于日志分析.全文检索.结构化数据分析等多种场景,大幅度降低维护多套专用系统的成本,在开源社区非常受欢迎.在系统中,如果将日志作为文件输出,查看系统日志将非常不 ...
- 演示:Linux工程环境应用实训(防火墙、NAT、静态路由)详细配步骤
各位童鞋注意:该实验完成可以使用GNS3与4虚拟机进行桥接,然后在一台物理计算机上完成,不虽要去拿真正的4台服务器或者交换机路由器来连成一个网络,现在大家都使用网络仿真教学与实验! Linux工程环境 ...
- 防火墙和NAT基础学习
防火墙 1. 防火墙基本概念 1.1 防火墙的功能 硬件防火墙是将各种技术融合在一起,采用专用的硬件架构,高速cpu,使用各种高速接口,从而保护我们的私有网络的安全.防火墙适应各种场合.用户可以根据自 ...
- H3C 防火墙混合实验 新华三杯拆解
H3C 防火墙混合实验 一.项目拓扑 二.项目需求 三.配置步骤 1. 配置IP地址 2. FW默认路由,FW指向internet 3. 绑定防火墙安全域端口 4. 配置防火墙安全策略 5. OSPF ...
- Linux 防火墙与NAT服务
防火墙与NAT服务器 Linux的防火墙主要透过Netfilter与TCPWrappers两个机制来管理的,其中Netfilter防火墙机制,可以让我们的私有IP的主机上网(IP分享器功能) 并且也能 ...
最新文章
- matlab在电力行业中的仿真技术-MATLAB基于EKF算法估计电动汽车蓄电池的SOC
- 小技巧:不用任何媒体处理软件进行视频压缩
- python filter函数中写none_Python3基础 filter 第一个参数为NONE时 结果只返回为True的对象...
- AngularJS中的过滤器(filter)
- Centos7 使用Docker MySQL部署_01
- XV6陷入,中断和驱动程序
- svn 中 版本回退
- LM2596S-ADJ DC-DC降压芯片使用
- 【JAVA程序设计】(C00011)基于ssm的企业OA(考勤)管理系统
- 常见笔顺错误的字_有哪些常见笔顺错误?
- codeforces 558D Guess Your Way Out! II
- Android 调起微信扫一扫
- 39、C++定义一个类,实现向量的加减运算
- elementary 安装常用软件
- 《ECMAScript 6 入门教程》学习笔记Ⅰ
- Vue实现轮播的方法
- IIS站点配置和DW CS6连接Access数据库
- Mybatis和MybatisPlus3.4的使用
- R语言 读写带分隔符的文件
- 个人网站5-网站SEO优化推广和增加百度谷歌收录