另一种方法是利用Iptables预防DOS脚本

#!/bin/bash netstat -an|grep SYN_RECV|awk '{print$5}'|awk -F: '{print$1}'|sort|uniq -c|sort -rn|awk '{if ($1 >1) print $2}' for i in $(cat /tmp/dropip) do /sbin/iptables -A INPUT -s $i -j DROP echo “$i kill at `date`” >>/var/log/ddos done

该脚本会对处于SYN_RECV并且数量达到5个的IP做统计,并且把写到Iptables的INPUT链设置为拒绝。

SYN洪水**是DDOS中最常见的类型之一。是一种利用TCP 协议缺陷,者向被的主机发送大量伪造的TCP连接请求,从而使得被方主机服务器的资源耗尽(CPU 满负荷或内存不足) 的方式。SYN的目标不止于服务器,任何网络设备,都可能会受到这种,针对网络设备的SYN往往会导致整个网络瘫痪。企业遭到SYN该如何防御呢?今天墨者安全就来分享一下如何利用iptables来缓解SYN。**

1、修改等待数
sysctl -w net.ipv4.tcp_max_syn_backlog=2048

2、启用syncookies
sysctl -w net.ipv4.tcp_syncookies=1

3、修改重试次数
sysctl -w net.ipv4.tcp_syn_retries = 0

重传次数设置为0,只要收不到客户端的响应,立即丢弃该连接,默认设置为5次

4、限制单IP并发数
使用iptables限制单个地址的并发连接数量:
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT

5、限制C类子网并发数
使用iptables限制单个c类子网的并发链接数量:
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 24 -j REJECT

6、限制单位时间内连接数
设置如下:

iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --set
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --update --seconds 60 --hitcount 30 -j DROP

7、修改modprobe.conf
为了取得更好的效果,需要修改/etc/modprobe.conf
options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60

作用:记录10000个地址,每个地址60个包,ip_list_tot最大为8100,超过这个数值会导致iptables错误

8、限制单个地址最大连接数
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j D

通过上述这些设置,可以缓解SYN**带来的影响,但如果遭到几百几千G的T级流量洪水,那只能选择像墨者安全那样的商业级的防DDOS服务了。墨者盾高防可以隐藏服务器真实IP,利用新的WAF算法过滤技术,清除DDOS异常流量,保障服务器正常运行**。

CC**原理者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。CC防御策略**

1.取消域名绑定取消域名绑定后Web服务器的CPU能够马上恢复正常状态,通过IP进行访问连接一切正常。但是不足之处也很明显,取消或者更改域名对于别人的访问带来了不变,另外,对于针对IP的CC它是无效的,就算更换域名者发现之后,者也会对新域名实施

2.更改Web端口一般情况下Web服务器通过80端口对外提供服务,因此者实施就以默认的80端口进行,所以,可以修改Web端口达到防CC的目的。

3.IIS屏蔽IP我们通过命令或在查看日志发现了CC的源IP,就可以在IIS中设置屏蔽该IP对Web站点的访问,从而达到防范IIS的目的。

**CC*的防范手段

1.优化代码尽可能使用缓存来存储重复的查询内容,减少重复的数据查询资源开销。减少复杂框架的调用,减少不必要的数据请求和处理逻辑。程序执行中,及时释放资源,比如及时关闭mysql连接,及时关闭memcache连接等,减少空连接消耗。

2.限制手段对一些负载较高的程序增加前置条件判断,可行的判断方法如下:必须具有网站签发的session信息才可以使用(可简单阻止程序发起的集中请求);必须具有正确的referer(可有效防止嵌入式代码的***);禁止一些客户端类型的请求(比如一些典型的不良蜘蛛特征);同一session多少秒内只能执行一次。

3.完善日志尽可能完整保留访问日志。日志分析程序,能够尽快判断出异常访问,比如单一ip密集访问;比如特定url同比请求激增。

**一、Dos*(Denial of Service attack)

是一种针对服务器的能够让服务器呈现静止状态的**方式。有时候也叫服务停止或拒绝服务。其原理就是发送大量的合法请求到服务器,服务器无法分辨这些请求是正常请求还是请求,所以都会照单全收。海量的请求会造成服务器停止工作或拒绝服务的状态。这就是Dos*

**二、DDOS*****

概念
分布式拒绝服务**(Distributed Denial of Service),简单说就是发送大量请求是使服务器瘫痪。DDos
是在DOS基础上的,可以通俗理解,dos是单挑,而ddos是群殴,因为现代技术的发展,dos的杀伤力降低,所以出现了DDOS,者借助公共网络,将大数量的计算机设备联合起来,向一个或多个目标进行。**

案例

SYN Flood ,简单说一下tcp三次握手,客户端服务器发出请求,请求建立连接,然后服务器返回一个报文,表明请求以被接受,然后客户端也会返回一个报文,最后建立连接。那么如果有这么一种情况,者伪造ip地址,发出报文给服务器请求连接,这个时候服务器接受到了,根据tcp三次握手的规则,服务器也要回应一个报文,可是这个ip是伪造的,报文回应给谁呢,第二次握手出现错误,第三次自然也就不能顺利进行了,这个时候服务器收不到第三次握手时客户端发出的报文,又再重复第二次握手的操作。如果者伪造了大量的ip地址并发出请求,这个时候服务器将维护一个非常大的半连接等待列表,占用了大量的资源,最后服务器瘫痪。
CC,在应用层http协议上发起,模拟正常用户发送大量请求直到该网站拒绝服务为止。

**被*的原因

服务器带宽不足,不能挡住者的流量