当前位置: 首页 > Linux

KVM高交互蜜罐NAT网络模式下的网络配置

时间:2023-04-07 01:42:06 Linux

一、概述蜜罐技术最近已经被各家安全厂商应用和实践。用户通过构建蜜罐,可以对公网或内网进行引诱攻击,同时对蜜罐中的攻击数据进行收集分析,从而达到了解攻击者意图、收集威胁情报的目的。更高级的蜜罐可以用来回溯和回放攻击过程,形成攻击链,清晰展示整个攻击过程。2、问题描述及处理方法对于部署在内网的蜜罐,用户站点一般有多个不同的网段。在这种情况下,单个蜜罐设备需要支持多个网段的感知。本文重点介绍单设备多网段感知时的网络配置方法。先看蜜罐设备的网络拓扑:上图中的虚拟蜜罐是通过kvm虚拟化技术构建的,构建的虚拟蜜罐集群有自己的内部网络(ps:由于docker平台使用的是linux内核,所以不支持windows高交互操作系统的运行,所以我们使用kvm搭建虚拟蜜罐环境),上图中的192.168.122.0网段为虚拟蜜罐内网对应的网段。这时虚拟蜜罐的内部网络就像我们平时工作的局域网,而蜜罐服务器上em1、em2、em3网卡对应的网络就像是外部网络。我们的预期是,当内网渗透者或内网被攻陷机器攻击传播时,当流量到达蜜罐服务器上em1、em2、em3对应的网卡时,我们将相应的攻击流量拉到虚拟蜜罐内部,让虚拟蜜罐集群与攻击者交互,但是虚拟蜜罐内部的网络和蜜罐服务器上的网络属于两个完全不同的网段,存在网络隔离,所以需要用到一个技术,NAT技术(Network地址翻译)。大致的转换过程如下:当172.16.20.50的流量到达em2网卡后,通过内部nat转换,将通信的目的地址改为蜜罐内部的地址192.168.122.100。这个过程需要在linux下通过iptables来控制。具体指令如下:iptables-tnat-APREROUTING-d172.16.20.10-jDNAT--to-destination192.168.122.100当服务上的ip地址发起访问时,我们将访问流量拉到里面虚拟蜜罐。同样,虚拟蜜罐在发起连接时也需要进行地址转换,此时需要做的就是源地址转换。iptables-tnat-IPOSTROUTING3-s192.168.122.100-jSNAT--to-source172.16.20.10注意:源地址转换是使用-I插入添加的,而目的地址转换是-A追加加入。这是因为管理kvm虚拟机网络的kvm对应的libvirtd进程会对kvm内部创建的虚拟机进行源地址翻译处理。这种源地址转换是一种特殊的源地址转换,称为ip地址伪装。查看防火墙nat表的规则,iptables-tnat-vnL如图:经验证,linux的默认网关对应的网卡上的ip地址,默认会使用ip时的源地址转换地址是伪装的。当网卡有多个ip地址时,优先使用第一个。如果我们使用这个默认的ip地址伪装,会造成一个问题,就是当所有虚拟蜜罐对外发起访问时,只有一个出口IP,这不符合我们的预期,如下图图:ip地址伪装:预期效果:所以我们需要在ip地址伪装上面,先用-I先插入我们需要进行源地址转换的规则,保证传入路径和传出路径一致。当然,地址转换也会使进出出口的流量不一致。这个可以根据实际需要做调整。需要注意的是,用户添加的规则在libvirtd(控制kvm网络配置的进程)重启后会被覆盖。我们需要为这种报道制定一定的规则。根据蜜罐的交互程度,可分为高交互蜜罐和低交互蜜罐。低交互蜜罐可以是简单的服务模拟。一些数据通过套接字和访问服务的远程地址发送和接收。模拟程度有限,不易追踪捕捉。无法有效触发攻击者入侵后的进一步系统行为,以及攻击者入侵后的安装动作。高交互蜜罐可以模拟虚拟操作系统,可以感知入侵和后续主机事件。高交互在攻击溯源和还原过程中的优势更加明显。正是因为高交互蜜罐的高仿真性,高交互蜜罐被入侵以后可能成为入侵者或者bot攻击其他内网机器的跳板。这个问题需要解决。因此,我们需要对高交互蜜罐进行一些通信策略的控制,限制蜜罐的对外通信。我们也可以使用iptables来控制蜜罐的对外访问策略。根据用户现场需求,一般用户的期望是允许外部攻击流量访问蜜罐,不允许蜜罐主动发起任何外部连接,即蜜罐可以感知攻击,但限制传播被攻击后的蜜罐。在限流的时候,需要使用iptables的fitler表来控制流量。添加如下规则拒绝蜜罐的外部访问流量。需要释放外部发起的已建立连接。命令如下:iptables-tfilter-ivirbr0-IFORWARD-mstate--stateRELATED,ESTABLISHED-jACCEPTiptables-tfilter-ivirbr0-IFORWARD-jREJECT上面两个生效的网卡instructions是virbr0,它是libvirtd(控制kvm网络配置的进程)虚拟出来的一块网卡,所有的虚拟蜜罐流量都会流经这块网卡,所以流量控制只需要指定网卡就可以防止rule印象深刻的其他网卡的通信。我们需要取消限制蜜罐发起的对部分端口的访问。可以添加以下规则。iptables规则的优先级是从上到下的,我们需要用插入的方式让pass规则在deny规则之前,否则所有deny规则先生效,pass规则不起作用:iptables-tfilter-IFORWARD-ivirbr0-pudp--dportrelease端口号-jACCEPTiptables-tfilter-IFORWARD-ivirbr0-ptcp--dport允许的端口号-jACCEPT到目前为止,虚拟机的外部策略蜜罐已经基本完成。总结分为以下几点:让外部访问的ingress流量通过转发进入虚拟蜜罐,让虚拟蜜罐的egress流量可以走和ingress流量相同的通信路径(指保持ingressip地址和egressipaddress对应,从哪里进入,从哪里)来限制虚拟蜜罐发起的连接,必要时通过释放端口来释放端口。虚拟蜜罐的攻略已经基本完成,接下来我们来处理。蜜罐服务器上的路由策略还是先提出问题: