Linux下如何防止大量IP的併發訪問(DDos)

2021-07-04 07:59:19 字數 1799 閱讀 6355



近期在drupal大學上看到乙個問題

問題的**是乙個無效的請求的導致drupal

程序特別消耗伺服器資源,導致cpu超高。由於近期也在研究iptable的ddos策略,所以就研究了一下,大概列舉一下相關的解決方案。

首先,看看iptable解決辦法。

對於要解決syn flood以及ddos等推薦用iptable,比較輕量級,也是iptable比較擅長的。

在網上找了一下,iptable的 recent模組可以解決問題,

先看一下recent的引數,

--name #設定列表名稱,預設default。

--rsource #源位址,此為預設。

--rdest #目的位址

--seconds #指定時間內

--hitcount #命中次數

--set #將位址新增進列表,並更新資訊,包含位址加入的時間戳。

--rcheck #檢查位址是否在列表,以第乙個匹配開始計算時間。

--update #和rcheck類似,以最後乙個匹配計算時間。

--remove #在列表裡刪除相應位址,後跟列表名稱及位址。

最終測試,下面的**可以測試通過:

#!/bin/bash

ipt=/sbin/iptables

# max connection in seconds

seconds=100

# max connections per ip

blockcount=10

# ....

# ..

# default action can be drop or reject

daction="reject"

$ipt

-a input -p tcp --dport

80-i eth0 -m state --state new -m recent --set

$ipt

-a input -p tcp --dport

80-i eth0 -m state --state new -m recent --update

--seconds

$--hitcount$-j

$# ....

# ..

向伺服器傳送超過10次請求,就會出現connect closed的錯誤訊息,表示成功。

測試用瀏覽器即可,因為之後10次請求,多的話可以用ab -n xx -c xx。

其次,varnish

的解決方案。

varnish

的優點是vcl功能強大,之前筆者用varnish做過防止robots抓取的操作,但是vcl如何防止ddos以及同一ip的限制,在網上看到乙個解決方案,就是security.vcl,但是感覺vcl寫得忒忒多,不知道是不是因為功能太複雜的原因。

具體檢視這個vcl

最後,nginx和apache解決方案

nginx和apache是最終的web伺服器,所以安全層面可以放到這裡來做,關於併發訪問的模組。

nginx有乙個 ngx_http_limit_conn_module

apache的模組,limitipconn

後記:阿里雲伺服器自帶ddos防禦機制,所以一般沒問題。因此drupal

方面,可以使用fast404等模組,減少這種404多帶來的cpu壓力。

再順便推薦一下drupal的乙個安全模組,security kit:

drupal與高效能**架構

爬蟲如何獲取大量的ip

網路資訊時代,資料收集是一項繁瑣而複雜的工作。許多人選擇使用爬行動物來幫助他們更好地收集資訊。但是如果爬蟲抓取資料過於頻繁,會給目標 帶來較高的負載,因此 會採取相應的防範措施,使得爬蟲無法順利工作。在使用爬蟲的過程中,web工作者會使用http 來抓取資料。原因是抓取資料的頻率太頻繁,收集 資訊的...

如何防止ip被ban

一 建立高匿ip位址池 1 什麼是虛擬ip 虛擬ip 是指由總部 mdlan 指定總部空閒的一段ip 作為移動使用者接入時的虛擬ip 池。當移動使用者接入後,分配乙個虛擬ip 給移動使用者,移動使用者對總部的任何操作都是以分配的ip 作為源ip 就完全和在總部區域網內一樣。例如使用虛擬ip 的移動接...

linux下和windows下如何防止php木馬

各位網路管理人員經常遇到的乙個問題就是 被別人掛馬,隨著php語言的流行,現在比較多的一種木馬就是php木馬,大家對此也非常的頭疼。現在我給大家講一下在linux和windwos下如何預防php木馬。一 先講一下在linux下如何預防php木馬。1.首先修改httpd.conf,如果你只允許你的ph...