GNU General Public License v3.0

项目介绍

qssec/Hades-lite 是一个托管在 GitHub 上的开源项目,主要使用 C 编写,采用 GNU General Public License v3.0 许可证,目前获得 97 个 Star、28 次 Fork。

仓库全名
qssec/Hades-lite
开源许可证
GNU General Public License v3.0
Star 数
97
Fork 数
28
未关闭 Issue
2

README 摘要

Hades-lite 1、技术背景: 分布式拒绝服务 DDoS ,由于攻击简单、容易达到目的、难于防止和追查,逐渐成为常见的攻击方式,其目的是使计算机或网络无法提供正常的服务。随着网络资源的丰富以及带宽的增长,任何人都可能有能力影响网络服务的正常使用。 由于传统x86服务器架构io处理性能问题,导致大流量的ddos攻击发生时,服务处于阻塞或者宕机状态。使得原本通用防护方案的短板凸显出来。传统厂商的防护方案在此又显得笨重昂贵,如果能有一种轻量级的方案,并且兼顾下一代防火墙的优势,将会是一种非常好的解决方案。 2、技术原理: 由于ddos flood 流量大部分为异常流量,为减轻内核处理负载,直接将非法流量在驱动层面直接丢弃。驱动按照NUMA 统一map内存表项分配到不通CPU上面,然后将每core对应的内存从NUMA中进行划分。防止remote memory access。 core0 为物理CPU1,core1为物理CPU2…

完整内容见 GitHub 原始 README 或本页 。

常见问题

Hades-lite 用什么语言开发?

主要使用 C 编写,采用 GNU General Public License v3.0 许可证,目前有 97 个 Star。

Hades-lite 可以免费商用吗?

仓库标注的许可证为 GNU General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 Hades-lite 的源码?

可以直接克隆仓库:git clone https://github.com/qssec/Hades-lite.git,默认分支为 master;安装与运行步骤见仓库 README。

Hades-lite 最近还在维护吗?

仓库最近一次更新为 2018年12月25日,当前有 2 个未关闭 Issue;Star 数为 97,可作为社区活跃度的参考。

关于

Hades-lite 青松云安全开源的一个内核级 Anti-ddos 的驱动程序,轻量且高效,构建高性能代理防御,单机可抵御7Gb DDoS攻击

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

简要分析

热度分
161
价值分
67
活跃状态
活跃

语言占比

C
Shell

README

Hades-lite

1、技术背景:

分布式拒绝服务 DDoS ,由于攻击简单、容易达到目的、难于防止和追查,逐渐成为常见的攻击方式,其目的是使计算机或网络无法提供正常的服务。随着网络资源的丰富以及带宽的增长,任何人都可能有能力影响网络服务的正常使用。

由于传统x86服务器架构io处理性能问题,导致大流量的ddos攻击发生时,服务处于阻塞或者宕机状态。使得原本通用防护方案的短板凸显出来。传统厂商的防护方案在此又显得笨重昂贵,如果能有一种轻量级的方案,并且兼顾下一代防火墙的优势,将会是一种非常好的解决方案。

2、技术原理:

由于ddos flood 流量大部分为异常流量,为减轻内核处理负载,直接将非法流量在驱动层面直接丢弃。驱动按照NUMA 统一map内存表项分配到不通CPU上面,然后将每core对应的内存从NUMA中进行划分。防止remote memory access。

core0 为物理CPU1,core1为物理CPU2,core2为物理CPU3,core3为物理CPU4。服务器将每颗CPU引出的物理内存作为LocalMemory,访问时采用访问本地内存优先的策略,阻止CPU之间交互报文。同时为阻止CPU之间进行报文交互,PCIE Local Node需要将会话进行隔离。NIC侧内核需要将queue与指定的node进行绑定。申请内存做DMA保证内存访问一致性。

image

网卡队列与内核中断绑定: NIC QueueIrq绑定 网卡队列与中断绑定以后能够保证队列的同源同宿,核与核之间并行处理报文。在实际使用时如果出现频繁中断的情况需要加入中断合并处理,减少中断次数。

驱动层面的处理流程如下图: 核心处理模块流程:

image

Tcp流量举例,当发生攻击时首先检测流量是否在白名单中,如果在然后检测是否超时,没有超时的情况放行,对于出机房方向的流量默认放行,置标志位为永久有效。对于没有在白名单,或者受防护主机列表里面的流量,进入下一级防护流程。并记录当前流量属性。作为后续异常报文识别判断依据。

image

白名单超时报文处理:当流表中流量发生超时以后,检测是否还有会话保持,如果超过一定时间没有会话进来则进行老化处理,对于大流量攻击导致的会话表项超载,需要丢弃此会话。 流量整形:对于正常通过防御流程的报文,如果还是超过本地防御阈值的情况,进行流量整形处理,将超过阈值的流量进行丢弃处理,保证不会因为流量过高导致服务器被打挂。

3、 使用说明

A.给内核网卡驱动打补丁,目前适用内核4.4.104版本

patch -p1 < ${SRC_DIR}/ixgbe-4.4.104.patch

B.将ddos.c 放入如下内核目录中

/linux/linux/drivers/net/ethernet/intel/ixgbe/

C.编译内核

4、物理环境及性能

CPU :4 cores , Memery:16G , NIC:Intel 82599 10G

Performance :64bit 7G

评论

暂无评论