防DDoS脚本 in python
浏览:6021次 出处信息
这篇博可以说连开场白都可以省掉了,之所以被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() |
24日 更新:
同时用这个脚本,外加转移桌面版的站点到一个10M unlimited的地方以后,似乎天下太平了(吗?)
建议继续学习:
- 一种抵御 DDoS 攻击的 IP 追踪技术 (阅读:6378)
- 浅谈Ddos攻击攻击与防御 (阅读:3873)
- DDOS攻击解决过程 (阅读:2876)
- Nginx过滤hash ddos攻击 (阅读:2479)
- 防DDoS脚本 in python (阅读:2402)
- 学习手册:浅析DDoS的攻击及防御 (阅读:1453)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:从团购网的漏洞看网站安全性问题
后一篇:Linux 系统文件描述符继承带来的危害 >>
文章信息
- 作者:observer 来源: observer专栏杂记
- 标签: DDoS
- 发布时间:2011-01-23 22:31:26
建议继续学习
近3天十大热文
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [52] android 开发入门
- [52] 如何拿下简短的域名
- [51] 图书馆的世界纪录
- [49] Go Reflect 性能
- [49] Oracle MTS模式下 进程地址与会话信
- [47] 【社会化设计】自我(self)部分――欢迎区
- [46] 读书笔记-壹百度:百度十年千倍的29条法则
- [36] 程序员技术练级攻略
- [29] 视觉调整-设计师 vs. 逻辑