当前位置:网站首页>信息安全-威胁检测-NAT日志接入威胁检测平台详细设计
信息安全-威胁检测-NAT日志接入威胁检测平台详细设计
2022-07-06 09:26:00 【一一空】
我们先看下NAT的几种模型,nat包括nat、snat、dnat三种,三者是一种抽象继承关系,如下先看下这些基础;
一、linux里存放dns服务器ip地址的配置文件
[[email protected] ~]# vim /etc/resolv.conf -->存放dns服务器ip地址的,真正我们进行域名查询的时候,就到这个文件里找dns服务器地址
# Generated by NetworkManager
nameserver 114.114.114.114
二、NAT
公有ip:互联网上
私有ip:局域网里使用
NAT的概念:Network Address Translation,网络地址转换
NAT解决的问题
解决了ip地址不够用的问题
保证了用户能够上网
也起到了安全作用NAT实现方法的工作过程:

NAT 的优点
节省公有合法 IP 地址
处理地址 重叠
增强灵活性
安全性
NAT 的缺点
延迟增大
配置和维护的复杂性
不支持某些应用 , 可以通过静态 NAT 映射来避免
linux里的NAT
SNAT -----------修改源ip
DNAT -----------修改目的ip三、SNAT
SNAT策略的典型应用环境
局域网主机共享单个公网IP地址接入Internet
SNAT策略的原理
源地址转换,Source Network Address Translation
修改数据包的源IP地址
linux网关服务器: 理解为就是一台路由器
NAT功能的实现是通过netfilter模块来实现的,iptables给netfilter传递参数

SANT策略的原理

vmware虚拟机的网卡的3个模式
VMware Network Adapter VMnet1 --》hostonly模式--仅主机模式:虚拟机只能和我们的真实机器通信
VMware Network Adapter VMnet8 --》NAT模式
桥接模式: 虚拟机可以和本地通信,也可以和局域网里的其他的真实机器或者也是桥接模式的虚拟机通信
桥接模式里虚拟机和真实机器的地位是一样的,都是通过外面的路由器上网,而且和真实机器在相同网段配置SNAT策略,开启snat功能(iptables)解析
iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o ens33 -j SNAT --to-source 192.168.0.133
-t nat 指定在nat表里操作
-A POSTROUTING 在POSTROUTING位置追加一条规则 append
-s 192.168.66.0/24 指定从防火墙过的数据包里的源ip地址来自 192.168.66.0/24 网段
-o ens33 重ens33接口出去 out-interface
-j SNAT 采取SNAT策略,进行源ip地址的转换
--to-source 192.168.0.133 将ip包里的源ip地址修改为192.168.0.133iptables 是一个防火墙工具
iptables -F 清除防火墙规则
iptables -L 查看防火墙规则
nmcli命令的使用(nmcli命令详解_桂安俊@KylinOS-CSDN博客_nmcli命令详解)
[[email protected] ~]# nmcli n 查看网络是否启用
enabled
[[email protected] ~]# nmcli n off 关闭网络
[[email protected] ~]# nmcli n on 打开网络
[[email protected] ~]# nmcli c 查看所有的网络的连接情况
NAME UUID TYPE DEVICE
ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet ens33
ens37 4a5516a4-dfa4-24af-b1c4-e843e312e2fd ethernet ens37
有线连接 1 a0953d48-3a24-36d3-b388-fe27b3f12b93 ethernet --
[[email protected] ~]#
[[email protected] ~]# nmcli d show
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:79:61:8A
GENERAL.MTU: 1500
GENERAL.STATE: 100(已连接)
GENERAL.CONNECTION: ens33
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER: 开
IP4.ADDRESS[1]: 192.168.0.127/24
IP4.GATEWAY: 192.168.0.1
IP4.ROUTE[1]: dst = 192.168.0.0/24, nh = 0.0.0.0, mt = 104
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.0.1, mt = 104
IP4.DNS[1]: 114.114.114.114
三、DNAT
DNAT策略的典型应用环境
在Internet中发布位于企业局域网内的服务器
在Internet中发布内网的服务器
发布: 公开出去
将一个网络里的服务器发布出来让另外的网络能够访问
发布: 背后是对内部资源的管控
DNAT策略的原理
目标地址转换,Destination Network Address Translation
修改数据包的目标IP地址
SNAT:局域网 --> 外网 --> 出去的问题
DNAT:外网 --> 局域网 --> 进来的问题
跳板机(堡垒机):外面的机器先登录到跳板机,然后再在跳板机上登陆里面的服务器

过程如下图所示:
DANT策略的原理

配置DNAT策略,开启dnat功能(iptables)解析
iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6
-t nat 指定nat表里操作
-A PREROUTING 在 PREROUTING位置追加一条规则 append-i eth0 从eth0接口进入系统 in-interface
-d 218.29.30.31 目的ip地址是218.29.30.31
-p tcp --dport 80 传输层采用tcp协议,同时目的端口是80 Destination port-j DNAT 采取DNAT策略
--to-destination 192.168.1.6 修改目的ip为192.168.1.6
DNAT如何发布内网不同的服务器呢?
使用不同的端口号来对应内网不同的ip地址服务器
iptables -t nat -A PREROUTING -d 192.168.0.127 -p tcp --dport 80 -i ens33 -j DNAT --to-destination 192.168.88.27
iptables -t nat -A PREROUTING -d 192.168.0.127 -p tcp --dport 80 -i ens33 -j DNAT --to-destination 192.168.88.27:80iptables -t nat -A PREROUTING -d 192.168.0.127 -p tcp --dport 8080 -i ens33 -j DNAT --to-destination 192.168.88.88:8080
iptables -t nat -A PREROUTING -d 192.168.0.127 -p tcp --dport 3306 -i ens33 -j DNAT --to-destination 192.168.88.136:3306dnat修改ip包的目的ip地址,还可以修改tcp或者udp里的目的端口号
好,到这里我们对nat的模型有了一些初步认识,那我们开始看下nat解析日志如何接入到威胁检测平台;

