一种基于eBPF XDP从外网引流到内网蜜罐的方法和系统
技术领域
本发明涉及网络安全技术领域,尤其涉及一种基于eBPF XDP从外网引流到内网蜜罐的方法和系统。
背景技术
随着互联网技术的不断发展,各种各样的网络技术出现,同时也导致了越来越多的网络安全事件发生,给网络安全带来了挑战。为了更好的实现网络安全的防护,越来越多的安全产品出现,比如WAF、蜜罐等。蜜罐技术将被动防御变为了主动出击,在网络安全领域具有重要作用,其中内网蜜罐部署在局域网内部,通过模拟内网中其它业务资源或某个具体服务,开放对应端口等级攻击者进入,可以有效降低内网中其它业务被攻击的风险,同时及时发现威胁、发出告警。但是内网蜜罐,需要攻击者突破内网后才有可能被扫描发现,这种方式比较被动,因为内网相对安全,渗透内网是一个比较困难的过程,因此流量进入内网蜜罐的可能性比较小。为了解决这个问题,需要对内网蜜罐主动引流,让流量可以从外网到达内网蜜罐,让外网流量可以在内网渗透、蜜罐被发现之前进入蜜罐。目前,内网蜜罐引流主要采用 tcpcopy引流技术。在实际应用中,现有的内网蜜罐引流技术存在以下不足:1.只支持TCP协议流量的引流,不支持UDP协议和ICMP协议流量的引流;2.其作用机制是在应用层对流量进行复制,系统资源消耗高;3.无法阻断流量,对于大量威胁流量也会被一同引入蜜罐,增加了蜜罐处理的负担,造成资源浪费;4.部署繁琐,需要部署nginx等代理工具,增加了安全风险和成本。
因此,如何提供一种通用性好、高效、安全和低成本的将流量从外网引流至内网蜜罐的方法,成为亟待解决的技术问题。
发明内容
有鉴于此,为了克服现有技术的不足,本发明提供一种基于eBPF XDP从外网引流到内网蜜罐的方法和系统。
一方面,本发明提供一种基于eBPF XDP从外网引流到内网蜜罐的方法,包括:
步骤S1:解析从外网到达内外网交界服务器的流量,获得流量的网络五元组,所述网络五元组由来源IP、来源端口、协议、目标IP和目标端口组成;
步骤S2:筛选获得符合蜜罐引流条件的流量,将筛选获得的流量引流至内网蜜罐添加诱捕配置并将配置后的流量发送至内外网交界服务器;
步骤S3:在内外网交界服务器上对接收的流量进行筛选和修改,将修改后的流量发送至攻击者。
进一步地,本发明基于eBPF XDP从外网引流到内网蜜罐的方法的步骤S2,包括:
步骤S21:筛选获得网络五元组中的协议是tcp/udp/icmp 中任意一种,来源IP在IP黑名单中以及流量处理策略是转发到内网蜜罐的流量;
步骤S22:将步骤21筛选获得的流量的网络五元组中来源IP修改为当前网卡IP地址,将目标IP修改为内网蜜罐IP地址,其它保持不变,生成修改后的流量数据包;
步骤S23:记录修改前网络五元组和修改后网络五元组的对应关系,根据修改前网络五元组生成唯一key,将生成的唯一key附加到修改后的流量数据包中;
步骤S24:将唯一key和五元组对应关系存储在 eBPF map中,通过网卡将修改后的流量数据包发送至内网蜜罐;
步骤S25:采用内网蜜罐接收修改后的流量数据包后对流量添加诱捕配置,向内外网交界服务器发送返回流量数据包。
进一步地,本发明基于eBPF XDP从外网引流到内网蜜罐的方法的步骤S2,还包括:
当流量的网络五元组中的协议不是 tcp/udp/icmp 中任意一种,丢弃流量;
当流量的网络五元组中的协议是 tcp/udp/icmp 中任意一种,来源IP不在IP黑名单中,将流量经过Linux内核放行至目标应用程序;
当流量的网络五元组中的协议是 tcp/udp/icmp 中任意一种,来源IP在IP黑名单中,且流量处理策略是阻断,丢弃流量。
进一步地,本发明基于eBPF XDP从外网引流到内网蜜罐的方法的步骤S3,包括:
步骤S31:在内外网交界服务器检测到网卡接收到返回流量数据包后,通过筛选获得符合修改条件的返回流量数据包;
步骤S32:修改步骤S31中筛选得到的返回流量数据包,将修改后的返回流量数据包发送至攻击者。
进一步地,本发明基于eBPF XDP从外网引流到内网蜜罐的方法的步骤S31中,通过筛选得到符合修改条件的返回流量数据包,包括:筛选网络五元组中的来源IP是内网蜜罐的IP的返回流量数据包,根据筛选后返回流量数据包中附加的唯一key在eBPF map中查找与所述唯一key相关联的修改前网络五元组和修改后网络五元组的对应关系,当查到与所述唯一key相关联的修改前网络五元组和修改后网络五元组的对应关系时,判定所述返回流量数据包符合修改条件。
进一步地,本发明基于eBPF XDP从外网引流到内网蜜罐的方法的步骤S32中,修改步骤S31中筛选得到的返回流量数据包,包括:将筛选得到的返回数据包的网络五元组中的来源IP修改为当前网卡IP,将目标IP修改为攻击者IP。
进一步地,本发明基于eBPF XDP从外网引流到内网蜜罐的方法,还包括:在处理完流量后,将阻断、转发的流量次数以及流量的网络五元组信息存储至eBPF map。
另一方面,本发明还提供一种基于eBPF XDP从外网引流到内网蜜罐的系统,包括:
引流层,包括用户态Agent、内核态Agent、内外网交界服务器、WAF和内网蜜罐,其中,用户态Agent用于通过内核态Agent管理模块将内核态Agent加载至指定网卡或从指定网卡上卸载,开启或关闭引流,将内网蜜罐信息、引流策略通过eBPF map发送至内核态Agent;内核态Agent用于通过 eBPF map 读取引流策略并根据引流策略对到达内外网交界服务器网卡但未到达Linux 内核网络协议栈的流量进行丢弃、阻断或引流至内网蜜罐,通过 eBPF map 读取内网蜜罐信息;内外网交接服务器用于部署用户态Agent和内核态Agent;WAF用于对流量进行判断并根据判断结果动态更新IP黑名单,将更新的IP黑名单存储到 kafka中;内网蜜罐用于对接收的流量添加诱捕配置并将配置后的流量发送至内外网交界服务器;
控制层,包括Agent管理模块、内网蜜罐信息配置模块以及引流策略配置模块,其中,Agent管理模块用于控制用户态Agent将内核态Agent加载至指定网卡或从指定网卡上卸载,开启或关闭引流,将内网蜜罐信息、引流策略写入本地sqlite数据库以及eBPF map;内网蜜罐信息配置模块,用于配置内网蜜罐信息,包括内网蜜罐的IP和端口,将内网蜜罐信息送给用户态Agent;引流策略配置模块,用于配置IP黑名单以及配置流量丢弃、流量阻断和流量转发处理策略,用于将kafka中由WAF更新的IP黑名单发送至用户态Agent;
监控层,由监控采集模块和展示模块组成,用于监控采集和展示用户态Agent 运行状态、内核态Agent运行状态以及被丢弃、阻断、引流的流量信息;
存储层,包括eBPF map、kafka 、mysql 数据库以及sqlite数据库,其中,eBPF map用于存储用户态Agent和内核态Agent的交互数据;Kafka,用于接收 WAF 根据流量的判断结果更新的IP黑名单;mysql数据库用于存储监控层采集的用户态Agent 运行状态、内核态Agent运行状态以及被丢弃、阻断、引流的流量信息,存储控制层配置的引流策略、内网蜜罐信息,供控制层读取后下发至用户态Agent;Sqlite数据库用于存储控制层下发的引流策略、内网蜜罐信息和用户态Agent所在的内外网交界服务器信息。
进一步地,本发明基于eBPF XDP从外网引流到内网蜜罐的系统中, WAF用于将判定为攻击流量的流量的来源IP加入到IP黑名单列表。
进一步地,本发明基于eBPF XDP从外网引流到内网蜜罐的系统中,引流策略包括:网络五元组中的协议、IP黑名单以及流量丢弃、流量阻断和流量转发处理策略。
本发明基于eBPF XDP从外网引流到内网蜜罐的方法和系统,具有以下有益效果:
1.提高通用性,支持更多网络协议的引流,支持TCP/UDP/ICMP协议的流量引流;
2.降低资源占用,在服务器网卡上对流量进行丢弃、放行或转发操作,大幅度减少系统资源的消耗;
3.提高引流安全性,可以阻断流量,保护应用不受例如 DDOS等持续攻击;
4.利于部署轻量化以及降低引流成本,只需要在内外网交界服务器上部署轻量级Agent,可以实现热插拔,动态配置实时生效,对系统、网络规划影响小。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明示例性第一实施例基于eBPF XDP从外网引流到内网蜜罐的方法的流程图。
图2为本发明示例性第二实施例基于eBPF XDP从外网引流到内网蜜罐的方法的流程图。
图3为本发明示例性第三实施例基于eBPF XDP从外网引流到内网蜜罐的方法的流程图。
图4为本发明示例性第四实施例基于eBPF XDP从外网引流到内网蜜罐的系统的框架图。
图5为本发明示例性第四实施例基于eBPF XDP从外网引流到内网蜜罐的系统的应用原理图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
以下各实施例中涉及的名词解释如下:
eBPF:全称是 extended Berkeley Packet Filter,是Linux 内核中一个非常灵活与高效的类虚拟机(virtual machine-like)组件,用于在许多内核 hook 点安全地执行字节码。
XDP:全程是eXpress Data Path,是Linux 网络路径上内核集成的网络数据包处理器,为Linux内核提供了高性能、可编程的网络数据路径。由于网络数据包在还未进入网络协议栈之前就处理,它给Linux网络带来了巨大的性能提升。
eBPF XDP: 结合eBPF 和 XDP 技术的特点,可以在XDP执行eBPF 程序,可以在网络数据包还未进入网络协议栈之前就进行转发、丢弃、放行处理,可以显著提升Linux网络的性能。
蜜罐:本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。
WAF:Web应用防护墙(Web Application Firewall,简称WAF),是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品,主要用于防御针对网络应用层的攻击,像SQL注入、跨站脚本攻击、参数篡改、应用平台漏洞攻击、拒绝服务攻击等。
图1为根据本发明示例性第一实施例的一种基于eBPF XDP从外网引流到内网蜜罐的方法的流程图,如图1所示,本实施例的方法,包括:
步骤S1:解析从外网到达内外网交界服务器的流量,获得流量的网络五元组,所述网络五元组由来源IP、来源端口、协议、目标IP和目标端口组成;
步骤S2:筛选获得符合蜜罐引流条件的流量,将筛选获得的流量引流至内网蜜罐添加诱捕配置并将配置后的流量发送至内外网交界服务器;
步骤S3:在内外网交界服务器上对接收的流量进行筛选和修改,将修改后的流量发送至攻击者。
本实施例中,解析从外网到达内外网交界服务器的流量的网络五元组为{src_ip:来源IP、src_port:来源端口、protocol:协议(tcp/udp/icmp)、dst_ip:目标IP、dst_port目标端口}。
图2为根据本发明示例性第二实施例的一种基于eBPF XDP从外网引流到内网蜜罐的方法的流程图,本实施例是图1所示方法的优选实施例,如图2所示,本实施例方法的步骤S2,包括:
步骤S21:筛选获得网络五元组中的协议是tcp/udp/icmp 中任意一种,来源IP在IP黑名单中以及流量处理策略是转发到内网蜜罐的流量;
步骤S22:将步骤21筛选获得的流量的网络五元组中来源IP修改为当前网卡IP地址,将目标IP修改为内网蜜罐IP地址,其它保持不变,生成修改后的流量数据包;
步骤S23:记录修改前网络五元组和修改后网络五元组的对应关系,根据修改前网络五元组生成唯一key,将生成的唯一key附加到修改后的流量数据包中;
步骤S24:将唯一key和五元组对应关系存储在 eBPF map中,通过网卡将修改后的流量数据包发送至内网蜜罐;
步骤S25:采用内网蜜罐接收修改后的流量数据包后对流量添加诱捕配置,向内外网交界服务器发送返回流量数据包。
本实施例方法的步骤S22中,将步骤21筛选获得的流量的网络五元组中来源IP修改为当前网卡IP地址,将目标IP修改为内网蜜罐IP地址,其它保持不变,即将{src_ip:攻击者ip、src_port:攻击者来源端口、protocal:协议(tcp/udp/icmp)、dst_ip:应用ip、dst_port:目标端口} 修改为{src_ip:当前网卡IP地址、src_port:攻击者来源端口、protocal:协议(tcp/udp/icmp)、dst_ip:蜜罐系统IP地址、dst_port:目标端口}。
在实际应用中,本实施例方法的步骤S2,还包括:
当流量的网络五元组中的协议不是 tcp/udp/icmp 中任意一种,丢弃流量;
当流量的网络五元组中的协议是 tcp/udp/icmp 中任意一种,来源IP不在IP黑名单中,将流量经过Linux内核放行至目标应用程序;
当流量的网络五元组中的协议是 tcp/udp/icmp 中任意一种,来源IP在IP黑名单中,且流量处理策略是阻断,丢弃流量。
本实施例方法还包括:在处理完流量后,将阻断、转发的流量次数以及流量的网络五元组信息存储至eBPF map。
图3为根据本发明示例性第三实施例的一种基于eBPF XDP从外网引流到内网蜜罐的方法的流程图,本实施例是图1所示方法的优选实施例,如图3所示,本实施例方法的步骤S3,包括:
步骤S31:在内外网交界服务器检测到网卡接收到返回流量数据包后,通过筛选获得符合修改条件的返回流量数据包;
步骤S32:修改步骤S31中筛选得到的返回流量数据包,将修改后的返回流量数据包发送至攻击者。
本实施例方法的步骤S31中,通过筛选得到符合修改条件的返回流量数据包,包括:筛选网络五元组中的来源IP是内网蜜罐的IP的返回流量数据包,根据筛选后返回流量数据包中附加的唯一key在eBPF map中查找与所述唯一key相关联的修改前网络五元组和修改后网络五元组的对应关系,当查到与所述唯一key相关联的修改前网络五元组和修改后网络五元组的对应关系时,判定所述返回流量数据包符合修改条件。
本实施例方法的步骤S32中,修改步骤S31中筛选得到的返回流量数据包,包括:将筛选得到的返回数据包的网络五元组中的来源IP修改为当前网卡IP,将目标IP修改为攻击者IP。在实际应用中,即将{src_ip:蜜罐系统IP、src_port:目标端口、protocal:协议(tcp/udp/icmp)、dst_ip:服务器A网卡IP,dst_port:攻击者端口} 修改为 {src_ip:当前网卡IP、src_port:目标端口、protocal:协议(tcp/udp/icmp)、dst_ip:攻击者IP,dst_port:攻击者端口}。
图4为根据本发明示例性第四实施例的一种基于eBPF XDP从外网引流到内网蜜罐的系统的框架图,如图4所示,本实施例的系统,包括:
引流层,包括用户态Agent、内核态Agent、内外网交界服务器、WAF和内网蜜罐;
控制层,包括Agent管理模块、内网蜜罐信息配置模块以及引流策略配置模块;
监控层,由监控采集模块和展示模块组成,用于监控采集和展示用户态Agent 运行状态、内核态Agent运行状态以及被丢弃、阻断、引流的流量信息;
存储层,包括eBPF map、kafka 、mysql 数据库以及sqlite数据库。
本实施例系统中,引流策略包括:网络五元组中的协议、IP黑名单以及流量丢弃、流量阻断和流量转发处理策略。
图5为本实施例系统的运行原理示意图,如图5所示,在实际应用中,本实施例系统按以下方式应用:
用户态Agent用于通过内核态Agent管理模块将内核态Agent加载至指定网卡或从指定网卡上卸载,开启或关闭引流,将内网蜜罐信息、引流策略通过eBPF map发送至内核态Agent;内核态Agent用于通过 eBPF map 读取引流策略并根据引流策略对到达内外网交界服务器网卡但未到达Linux 内核网络协议栈的流量进行丢弃、阻断或引流至内网蜜罐,通过 eBPF map 读取内网蜜罐信息;内外网交接服务器用于部署用户态Agent和内核态Agent;WAF用于对流量进行判断并根据判断结果动态更新IP黑名单,将更新的IP黑名单存储到 kafka中,具体的,WAF用于将判定为攻击流量的流量的来源IP加入到IP黑名单列表;内网蜜罐用于对接收的流量添加诱捕配置并将配置后的流量发送至内外网交界服务器;
Agent管理模块用于控制用户态Agent将内核态Agent加载至指定网卡或从指定网卡上卸载,开启或关闭引流,将内网蜜罐信息、引流策略写入本地sqlite数据库以及eBPFmap;内网蜜罐信息配置模块,用于配置内网蜜罐信息,包括内网蜜罐的IP和端口,将内网蜜罐信息送给用户态Agent;引流策略配置模块,用于配置IP黑名单以及配置流量丢弃、流量阻断和流量转发处理策略,用于将kafka中由WAF更新的IP黑名单发送至用户态Agent;
eBPF map 用于存储用户态Agent和内核态Agent的交互数据;Kafka,用于接收WAF 根据流量的判断结果更新的IP黑名单;mysql数据库用于存储监控层采集的用户态Agent 运行状态、内核态Agent运行状态以及被丢弃、阻断、引流的流量信息,存储控制层配置的引流策略、内网蜜罐信息,供控制层读取后下发至用户态Agent;Sqlite数据库用于存储控制层下发的引流策略、内网蜜罐信息和用户态Agent所在的内外网交界服务器信息。
本实施例系统中,用户态Agent 运行状态包括用户态Agent的运行时长以及CPU和内存资源占用率,内核态Agent运行状态包括内核态Agent的加载、卸载状态。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。