关于冰盾 | 使用条款 | 网站地图
 
防DDoS脚本 in python
防DDoS脚本 in python
作者:冰盾防火墙 网站:www.bingdun.com 日期:2014-11-26
 

这篇博可以说连开场白都可以省掉了,之所以被DDoS,并不是因为惹了疯狗被追着咬,而是因为VC悲剧之后流量全到simplecd来了。

 

不仅如此,一些笨蛋们在抓站,一些笨蛋们在用迅雷下载,100Mbps的端口居然已经满负荷运作十几个小时了,这是什么概念?100Mbps满负荷1天,流量就是1000G,这样下去不用多久,我就可以等着上百刀的罚单了,泪飙。

 

此外,100Mbps的速度使得硬盘都快转不动了,严重拖累网站的响应速度,卡得我欲仙欲死啊真是。想当年VC挂了一天,被抓站的家伙们搞得一个礼拜半残废状态(其中那些家伙包括我在内,汗)。simplecd就更支撑不了了。

 

事实上这种人肉DDoS比正常的DDoS更加难以区分和预防,不过也就只能尽人事,听天命了,参考一些文章写了个python的防止DDoS的脚本,加入cron每分钟执行即可。

 

实现原理是,查询netstat的连接数,同IP超过一定连接的用iptables封禁一定时间,自动封禁,自动解封。

 

from subprocess import Popen,PIPE

import re

import time

import sqlite3

 

CONCURRENCY_ALLOWED = 30

OUTDATE_TIME = 86400

 

# initializing database

db = sqlite3.connect("/tmp/ddos.db3")

c = db.cursor()

try:

    c.execute("create table ddos (ip text unique,date integer);")

except:

    print "database exists"

 

# blocking ips has more than CONCURRENCY_ALLOWED connections

pipe = Popen("netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n > /tmp/ddos.txt",shell=True,bufsize=1024,stdout=PIPE).stdout

#ddos = pipe.read()

ddos = open("/tmp/ddos.txt").read()

ct = re.compile(r"(\S+)\s+(\S+).*\n").findall(ddos)

for count,ip in ct:

    if int(count)>CONCURRENCY_ALLOWED and (ip != "127.0.0.1") and (not ip.startswith("192.168")):

        out = Popen("iptables -I INPUT -s %s -j DROP"%ip,shell=True,bufsize=1024,stdout=PIPE).stdout

        print "blocking %s for %s visits" % (ip,count)

        c.execute('replace into ddos values (?,?)',(ip,int(time.time())))

        time.sleep(0.1)

db.commit()

 

# unblocking outdated blockings

c.execute("select * from ddos")

ddos = c.fetchall()

for ip,date in ddos:

    if date + OUTDATE_TIME < time.time():

        c.execute("delete from ddos where ip=?",(ip,))

        print "unblocking %s" % ip

        out = Popen("iptables -D INPUT -s %s -j DROP"%ip,shell=True,bufsize=1024,stdout=PIPE).stdout

        time.sleep(0.1)

db.commit()

目前来说这个脚本的效果是0,封了500多号人了,但是还是满速,真是可怕。

 

24日 更新:

同时用这个脚本,外加转移桌面版的站点到一个10M unlimited的地方以后,似乎天下太平了(吗?)

\

 

摘自 http://obmem.info/?p=813

 

 
最新内容:
Python防止DDos攻击[2014-11-26]
代理服务器及网络安全[2014-11-26]
网络访问攻防战[2014-11-26]
DDoS deflate:自动屏蔽DDOS攻击者IP[2014-11-26]
IPTABLE减轻DDOS的设定[2014-11-26]
TP-LINK无线路由器防蹭网的方法[2014-11-26]
相关内容:

合作伙伴: 黑基网 补天科技 威盾科技 站长下载 新飞金信 北京电信 ZOL应用下载
中华人民共和国增值电信业务经营许可证京ICP备14024464 公安备案号 京1081234 
版权所有©2003-2014 冰盾防火墙  www.BingDun.com 法律声明
总机:(010)51661195