拒绝服务攻击原理及解决方法(5) 《list of IPs that made ICMP echo requests, up to ICMP_REQUEST_MAX length》 Incoming realtime ICMP echo requests (pings): 《all ICMP echo requests since the attack was detected》 以上的列表并不是唯一的,可以对它进行调整让他不仅显示是谁请求,而且请求多少次,频率为多少等等。在ICMP flood事件中,ICMP回应请求的报告中将不包括做为tfn2k flood一部分的ICMP包。Ngrep还可以报告检测出来的除smurf之外的攻击类型(TARGA, UDP, SYN, ICMP等)。混合式的攻击在缺省情况下表现为ICMP攻击,除非你屏蔽了向内的ICMP回应请求,这样它就表现为UDP或SYN攻击。这些攻击的结果都是基本类似的。 6、附录- Ngrep.c with tfn2k detection 以下的代码在使用前应当更改一些参数。 #define DNS_REQUEST_MAX 5000 #define ICMP_REQUEST_MAX 1000 通知ngrep最大的请求跟踪数(在检测攻击之前)。传输较为繁忙的网站应当增加这一数值(网络流量较为繁忙的网站DNS的请求数最好在10,000,而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上测试过。 首先您需要在 http://www.packetfactory.net/ngrep/ 下载ngrep,我们测试的是1.35版。 然后在 ftp://ftp.ee.lbl.gov/libpcap.tar.Z下载libpcap 我们使用的是 0.40版。 把文件放在临时文件夹里并解包,tar xvzf libpcap.tar.Z 然后进行编译 cd libpcap-0.4; ./configure; make; make install; make install-incl 假如您遇到了困难,可以参见在libpcap-0.4目录里的README或INSTALL文件。根据我们实验的经验,如果/usr/local/include 和/usr/local/include/net目录在linux系统中不存在的话,安装会失败。加入您在安装时遇到了pcap.h 或 bpf.h的错误时你可以运行 mkdir /usr/local/include; mkdir /usr/local/include/net然后重新运行'make install-incl'。然后我们需要编译ngrep (使用我们修改过的版本)。首先解包: tar xvzf ngrep-1.35.tar.gz 然后进行配置: