一种基于eBPF XDP从内网引流到蜜罐的方法和系统
技术领域
本发明涉及网络安全技术领域,尤其涉及一种基于eBPF XDP从内网引流到蜜罐的方法和系统。
背景技术
随着互联网技术的不断发展,各种各样的网络技术出现,同时也导致了越来越多的网络安全事件发生,给网络安全带来了挑战。为了更好的实现网络安全的防护,越来越多的安全产品出现,比如WAF、蜜罐等。
蜜罐技术将被动防御变为了主动出击,在网络安全领域具有重要作用,其中内网蜜罐部署在局域网内部,通过模拟内网中其它业务资源或某个具体服务,开放对应端口等级攻击者进入,可以有效降低内网中其它业务被攻击的风险,同时及时发现威胁、发出告警。
目前蜜罐多部署在真实的Web系统同一环境下,需要在Web系统所在主机上开启端口作为蜜饵,将攻击流量引入到蜜罐中,这种引流方式需要在每个Web系统所在主机部署一个蜜罐,并且占用系统的端口资源,改变Web系统的网络拓扑,给实际应用带来不便,造成了资源浪费,增加了部署的复杂度。
因此,如何提供一种通用性好、高效、安全和低成本的将流量从内网引流至内网蜜罐的方法,成为亟待解决的技术问题。
发明内容
有鉴于此,为了克服现有技术的不足,本发明提供一种基于eBPF XDP从内网引流至蜜罐的方法和系统。
一方面,本发明提供一种基于eBPF XDP从内网引流至蜜罐的方法,包括:
步骤S1:解析从内网到达内网服务器的流量,获得流量的网络五元组;
步骤S2:根据网络五元组和流量处理策略筛选获得符合蜜罐引流条件的流量;
步骤S3:将筛选获得的流量引流至内网蜜罐添加诱捕配置并将配置后的流量发送至内网服务器;
步骤S4:在内网服务器上对接收的流量进行筛选和修改,将修改后的流量发送至攻击者。
进一步地,本发明基于eBPF XDP从内网引流至蜜罐的方法的步骤S2,包括:
采集内网服务器上已经被监听的端口,生成监听端口列表;
配置敏感端口,根据配置的敏感端口,生成敏感端口列表;
当流量的网络五元组中的目标端口不在监听端口列表中,且流量处理策略是阻断,丢弃流量 ;
当流量的网络五元组中的目标端口在监听端口列表中和敏感端口列表中,来源IP在IP白名单内,将流量放行至目标应用程序;
当流量的网络五元组中的目标端口在监听列表中不在敏感端口列表中,将流量放行至目标应用程序;
当流量的网络五元组中的目标端口不在监听端口列表中,且流量处理策略是转发,判定所述流量为符合蜜罐引流条件的流量;
当流量的网络五元组中的目标端口在监听端口列表中和敏感端口列表中,来源IP不在IP白名单内,且流量处理策略是阻断,丢弃流量;
当流量的网络五元组中的目标端口在监听端口列表中和敏感端口列表中,来源IP不在IP白名单内,且流量处理策略是转发,判定所述流量为符合蜜罐引流条件的流量。
进一步地,本发明基于eBPF XDP从内网引流至蜜罐的方法的步骤S3,包括:
步骤S31:将符合蜜罐引流条件的流量的网络五元组中来源IP修改为当前网卡IP地址,将目标IP修改为蜜罐系统IP地址,其它保持不变,生成修改后的流量数据包;
步骤S32:记录修改前网络五元组和修改后网络五元组的对应关系,根据修改前网络五元组生成唯一key,将生成的唯一key附加到修改后的流量数据包中;
步骤S33:将唯一key和五元组对应关系存储在 eBPF map中,通过网卡将修改后的流量数据包发送至蜜罐;
步骤S34:采用蜜罐接收修改后的流量数据包后对流量添加诱捕配置,向内网服务器发送返回流量数据包。
进一步地,本发明基于eBPF XDP从内网引流至蜜罐的方法的步骤S4,包括:
步骤S41:在内网服务器检测到网卡接收到返回流量数据包后,通过筛选获得符合修改条件的返回流量数据包;
步骤S42:修改步骤S41中筛选得到的返回流量数据包,将修改后的返回流量数据包发送至攻击者。
进一步地,本发明基于eBPF XDP从内网引流至蜜罐的方法的步骤S41中,通过筛选得到符合修改条件的返回流量数据包,包括:筛选网络五元组中的来源IP是内网蜜罐的IP的返回流量数据包,根据筛选后返回流量数据包中附加的唯一key在eBPF map中查找与所述唯一key相关联的修改前网络五元组和修改后网络五元组的对应关系,当查到与所述唯一key相关联的修改前网络五元组和修改后网络五元组的对应关系时,判定所述返回流量数据包符合修改条件。
进一步地,本发明基于eBPF XDP从内网引流至蜜罐的方法的步骤S42中,修改步骤S41中筛选得到的返回流量数据包,包括:将筛选得到的返回流量数据包的网络五元组中的来源IP修改为当前网卡IP,将目标IP修改为攻击者IP。
进一步地,本发明基于eBPF XDP从内网引流至蜜罐的方法,还包括:在处理完流量后,将阻断、转发的流量次数以及流量的网络五元组信息存储至eBPF map。
另一方面,本发明还提供一种基于eBPF XDP从内网引流至蜜罐的系统,包括:
引流层,包括用户态Agent、内核态Agent、内网服务器和蜜罐,其中用户态Agent用于通过内核态Agent管理模块将内核态Agent加载至内网服务器指定网卡或从指定网卡上卸载,开启或关闭引流,将引流策略通过eBPF map 发送至内核态Agent;内核态Agent用于通过eBPF map 读取引流策略并根据引流策略对到达内网服务器网卡但未到达Linux内核网络协议栈的流量进行丢弃、阻断或引流至蜜罐,通过eBPF map 读取蜜罐信息;内网服务器用于部署用户态Agent和内核态Agent;蜜罐用于对接收到的流量添加诱捕配置并将配置后的流量发送至内网服务器;
控制层,包括Agent管理模块、监听端口采集模块、蜜罐信息配置模块以及引流策略配置模块,其中,Agent管理模块用于控制用户态Agent将内核态Agent加载至指定网卡或从指定网卡上卸载,开启或关闭引流,将蜜罐信息、引流策略写入本地sqlite数据库以及eBPF map;监听端口采集模块用于采集内网服务器上已监听端口,通过用户态Agent写入本地sqlite数据库以及eBPF map;蜜罐信息配置模块,用于配置蜜罐信息,包括蜜罐的IP和端口,将蜜罐信息发送给用户态Agent;引流策略配置模块,用于配置敏感端口列表、IP白名单以及配置流量丢弃、流量阻断和流量转发处理策略,并将上述信息发送至用户态Agent;
监控层,由监控采集模块和展示模块组成,用于监控采集和展示用户态Agent 运行状态、内核态Agent运行状态以及被丢弃、阻断、引流的流量信息;
存储层,包括eBPF map,mysql 数据库以及sqlite数据库,其中,eBPF map 用于存储用户态Agent和内核态Agent的交互数据;mysql数据库用于存储监控层采集的用户态Agent 运行状态、内核态Agent运行状态以及被丢弃、阻断、引流的流量信息,存储控制层配置的引流策略、内网蜜罐信息,供控制层读取后下发至用户态Agent,存储控制层监听端口采集模块采集的内网服务器上的监听端口列表,用于控制层查询内网服务器上的监听端口列表;sqlite数据库用于存储控制层下发的引流策略、内网蜜罐信息,存储控制层监听端口采集模块采集的监听端口列表以及用户态Agent所在的内网服务器信息。
进一步地,本发明基于eBPF XDP从内网引流至蜜罐的系统中的引流策略包括:监听端口列表、敏感端口列表、IP白名单以及流量丢弃、流量阻断和流量转发处理策略。
进一步地,本发明基于eBPF XDP从内网引流至蜜罐的系统中,用户态Agent 运行状态包括用户态Agent的运行时长以及CPU和内存资源占用率,内核态Agent运行状态包括内核态Agent的加载、卸载状态。
本发明基于eBPF XDP从内网引流到蜜罐的方法和系统,具有以下有益效果:
1.通过轻量级部署减少资源浪费,只需在一台内网服务器上部署蜜罐,其它服务器上部署轻量级Agent;不占用系统的端口资源,不改变应用的网络拓扑,对系统和应用的影响小,侵入性极低;
2.提高通用性,支持更多网络协议的引流,支持TCP/UDP/ICMP协议的流量引流;
3.提高引流安全性,可以阻断流量,保护应用不受例如 DDOS等持续攻击。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图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网络的性能。
蜜罐:本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。
图1为根据本发明示例性第一实施例的一种基于eBPF XDP从内网引流至蜜罐的方法的流程图,如图1所示,本实施例的方法,包括:
步骤S1:解析从内网到达内网服务器的流量,获得流量的网络五元组;
步骤S2:根据网络五元组和流量处理策略筛选获得符合蜜罐引流条件的流量;
步骤S3:将筛选获得的流量引流至内网蜜罐添加诱捕配置并将配置后的流量发送至内网服务器;
步骤S4:在内网服务器上对接收的流量进行筛选和修改,将修改后的流量发送至攻击者。
本实施例的方法中,解析从内网到达内网服务器的流量获得的网络五元组为{src_ip:来源IP、src_port:来源端口、protocal:协议(tcp/udp/icmp)、dst_ip:目标IP、dst_port:目标端口}。
本发明示例性第二实施例提供一种基于eBPF XDP从内网引流至蜜罐的方法,本实施例是图1所述方法的优选实施例,本实施例方法的步骤S2,包括:
采集内网服务器上已经被监听的端口,生成监听端口列表;
配置敏感端口,根据配置的敏感端口,生成敏感端口列表;
当流量的网络五元组中的目标端口不在监听端口列表中,且流量处理策略是阻断,丢弃流量 ;
当流量的网络五元组中的目标端口在监听端口列表中和敏感端口列表中,来源IP在IP白名单内,将流量放行至目标应用程序;
当流量的网络五元组中的目标端口在监听列表中不在敏感端口列表中,将流量放行至目标应用程序;
当流量的网络五元组中的目标端口不在监听端口列表中,且流量处理策略是转发,判定所述流量为符合蜜罐引流条件的流量;
当流量的网络五元组中的目标端口在监听端口列表中和敏感端口列表中,来源IP不在IP白名单内,且流量处理策略是阻断,丢弃流量;
当流量的网络五元组中的目标端口在监听端口列表中和敏感端口列表中,来源IP不在IP白名单内,且流量处理策略是转发,判定所述流量为符合蜜罐引流条件的流量。
图2为根据本发明示例性第三实施例的一种基于eBPF XDP从内网引流至蜜罐的方法的流程图,本实施例是图1所示方法的优选实施例,如图2所示,本实施例方法的步骤S3,包括:
步骤S31:将符合蜜罐引流条件的流量的网络五元组中来源IP修改为当前网卡IP地址,将目标IP修改为蜜罐系统IP地址,其它保持不变,生成修改后的流量数据包;
步骤S32:记录修改前网络五元组和修改后网络五元组的对应关系,根据修改前网络五元组生成唯一key,将生成的唯一key附加到修改后的流量数据包中;
步骤S33:将唯一key和五元组对应关系存储在 eBPF map中,通过网卡将修改后的流量数据包发送至蜜罐;
步骤S34:采用蜜罐接收修改后的流量数据包后对流量添加诱捕配置,向内网服务器发送返回流量数据包。
本实施例方法的步骤S31中,将符合蜜罐引流条件的流量的网络五元组中来源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:目标端口}。
本实施例方法,还包括:在处理完流量后,将阻断、转发的流量次数以及流量的网络五元组信息存储至eBPF map。
图3为根据本发明示例性第四实施例的一种基于eBPF XDP从内网引流至蜜罐的方法的流程图,本实施例是图1所示方法的优选实施例,如图3所示,本实施例方法的步骤S4,包括:
步骤S41:在内网服务器检测到网卡接收到返回流量数据包后,通过筛选获得符合修改条件的返回流量数据包;
步骤S42:修改步骤S41中筛选得到的返回流量数据包,将修改后的返回流量数据包发送至攻击者。
在实际应用中,本实施例方法的步骤S41中,通过筛选得到符合修改条件的返回流量数据包,包括:筛选网络五元组中的来源IP是内网蜜罐的IP的返回流量数据包,根据筛选后返回流量数据包中附加的唯一key在eBPF map中查找与所述唯一key相关联的修改前网络五元组和修改后网络五元组的对应关系,当查到与所述唯一key相关联的修改前网络五元组和修改后网络五元组的对应关系时,判定所述返回流量数据包符合修改条件。
本实施例方法的步骤S42中,修改步骤S41中筛选得到的返回流量数据包,包括:将筛选得到的返回流量数据包的网络五元组中的来源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:攻击者端口}。
图4为根据本发明示例性第五实施例的一种基于eBPF XDP从内网引流至蜜罐的系统的框架图,如图4所示,本实施例的系统,包括:
引流层,包括用户态Agent、内核态Agent、内网服务器和蜜罐;
控制层,包括Agent管理模块、监听端口采集模块、蜜罐信息配置模块以及引流策略配置模块;
监控层,由监控采集模块和展示模块组成,用于监控采集和展示用户态Agent 运行状态、内核态Agent运行状态以及被丢弃、阻断、引流的流量信息;
存储层,包括eBPF map,mysql 数据库以及sqlite数据库。
本实施例系统中,引流策略包括:监听端口列表、敏感端口列表、IP白名单以及流量丢弃、流量阻断和流量转发处理策略。
本实施例系统中,用户态Agent 运行状态包括用户态Agent的运行时长以及CPU和内存资源占用率,内核态Agent运行状态包括内核态Agent的加载、卸载状态。
图5为本实施例系统的应用原理图,如图5所示,在实际应用中,本实施例的系统按以下方式应用:
用户态Agent用于通过内核态Agent管理模块将内核态Agent加载至内网服务器指定网卡或从指定网卡上卸载,开启或关闭引流,将引流策略通过eBPF map 发送至内核态Agent;内核态Agent用于通过eBPF map 读取引流策略并根据引流策略对到达内网服务器网卡但未到达Linux内核网络协议栈的流量进行丢弃、阻断或引流至蜜罐,通过eBPF map读取蜜罐信息;内网服务器用于部署用户态Agent和内核态Agent;蜜罐用于对接收到的流量添加诱捕配置并将配置后的流量发送至内网服务器。
Agent管理模块用于控制用户态Agent将内核态Agent加载至指定网卡或从指定网卡上卸载,开启或关闭引流,将蜜罐信息、引流策略写入本地sqlite数据库以及eBPF map;监听端口采集模块用于采集内网服务器上已监听端口,通过用户态Agent写入本地sqlite数据库以及eBPF map;蜜罐信息配置模块,用于配置蜜罐信息,包括蜜罐的IP和端口,将蜜罐信息发送给用户态Agent;引流策略配置模块,用于配置敏感端口列表、IP白名单以及配置流量丢弃、流量阻断和流量转发处理策略,并将上述信息发送至用户态Agent;
eBPF map 用于存储用户态Agent和内核态Agent的交互数据;mysql数据库用于存储监控层采集的用户态Agent 运行状态、内核态Agent运行状态以及被丢弃、阻断、引流的流量信息,存储控制层配置的引流策略、内网蜜罐信息,供控制层读取后下发至用户态Agent,存储控制层监听端口采集模块采集的内网服务器上的监听端口列表,用于控制层查询内网服务器上的监听端口列表;sqlite数据库用于存储控制层下发的引流策略、内网蜜罐信息,存储控制层监听端口采集模块采集的监听端口列表以及用户态Agent所在的内网服务器信息。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。