Python 防止 ddos 攻击

标签: python ddos 攻击 | 发表时间:2011-09-05 23:37 | 作者:(author unknown) way
出处:http://simple-is-better.com/

这个周末叫一个烦啊,网站突然打不开了,赶紧的远程连上去看看是啥问题 结果悲剧了,ssh连不上去,总是超时 第一反应就是被ddos了
联系机房结果说流量占满了,更悲剧的是这个机房竟然没有硬件防火墙,没有办法只能跑去机房看看找下IP了
结果一查不得了啊,满屏的连接,唯有先断网查查几个访问比较多的IP
不过这治标不治本的方法只能维持很短时间,没过多久就又不行了,没有硬件防火墙的机房伤不起啊 不过周末机房都不给安排上架,也就不能换机房了,只好先就那样挂着吧

网上有关ddos的攻击说的很详细了,不过在没有硬件防火墙的情况下要防住还真是件麻烦事,就想写个脚本 检测固定时间内的指定IP的请求数,把疑似攻击的源用iptables禁止掉 无意见看到 防DDoS脚本 in python

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()

# 来源:一步一步学python


在微博上关注: 新浪, 腾讯   投稿

最新招聘

更多>>

相关 [python ddos 攻击] 推荐:

Python 防止 ddos 攻击

- way - python.cn(jobs, news)
这个周末叫一个烦啊,网站突然打不开了,赶紧的远程连上去看看是啥问题 结果悲剧了,ssh连不上去,总是超时 第一反应就是被ddos了. 联系机房结果说流量占满了,更悲剧的是这个机房竟然没有硬件防火墙,没有办法只能跑去机房看看找下IP了. 结果一查不得了啊,满屏的连接,唯有先断网查查几个访问比较多的IP.

DDOS攻击解决过程

- - 龙浩的blog
网站受到DDOS的攻击,Inbound最高请求58.85Mb/sec. 尽管一开始解决问题的思路是错误的,但是在这个过程中,我们思考问题的思路对团队的成长有所帮助,我们知道什么方法无法解决问题.      1:nginx端屏蔽访问. 修改nginx配置文件,添加如下记录. 问题:发现请求堵塞在haproxy上面去了.

浅谈Ddos攻击攻击与防御

- - 80sec
三 常见ddos攻击及防御. 在前几天,我们运营的某网站遭受了一次ddos攻击,我们的网站是一个公益性质的网站,为各个厂商和白帽子之间搭建一个平台以传递安全问题等信息,我们并不清楚因为什么原因会遭遇这种无耻的攻击. 因为我们本身并不从事这种类型的攻击,这种攻击技术一般也是比较粗糙的,所以讨论得比较少,但是既然发生了这样的攻击我们觉得分享攻击发生后我们在这个过程中学到得东西,以及针对这种攻击我们的想法才能让这次攻击产生真正的价值,而并不是这样的攻击仅仅浪费大家的时间而已.

DDoS deflate - Linux下防御/减轻DDOS攻击

- - CSDN博客系统运维推荐文章
互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事. 在没有硬防的情况下,寻找软件代替是最直接的方法,比如用iptables,但是iptables不能在自动屏蔽,只能手动屏蔽. 今天要说的就是一款能够自动屏蔽DDOS攻击者IP的软件: DDoS deflate. DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本.

博客服务器遭到DDOS攻击

- 太平犬 - 月光博客
  由于早先我在微博上发布了一些对黑客这个群体的负面看法,今天起博客服务器就遭到黑客DDOS攻击,导致全日服务器都访问故障.   DDOS攻击(分布式拒绝服务攻击)是一种常见的网络攻击,一般都出于商业目的,而这次居然对一个IT科技博客DDOS攻击比较少见. 除此之外,我的很多个人信箱、微博也遭到攻击,手机收到了大量恶意电话和短信的骚扰,拨号号码随机显示.

深入浅出DDoS攻击防御

- - 技术改变世界 创新驱动中国 - 《程序员》官网
DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大、最难防御的攻击之一. 按照发起的方式,DDoS可以简单分为三类. 第一类以力取胜,海量数据包从互联网的各个角落蜂拥而来,堵塞IDC入口,让各种强大的硬件防御系统、快速高效的应急流程无用武之地.

防范 DDoS 攻击的 15 个方法

- - 外刊IT评论
为了对抗 DDoS(分布式拒绝服务)攻击,你需要对攻击时发生了什么有一个清楚的理解. 简单来讲,DDoS 攻击可以通过利用服务器上的漏洞,或者消耗服务器上的资源(例如 内存、硬盘等等)来达到目的. DDoS 攻击主要要两大类: 带宽耗尽攻击和资源耗尽攻击. 为了有效遏制这两种类型的攻击,你可以按照下面列出的步骤来做:1.

DDOS 攻击的防范教程

- - 阮一峰的网络日志
一个多月前,我的个人网站遭受 DDOS 攻击,下线了50多个小时. 这篇文章就来谈谈,如何应对这种攻击. 需要说明的是,我对 DDOS 并不精通,从没想过自己会成为攻击目标. 攻击发生以后,很多素昧平生的朋友提供了各种帮助和建议,让我学到了很多东西. 这里记录的就是对我最有帮助的一些解决方案. 首先,我来解释一下,DDOS 是什么.

安全科普:深入浅出DDoS攻击防御 攻击篇

- - Seay's blog 网络安全博客
DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大、最难防御的攻击之一. 按照发起的方式,DDoS可以简单分为三类. 第一类以力取胜,海量数据包从互联网的各个角落蜂拥而来,堵塞IDC入口,让各种强大的硬件防御系统、快速高效的应急流程无用武之地.

安全科普:深入浅出DDoS攻击防御 防御篇

- - Seay's blog 网络安全博客
谈到DDoS防御,首先就是要知道到底遭受了多大的攻击. 这个问题看似简单,实际上却有很多不为人知的细节在里面. 以SYN Flood为例,为了提高发送效率在服务端产生更多的SYN等待队列,攻击程序在填充包头时,IP首部和TCP首部都不填充可选的字段,因此IP首部长度恰好是20字节,TCP首部也是20字节,共40字节.