当前位置:网站首页>信息安全-威胁检测-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.133
iptables 是一个防火墙工具
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"));//文件最后的修改时间
}
}
边栏推荐
- STM32学习记录:输入捕获应用
- Cost accounting [20]
- Research Report of peripheral venous catheter (pivc) industry - market status analysis and development prospect prediction
- 程序员的你,有哪些炫技的代码写法?
- 初入Redis
- Optimization method of path problem before dynamic planning
- cs零基础入门学习记录
- LeetCode#412. Fizz Buzz
- Market trend report, technical innovation and market forecast of Chinese hospital respiratory humidification equipment
- STM32學習記錄:輸入捕獲應用
猜你喜欢
Unpleasant error typeerror: cannot perform 'ROR_‘ with a dtyped [float64] array and scalar of type [bool]
学习记录:使用STM32F1看门狗
ucorelab4
Learning record: understand systick system timer and write delay function
Lab 8 file system
用C语言写网页游戏
LeetCode#237. Delete nodes in the linked list
MATLAB综合练习:信号与系统中的应用
STM32学习记录:LED灯闪烁(寄存器版)
数据在内存中的存储&载入内存,让程序运行起来
随机推荐
Cost accounting [15]
ucore lab5
JS --- detailed explanation of JS facing objects (VI)
学习记录:使用STM32外部输入中断
学习记录:TIM—基本定时器
China's PCB connector market trend report, technological innovation and market forecast
Lab 8 file system
洛谷P1102 A-B数对(二分,map,双指针)
LeetCode#198. raid homes and plunder houses
Research Report of pharmaceutical solvent industry - market status analysis and development prospect prediction
Cost accounting [21]
JS --- all basic knowledge of JS (I)
csapp shell lab
Matlab example: two expressions of step function
1010 things that college students majoring in it must do before graduation
Learning record: Tim - capacitive key detection
JS --- all knowledge of JS objects and built-in objects (III)
Research Report on medical toilet industry - market status analysis and development prospect forecast
cs零基础入门学习记录
Matlab comprehensive exercise: application in signal and system