主页 > imtoken安卓app下载 > 拒绝服务攻击原理及解决方案(三)

拒绝服务攻击原理及解决方案(三)

imtoken安卓app下载 2023-10-31 05:10:09

5.使用ngrep处理tfn2k攻击

基于使用 DNS 跟踪 tfn2k 驻留程序的原理,出现了一个名为 ngrep 的实用程序。 修改后的 ngrep(见附录)侦听大约五种类型的 tfn2k 拒绝服务攻击(targa3、SYN flood、UDP flood、ICMP flood 和 smurf)以太坊拒绝服务攻击检测,它还有一个用于记录 DNS 和 ICMP 请求的循环缓存。 如果 ngrep 检测到攻击,它将打印出其缓存的内容并继续记录 ICMP 回显请求。 在攻击期间或之后记录 ICMP 回显请求是一种捕捉粗心攻击者的方法,如果攻击者对目标主机执行 ping 命令以发起攻击。 由于攻击者很可能会使用其他服务来验证其攻击效果(例如web),因此其他标准服务也应该有尽可能详细的日志记录。

还需要注意的是,ngrep使用的是监听网络的方式,所以ngrep不能在切换环境下使用。 但是修改后的ngrep不一定要和你的DNS在同一个网段,但是一定要在能监听所有DNS请求的位置。 修改后的 ngrep 也不关心目标地址,您可以将它放在 DMZ 网段上并让它检查穿越该网络的 tfn2k 攻击。 理论上,它也可以很好地检测外部的tfn2k攻击。

运行 ngrep 你会看到:

[root@lughnasad ngrep]# ./ngrep

Ngrep 通过 wiretrip 修改 TFN 检测 /

观看 DNS 服务器:10.0.0.8

接口:eth0 (10.0.0.0/255.255.0.0)

从这里 ngrep 将侦听 tfn2k 攻击,如果检测到攻击,ngrep 将在屏幕上打印:

2000 年 1 月 9 日星期日 17:30:01

检测到 TFN2K UDP 攻击!

最后 (5000) 个 DNS 请求:

“发出 DNS 请求的 IP 列表,最多 DNS_REQUEST_MAX 长度”

最后 (1000) 个 ICMP 回应请求(ping):

“发出 ICMP 回显请求的 IP 列表,最多 ICMP_REQUEST_MAX 长度”

传入的实时 ICMP 回显请求 (ping):

“自检测到攻击以来的所有 ICMP 回显请求”

上面的列表不是唯一的,它可以调整为不仅显示请求者以太坊拒绝服务攻击检测,还显示请求次数、频率等。在 ICMP 泛洪事件中,ICMP 回显请求将不包括属于 tfn2k 泛洪的 ICMP 数据包。 Ngrep 还可以报告检测到的除 smurf 之外的攻击类型(TARGA、UDP、SYN、ICMP 等)。 默认情况下,混合攻击表现为 ICMP 攻击,除非您阻止传入的 ICMP 回显请求以使其表现为 UDP 或 SYN 攻击。 这些攻击的结果基本相似。

6. 附录-带tfn2k检测的Ngrep.c

下面的代码应该在使用之前更改一些参数。

#define DNS_REQUEST_MAX 5000

#define ICMP_REQUEST_MAX 1000

通知 ngrep 要跟踪的最大请求数(在检测到攻击之前)。 传输比较繁忙的网站应该增加这个值(网络流量比较繁忙的网站DNS请求数最好是10000,而ICMP请求是2000-3000)

#define FLOOD_THRESHOLD 20

10秒内有多少同类型的攻击包被用来确认一次真正的攻击。 设计的数字越大,程序被攻击的可能性就越小。 如果你不断收到误报,你应该增加这个值。

#define DNS_SERVER_IP "10.0.0.8"

Ngrep 通过监视 DNS 服务器端口 53 上的 UDP 数据包来跟踪入站 DNS 请求(仅限 UDP)。 因此,ngrep 需要知道您的 DNS 服务器的 IP 地址。

我们的设备可能有多个 DNS 服务器,但我们相信支持单个 DNS 服务器就足以展示这项技术的能力。

#define TTL_THRESHOLD 150

tfn2k SYN flood 攻击使用的 TTL 值通常在 200-255 范围内。 估计攻击者和目标主机之间有50多跳,所以我们只能寻找TTL时间大于150的数据包。如果你认为攻击者在50跳左右,那么你可以修改为TTL 限制。

编译更改后的 ngrep

编译安装非常简单。 您只需将 ngrep.c 文件替换为以下内容之一。 为了方便,我们可以详细说明。

此代码仅在 RedHat 6.1 和 Mandrake 6.5 Linux 上经过测试。

首先需要下载ngrep,我们测试的是1.35版本。

然后在 ftp://ftp.ee.lbl.gov/libpcap.tar.Z 下载 libpcap 我们使用的是 0.40 版本。

将文件放在临时文件夹中并解压,tar xvzf libpcap.tar.Z

然后编译

光盘 libpcap-0.4; 。/配置; 制作; 安装; 使安装包括

如果遇到困难,请参阅 libpcap-0.4 目录中的自述文件或安装文件。 根据我们的实验经验,如果Linux系统中不存在/usr/local/include和/usr/local/include/net目录,安装会失败。如果安装过程中遇到pcap.h或bpf.h错误安装,你可以运行

mkdir /usr/local/include; mkdir /usr/local/include/net 并重新运行“make install-incl”。 然后我们需要编译 ngrep(使用我们修改过的版本)。 首先解压:

tar xvzf ngrep-1.35.tar.gz

然后配置:

cd ngrep; 。/配置

然后将ngrep.c复制到ngrep目录下。 您可以覆盖或备份原始 ngrep.c 文件。 在这里,您应该查看修改后的ngrep.c中的配置,至少您应该将DNS_SERVER_IP更改为您正在使用的DNS的地址。 进行更改后,您可以运行“make”,它会构建 ngrep 应用程序。

修改后的ngrep.c源码

/* 此代码可从以下位置下载 */

/*

* $Id: ngrep.c,v 1.35 1999/10/13 16:44:16 jpr5 Exp $

*

*/

/* Rain Forest Puppy / rfp@wiretrip.net 添加的 TFN 检测代码

和夜轴 / na@wiretrip.net */

/********* TFN 检测定义 ***********************************/

/* 要跟踪多少 DNS 和 ICMP 请求 */

#define DNS_REQUEST_MAX 5000

#define ICMP_REQUEST_MAX 1000

/* 每 10 秒匹配一次泛洪阈值 */

#define FLOOD_THRESHOLD 20

/* 你的 DNS 服务器的 IP */

#define DNS_SERVER_IP "10.9.100.8"

/* TFN syn 在 200-255 之间使用 ttl。 假设少于 50 跳,

用 ttl > TTL_THRESHOLD 标记东西(使用其他标准

以及)*/

#define TTL_THRESHOLD 150

/**************************************************** *** *************/

#包括

#包括

#包括

#ifdef Linux

#包括

#万一

#if 定义(BSD)