本文目录一览:
如何测试是否被DDOS攻击
你们公司是adsl拨号还是固定ip上网?如果是ADSL拨号的话,ddos攻击的可能性不大,因为adsl拨号的每次上网ip都不同,除非是他每次窃取到你的上网ip而进行的攻击,不过这种劳心又老力。如果是固定ip的话,就需要看看你们4M的带宽使用情况如何?或者是你们有网站服务器就都会有可能存在ddos攻击的可能性。
近年常用的几种DDOS攻击检测方法
DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。 这种攻击方式可分为以下几种:
通过使网络过载来干扰甚至阻断正常的网络通讯;
通过向服务器提交大量请求,使服务器超负荷;
阻断某一用户访问服务器;
阻断某服务与特定系统或个人的通讯。
IP Spoofing
IP欺骗攻击是一种黑客通过向服务端发送虚假的包以欺骗服务器的做法。具体说,就是将包中的源IP地址设置为不存在或不合法的值。服务器一旦接受到该包便会返回接受请求包,但实际上这个包永远返回不到来源处的计算机。这种做法使服务器必需开启自己的监听端口不断等待,也就浪费了系统各方面的资源。
LAND attack
这种攻击方式与SYN floods类似,不过在LAND attack攻击包中的原地址和目标地址都是攻击对象的IP。这种攻击会导致被攻击的机器死循环,最终耗尽资源而死机。
ICMP floods
ICMPfloods是通过向未良好设置的路由器发送广播信息占用系统资源的做法。
Application
与前面叙说的攻击方式不同,Application level floods主要是针对应用软件层的,也就是高于OSI的。它同样是以大量消耗系统资源为目的,通过向IIS这样的网络服务程序提出无节制的资源申请来迫害正常的网络服务。
怎么判断服务器是否被DDoS恶意攻击?
怀疑遇到攻击情况,首先要看看服务器上面的情况,首先top一下,看看服务器负载,如果负载不高,那么基本可以判断不是cc类型的攻击,再输入命令
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
查看下网络连接的情况,会得到下面这些结果:
TCP/IP协议使用三次握手来建立连接,过程如下:
1、第一次握手,客户端发送数据包syn到服务器,并进入SYN_SEND状态,等待回复
2、第二次握手,服务器发送数据报syn/ack,给客户机,并进入SYN_RECV状态,等待回复
3、第三次握手,客户端发送数据包ACK给客户机,发送完成后,客户端和服务器进入ESTABLISHED状态,链接建立完成
如果ESTABLISHED非常地高,那么可能是有人在恶意攻击,进一步判断,可以把下面命令保存为脚本执行一下:
for i in `netstat -an | grep -i ':80 '|grep 'EST' | awk '{print $5}' | cut -d : -f 1 | sort | uniq -c | awk '{if($1 50) {print $2}}'`
do
echo $i
echo $i /tmp/evilip
done
如果输出了多个结果,那么可能表示有人在企图进行DDOS攻击,想用TCP连接来拖死你的服务器,输出的ip就是发出请求的服务器地址,并且保存在了/tmp/evilip里面。如果没有结果,可以调整一下阈值,把50改成40试一试,对策我们后面再说,这里只讲判断。如果SYN_RECV非常高,那么表示受到了SYN洪水攻击。
SYN洪水是利用TCP/IP协议的设计缺陷来进行攻击的,采用一些策略以及配置可以适当的降低攻击的影响,但并不能完全消除。
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_syn_retries = 0
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
tcp_syncookies设置为1表示启用syncookie,可以大大降低SYN攻击的影响,但是会带来新的安全缺陷。
tcp_syn_retries 表示syn重试次数,重传次数设置为0,只要收不到客户端的响应,立即丢弃该连接,默认设置为5次。
tcp_max_syn_backlog表示syn等待队列,改小这个值,使得SYN等待队列变短,减少对系统以及网络资源的占用。
TCP连接攻击算是比较古老的了,防御起来也相对比较简单,主要是利用大量的TCP连接来消耗系统的网络资源,通常同一个IP会建立数量比较大的TCP连接,并且一直保持。应对方法也比较简单,可以将以下命令保存为脚本,定时ban掉那些傀儡机ip
for i in `netstat -an | grep -i ':80 '|grep 'EST' | awk '{print $5}' | cut -d : -f 1 | sort | uniq -c | awk '{if($1 50) {print $2}}'`
do
echo $i
echo $i /tmp/banip
/sbin/iptables -A INPUT -p tcp -j DROP -s $i
done
banip文件里面记录了所有被ban的ip地址信息,方面进行反渗透以及证据保存等等。为了更好地加固系统,我们可以使用iptables来限制一下,单个ip的最大连接数。
当攻击者的资源非常的多,上面这些方法限制可能就没有什么防护效果了,面对大流量DDoS攻击还是要考虑采用多机负载或者选择墨者安全高防来应对了,一般来说多机负载的成本可能更高,所以大部分人还是选择墨者高防硬防产品来防御。
如何检测ddos攻击
要检测DDoS攻击程序的存在,可以有2种方法:
1、通常,我们可以使用文件系统扫描工具来确定在服务器文件系统上是否存在已知的DDoS攻击程序。
同病毒软件一样,每当有新的DDoS发明出来,当前的DDoS工具就将过时,或者它对现存的DDoS进行修改而避开检查。所以,要选择最近更新的扫描工具才能检测到最新的DDoS攻击程序。
FBI提供了一个工具叫做"find_ddos",用于检测一些已知的拒绝服务工具,包括trinoo进程、trinoo主人、加强的tfn进程、tfn客户程序、tfn2k客户程序和tfn-rush客户程序。
请注意,FBI的这个工具并不能保证捕获所有的DDoS工具。如果侵入者安装了一个根文件包,那么find_ddos程序就有可能无法处理它。
2、还可使用手工方法对起源于本地网络中的DDoS活动进行双重检查。
在Web服务器与Internet或者上游ISP连接之间的防火墙上建立一个滤波器,以寻找spoofed (哄骗)信息包,也就是那些不是从你自己的网络上生成的信息包。这就是所谓的出口过滤。如果在你的网络上正在生成spoofed信息包,那么这很可能是一个DDoS程序生成的。