这里可以看到nat日志服务器整体的处理流程如下:
- 我们有很多nat服务器用户SNAT和DNAT的解析;
- 每台nat服务器会记录自己的解析日志到本地文件;
- 通过在nat服务器上部署rsync客户端,将nat解析日志文件上传到nat日志的文件服务器;
- 在nat日志文件服务器上部署我们自己java编写的agent;
- java的agent将nat文件服务器上所有的解析日志读取出来,并写入MQ;
- MQ的消费者将nat解析日志写入ES集群、Hadoop集群;
在处理nat日志文件服务器上的日志文件有以下几个难点:
1.nat服务器的机房增加;
2.nat机房下用于nat解析的机器增加;
3.机器下nat服务器的解析日志文件的增加;
4.高并发:随流量不断上涨nat日志文件不断增加、单个文件日志行数不断上涨;
应对方案;
1.在nat日志文件服务器上构建文件目录结构:~/机房/机器名/日期/文件名+时间戳.txt
2.单独一个线程监控机房和机器,发现新的机房或者机器开启新线程监控文件;
3.每个机器开启一个线程监控文件增长;
4.采用线程池处理文件内容,每个文件采用一个独立线程进行读取和发送到MQ;
5.发送至MQ的生产者采用kafka批量发送,批量大小设置到0.5m,减少发送次数;
单个文件的处理模型如下
在一个线程下的处理逻辑:
private void run() {
String timeDescription = file.getName().substring(8, 22);//获取时间戳,返回为20201516_193047
AtomicReference<Integer> sendCount = new AtomicReference<>(0);
if (noExist()) {
long start = System.currentTimeMillis();//当前文件处理的开始时间
try (Stream<String> stream = Files.lines(Paths.get(file.getPath()))) {
stream.forEach((s) ->
{
recordContentCount();
log.debug("orimsg" + s);
String[] splits = s.split("\\s+");
if (splits.length > 6) {
try {
Natlog nat = new Natlog(splits, timeDescription, jifang);
String res = nat.toString();
kafkaProducerService.write(res);//kafka通过修改客户端批量发送的大小batch.size来实现批量发送
sendCount.getAndSet(sendCount.get() + 1);
} catch (Exception e) {
log.error("record err: {}", file.getPath() + "," + s);
}
} else {
log.error("record err: {}", file.getPath() + "," + s);
}
});
} catch (Exception e) {
log.error("record err: {}", file.getPath() + "," + e.toString());
}
setFileExist();//设置文件已经读取,缓存7天,很重要的一点【日志文件保留天数是5天,7天后再次检索就检索不到这个文件了】
long cost = System.currentTimeMillis() - start;
log.info("处理统计 当前机房:{}, 当前文件:{},文件记录处理数量:{},耗时:{},文件最后修改时间:{} "
, jifang
, file.getPath()
, sendCount.get()
, cost
, new DateTime(file.lastModified()).toString("yyyy-MM-dd HH:mm:ss"));//文件最后的修改时间
}
}边栏推荐
- 学习记录:理解 SysTick系统定时器,编写延时函数
- 1010 things that college students majoring in it must do before graduation
- 0-1背包问题(一)
- HDU - 6024 Building Shops(女生赛)
- Cost accounting [18]
- Research Report of cylindrical grinder industry - market status analysis and development prospect forecast
- Borg Maze (BFS+最小生成树)(解题报告)
- Visual analysis of data related to crawling cat's eye essays "sadness flows upstream into a river" | the most moving film of Guo Jingming's five years
- Intensive learning notes: Sutton book Chapter III exercise explanation (ex17~ex29)
- 学习记录:如何进行PWM 输出
猜你喜欢

Learning record: use STM32 external input interrupt

Learning record: STM32F103 clock system overview working principle

学习记录:TIM—电容按键检测

Crawler series (9): item+pipeline data storage

51 lines of code, self-made TX to MySQL software!

STM32 how to use stlink download program: light LED running light (Library version)

Learning record: Tim - Basic timer

学习记录:串口通信和遇到的错误解决方法

Scoring system based on 485 bus

MATLAB综合练习:信号与系统中的应用
随机推荐
JS调用摄像头
Printing quality inspection and verification system Industry Research Report - market status analysis and development prospect forecast
0-1 knapsack problem (I)
学习记录:使用STM32外部输入中断
ucore lab 6
ucore lab7
Truck History
Crawler series (9): item+pipeline data storage
ucorelab3
区间和------离散化
Es6--- two methods of capturing promise status as failed
JS --- detailed explanation of JS DOM (IV)
Research Report of pharmaceutical solvent industry - market status analysis and development prospect prediction
Market trend report, technical innovation and market forecast of Chinese hospital respiratory humidification equipment
ucorelab4
The wechat red envelope cover designed by the object is free! 16888
Determine the Photo Position
Path problem before dynamic planning
E. Breaking the Wall
Eslint--- error: newline required at end of file but not found (EOL last) solution