centos-rhel服务器相关 / linux / 未分类 · 2016年7月12日

Linux被DDOS&CC攻击解决实例-iptables(转)

1.定义
cc攻击
CC = Challenge Collapsar,意为“挑战黑洞”
攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS,和伪装就叫:cc(ChallengeCollapsar)
challenge [chal·lenge || ‘tʃælɪndʒ]
n. 挑战, 盘问 v. 向…挑战, 怀疑, 要求; 挑战, 反对
collapse [col·lapse || kə’læps]
n. 倒塌; 失败; 崩溃; 压缩, 现有图书馆下属子目录或图书馆的隐藏 (计算机用语) ,v. 倒塌; 瓦解; 崩溃; 使倒塌
2.区别
什么是DDoS攻击?
DDoS攻击就是分布式的拒绝服务攻击,DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,随着计算机与网络技术的发展,DoS攻击的困难程度加大了。于是就产生了DDoS攻击,它的原理就很简单:计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用,那么DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。常用的DDoS软件有:LOIC。
什么是CC攻击?
1.CC攻击来的IP都是真实的,分散的;
2.CC攻击的数据包都是正常的数据包;
3.CC攻击的请求,全都是有效的请求,无法拒绝的请求;
4.因为cc攻击的是网页,服务器什么都可以连接,ping也没问题,但是网页就是访问不;
5.但是iis一开服务器一会就死,而且被攻击后就老丢包。不知道是不是cc攻击,syn 攻击频率才78ack攻击频率663.
两者区别:
DDoS是针对IP的攻击,而CC攻击的是网页。
3.Linux被DDOS&CC攻击解决实例(转)
背景
这两天一个客户反映自己的网站经常出现mysql 1040错误,他的在线用户才不到一千,mysql配置也没问题,vps用的时linode160+刀一个月的。
没理由出现这种情况,于是,我进行了一系列的排查。top了一下,mysqld跑到了900%多。
0x01 解决方案&思路
我怀疑是CC攻击,鉴于系统是centos,我运行了下面的这两行命令。
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],i}' |sort -rn|head -n20
把请求过多的IP记录下来。
174.127.94.*
199.27.128.*
199.27.133.*
开始封禁IP,具体可以看我下面运行的命令。本文主要是采用iptables进行封禁,iptables使用方法请见:Iptables入门教程
http://drops.wooyun.org/tips/1424
iptables -I INPUT -s 174.127.94.0/16 -j DROP
iptables -I INPUT -s 199.27.128.0/16 -j DROP
iptables -I INPUT -s 199.27.133.0/16 -j DROP
iptables -I INPUT -s 193.1.0.0/8 -j DROP #【慎用封禁整个段】

运行上面这些命令之后我们已经完成封禁操作了,不过还得保存一下,如果不保存的话重启系统之后上面设定的规则会消失。
service iptables save
运行下面这行命令,来查看谁的访问量最高(需要服务器安装tcpdump)
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
1000 packets captured
1000 packets received by filter
0 packets dropped by kernel
1420 IP 174.7.7.*
然后将packets过多的IP记录下来,用上面的方法封禁。
运行
service iptables save
保存然后重启
iptables service iptables restart
这一步建议多进行几次,发现异常IP用上面的办法封禁。如果出现误封可以参考下面这行解封命令进行解封
iptables -D INPUT -s 222.142.2.0/16 -j DROP
0x02 常用命令
封单个IP的命令是:
iptables -I INPUT -s 211.1.0.0 -j DROP
封IP段的命令是:
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

封整个B段的命令是:
iptables -I INPUT -s 211.0.0.0/8 -j DROP
封几个段的命令是:
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP

from
http://drops.wooyun.org/tips/2457