什么是DDoS攻击?
DDoS(Distributed Denial of Service)是分布式拒绝服务攻击的英文缩写,它是一种利用多台计算机向指定目标服务器发送攻击数据包,导致目标服务器系统资源或带宽耗尽,从而对正常业务请求出现拒绝服务的攻击行为。
常见的DDoS攻击分为如下两类:
协议缺陷型
利用TCP,DNS等互联网协议的缺陷,向服务器发送无用却必须处理的数据包来抢占服务器系统资源,从而达到影响正常业务服务的目的。常见的攻击类型包括:SYNFLOOD,ACKFLOOD,DNSFLOOD等。
流量阻塞型
通过发送大量满负载垃圾数据包到目标服务器,使链路带宽耗尽,从而达到影响正常业务服务的目的。常见的攻击类型包括UDPFLOOD,ICMPFLOOD等。
DDoS攻击的影响
分布式拒绝服务攻击将会使目标服务器承载的业务处于不可用状态,直接影响业务的收入或口碑。对于B/S类业务,用户无法打开网页,如www.qq.com;对于C/S类业务,如网游,就是在线用户大量掉线,同时用户无法成功登录游戏。
简单判断方法:网站出现访问无响应、长时间连接不成功、网站流量异常
使用nerstat命令检查是否被ddos
查看所有80端口的连接数
1 | netstat -nat|grep -i "80"|wc -l |
对连接的IP按连接数量进行排序
1 | netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n |
查看TCP连接状态
1 2 3 4 5 6 | netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}' netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}' netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}' netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c |
查看80端口连接数最多的20个IP
1 2 | netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20 netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn|head -n20 |
用tcpdump嗅探80端口的访问看看谁最高
1 | tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20 |
查找较多time_wait连接
1 | netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20 |
查找较多的SYN连接
1 | netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more |
封单个IP的命令是:
1 | iptables -I INPUT -s 211.1.0.0 -j DROP |
封IP段的命令是:
1 2 3 | iptables -I INPUT -s 211.1.0.0/16 -j DROP iptables -I INPUT -s 211.2.0.0/16 -j DROP iptables -I INPUT -s 211.3.0.0/16 -j DROP |
封整个段的命令是:
1 | iptables -I INPUT -s 211.0.0.0/8 -j DROP |
封几个段的命令是:
1 2 | iptables -I INPUT -s 61.37.80.0/24 -j DROP iptables -I INPUT -s 61.37.81.0/24 -j DROP |
想在服务器启动自运行的话有三个方法:
1.把它加到/etc/rc.local中
2.可以把你当前的iptables规则放到/etc/sysconfig/iptables中,系统启动iptables时自动执行.
1 | iptables-save >/etc/sysconfig/iptables |
3.service iptables save 也可以把你当前的iptables规则放/etc/sysconfig/iptables中,系统启动iptables时自动执行.
后两种更好此,一般iptables服务会在network服务之前启来,更安全.
解封的话:
1 | iptables -D INPUT -s IP地址 -j REJECT |
全清掉了
1 | iptables -F |
关于iptable,可以参照Centos下lnmp正确iptables配置规则
Linux iptables 配置详解
评论0