欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)的防DDoS腳本

 更新時間:2011年02月08日 23:24:36   投稿:mdxy-dxy  
實現(xiàn)原理是,查詢netstat的連接數(shù),同IP超過一定連接的用iptables封禁一定時間,自動封禁,自動解封。

這篇博可以說連開場白都可以省掉了,之所以被DDoS,并不是因為惹了瘋狗被追著咬,而是因為VC悲劇之后流量全到simplecd來了。
不僅如此,一些笨蛋們在抓站,一些笨蛋們在用迅雷下載,100Mbps的端口居然已經(jīng)滿負荷運作十幾個小時了,這是什么概念?100Mbps滿負荷1天,流量就是1000G,這樣下去不用多久,我就可以等著上百刀的罰單了,淚飆。
此外,100Mbps的速度使得硬盤都快轉(zhuǎn)不動了,嚴重拖累網(wǎng)站的響應(yīng)速度,卡得我啊真是。想當(dāng)年VC掛了一天,被抓站的家伙們搞得一個禮拜半殘廢狀態(tài)(其中那些家伙包括我在內(nèi),汗)。simplecd就更支撐不了了。
事實上這種人肉DDoS比正常的DDoS更加難以區(qū)分和預(yù)防,不過也就只能盡人事,聽天命了,參考一些文章寫了個python的防止DDoS的腳本,加入cron每分鐘執(zhí)行即可。
實現(xiàn)原理是,查詢netstat的連接數(shù),同IP超過一定連接的用iptables封禁一定時間,自動封禁,自動解封。

復(fù)制代碼 代碼如下:

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日 更新:
同時用這個腳本,外加轉(zhuǎn)移桌面版的站點到一個10M unlimited的地方以后,似乎天下太平了(嗎?)

相關(guān)文章

  • python反編譯學(xué)習(xí)之字節(jié)碼詳解

    python反編譯學(xué)習(xí)之字節(jié)碼詳解

    這篇文章主要給大家介紹了關(guān)于python反編譯學(xué)習(xí)之字節(jié)碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 基于Django集成CAS實現(xiàn)流程詳解

    基于Django集成CAS實現(xiàn)流程詳解

    這篇文章主要介紹了基于Django集成CAS實現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 使用url_helper簡化Python中Django框架的url配置教程

    使用url_helper簡化Python中Django框架的url配置教程

    這篇文章主要介紹了使用url_helper簡化Python中Django框架的url配置教程,需要的朋友可以參考下
    2015-05-05
  • Tensorflow的DataSet的使用詳解

    Tensorflow的DataSet的使用詳解

    本文主要介紹了Tensorflow的DataSet的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 淺談Python 中整型對象的存儲問題

    淺談Python 中整型對象的存儲問題

    這篇文章主要介紹了淺談Python 中整型對象的存儲問題的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • python數(shù)據(jù)可視化之初探?Seaborn

    python數(shù)據(jù)可視化之初探?Seaborn

    Seaborn?是一個基于?Matplotlib?的?Python?數(shù)據(jù)可視化庫,它提供了更高級別的接口,使得創(chuàng)建美觀的統(tǒng)計圖形變得非常簡單,在這篇文章中,我們將討論?Seaborn?的基礎(chǔ)使用方法,包括如何創(chuàng)建各種常見的統(tǒng)計圖形
    2023-07-07
  • python opencv實現(xiàn)證件照換底功能

    python opencv實現(xiàn)證件照換底功能

    這篇文章主要為大家詳細介紹了python opencv實現(xiàn)證件照換底功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python報錯TypeError: Input z must be 2D, not 3D的解決方法

    python報錯TypeError: Input z must be 

    大家好,本篇文章主要講的是python報錯TypeError: Input z must be 2D, not 3D的解決方法,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2021-12-12
  • Python 讀取 YUV(NV12) 視頻文件實例

    Python 讀取 YUV(NV12) 視頻文件實例

    今天小編就為大家分享一篇Python 讀取 YUV(NV12) 視頻文件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 把django中admin后臺界面的英文修改為中文顯示的方法

    把django中admin后臺界面的英文修改為中文顯示的方法

    今天小編就為大家分享一篇把django中admin后臺界面的英文修改為中文顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評論