自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用Apache服務(wù)器模塊保護您的網(wǎng)站免受應(yīng)用層DOS攻擊

運維 系統(tǒng)運維
有多種可以導(dǎo)致網(wǎng)站下線的攻擊方法,比較復(fù)雜的方法要涉及數(shù)據(jù)庫和編程方面的技術(shù)知識。一個更簡單的方法被稱為“拒絕服務(wù)”(DOS)攻擊。這個攻擊方法的名字來源于它的意圖:使普通客戶或網(wǎng)站訪問者的正常服務(wù)請求被拒絕。

[[219440]]

有多種可以導(dǎo)致網(wǎng)站下線的攻擊方法,比較復(fù)雜的方法要涉及數(shù)據(jù)庫和編程方面的技術(shù)知識。一個更簡單的方法被稱為“拒絕服務(wù)Denial Of Service”(DOS)攻擊。這個攻擊方法的名字來源于它的意圖:使普通客戶或網(wǎng)站訪問者的正常服務(wù)請求被拒絕。

一般來說,有兩種形式的 DOS 攻擊:

  1. OSI 模型的三、四層,即網(wǎng)絡(luò)層攻擊
  2. OSI 模型的七層,即應(yīng)用層攻擊

第一種類型的 DOS 攻擊——網(wǎng)絡(luò)層,發(fā)生于當大量的垃圾流量流向網(wǎng)頁服務(wù)器時。當垃圾流量超過網(wǎng)絡(luò)的處理能力時,網(wǎng)站就會宕機。

第二種類型的 DOS 攻擊是在應(yīng)用層,是利用合法的服務(wù)請求,而不是垃圾流量。當頁面請求數(shù)量超過網(wǎng)頁服務(wù)器能承受的容量時,即使是合法訪問者也將無法使用該網(wǎng)站。

本文將著眼于緩解應(yīng)用層攻擊,因為減輕網(wǎng)絡(luò)層攻擊需要大量的可用帶寬和上游提供商的合作,這通常不是通過配置網(wǎng)絡(luò)服務(wù)器就可以做到的。

通過配置普通的網(wǎng)頁服務(wù)器,可以保護網(wǎng)頁免受應(yīng)用層攻擊,至少是適度的防護。防止這種形式的攻擊是非常重要的,因為 Cloudflare 最近 報告稱 網(wǎng)絡(luò)層攻擊的數(shù)量正在減少,而應(yīng)用層攻擊的數(shù)量則在增加。

本文將介紹如何使用 zdziarski 開發(fā)的 Apache2 的模塊 mod_evasive。

另外,mod_evasive 會阻止攻擊者通過嘗試數(shù)百個用戶名和密碼的組合來進行猜測(即暴力攻擊)的企圖。

mod_evasive 會記錄來自每個 IP 地址的請求的數(shù)量。當這個數(shù)字超過相應(yīng) IP 地址的幾個閾值之一時,會出現(xiàn)一個錯誤頁面。錯誤頁面所需的資源要比一個能夠響應(yīng)合法訪問的在線網(wǎng)站少得多。

 

在 Ubuntu 16.04 上安裝 mod_evasive

Ubuntu 16.04 默認的軟件庫中包含了 mod_evasive,名稱為 “libapache2-mod-evasive”。您可以使用 apt-get 來完成安裝:

  1. apt-get update
  2. apt-get upgrade
  3. apt-get install libapache2-mod-evasive

現(xiàn)在我們需要配置 mod_evasive。

它的配置文件位于 /etc/apache2/mods-available/evasive.conf。默認情況下,所有模塊的設(shè)置在安裝后都會被注釋掉。因此,在修改配置文件之前,模塊不會干擾到網(wǎng)站流量。

  1. <IfModule mod_evasive20.c>
  2. #DOSHashTableSize 3097
  3. #DOSPageCount 2
  4. #DOSSiteCount 50
  5. #DOSPageInterval 1
  6. #DOSSiteInterval 1
  7. #DOSBlockingPeriod 10
  8.  
  9. #DOSEmailNotify you@yourdomain.com
  10. #DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
  11. #DOSLogDir "/var/log/mod_evasive"
  12. </IfModule>

第一部分的參數(shù)的含義如下:

  • DOSHashTableSize - 正在訪問網(wǎng)站的 IP 地址列表及其請求數(shù)的當前列表。
  • DOSPageCount - 在一定的時間間隔內(nèi),每個頁面的請求次數(shù)。時間間隔由 DOSPageInterval 定義。
  • DOSPageInterval - mod_evasive 統(tǒng)計頁面請求次數(shù)的時間間隔。
  • DOSSiteCount - 與 DOSPageCount 相同,但統(tǒng)計的是來自相同 IP 地址對網(wǎng)站內(nèi)任何頁面的請求數(shù)量。
  • DOSSiteInterval - mod_evasive 統(tǒng)計網(wǎng)站請求次數(shù)的時間間隔。
  • DOSBlockingPeriod - 某個 IP 地址被加入黑名單的時長(以秒為單位)。

如果使用上面顯示的默認配置,則在如下情況下,一個 IP 地址會被加入黑名單:

  • 每秒請求同一頁面超過兩次。
  • 每秒請求 50 個以上不同頁面。

如果某個 IP 地址超過了這些閾值,則被加入黑名單 10 秒鐘。

這看起來可能不算久,但是,mod_evasive 將一直監(jiān)視頁面請求,包括在黑名單中的 IP 地址,并重置其加入黑名單的起始時間。只要一個 IP 地址一直嘗試使用 DOS 攻擊該網(wǎng)站,它將始終在黑名單中。

其余的參數(shù)是:

  • DOSEmailNotify - 用于接收 DOS 攻擊信息和 IP 地址黑名單的電子郵件地址。
  • DOSSystemCommand - 檢測到 DOS 攻擊時運行的命令。
  • DOSLogDir - 用于存放 mod_evasive 的臨時文件的目錄。

 

配置 mod_evasive

默認的配置是一個很好的開始,因為它不會阻塞任何合法的用戶。取消配置文件中的所有參數(shù)(DOSSystemCommand 除外)的注釋,如下所示:

  1. <IfModule mod_evasive20.c>
  2. DOSHashTableSize 3097
  3. DOSPageCount 2
  4. DOSSiteCount 50
  5. DOSPageInterval 1
  6. DOSSiteInterval 1
  7. DOSBlockingPeriod 10
  8.  
  9. DOSEmailNotify JohnW@example.com
  10. #DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
  11. DOSLogDir "/var/log/mod_evasive"
  12. </IfModule>

必須要創(chuàng)建日志目錄并且要賦予其與 apache 進程相同的所有者。這里創(chuàng)建的目錄是 /var/log/mod_evasive ,并且在 Ubuntu 上將該目錄的所有者和組設(shè)置為 www-data ,與 Apache 服務(wù)器相同:

  1. mkdir /var/log/mod_evasive
  2. chown www-data:www-data /var/log/mod_evasive

在編輯了 Apache 的配置之后,特別是在正在運行的網(wǎng)站上,在重新啟動或重新加載之前,最好檢查一下語法,因為語法錯誤將影響 Apache 的啟動從而使網(wǎng)站宕機。

Apache 包含一個輔助命令,是一個配置語法檢查器。只需運行以下命令來檢查您的語法:

  1. apachectl configtest

如果您的配置是正確的,會得到如下結(jié)果:

  1. Syntax OK

但是,如果出現(xiàn)問題,您會被告知在哪部分發(fā)生了什么錯誤,例如:

  1. AH00526: Syntax error on line 6 of /etc/apache2/mods-enabled/evasive.conf:
  2. DOSSiteInterval takes one argument, Set site interval
  3. Action 'configtest' failed.
  4. The Apache error log may have more information.

如果您的配置通過了 configtest 的測試,那么這個模塊可以安全地被啟用并且 Apache 可以重新加載:

  1. a2enmod evasive
  2. systemctl reload apache2.service

mod_evasive 現(xiàn)在已配置好并正在運行了。

 

測試

為了測試 mod_evasive,我們只需要向服務(wù)器提出足夠的網(wǎng)頁訪問請求,以使其超出閾值,并記錄來自 Apache 的響應(yīng)代碼。

一個正常并成功的頁面請求將收到如下響應(yīng):

  1. HTTP/1.1 200 OK

但是,被 mod_evasive 拒絕的將返回以下內(nèi)容:

  1. HTTP/1.1 403 Forbidden

以下腳本會盡可能迅速地向本地主機(127.0.0.1,localhost)的 80 端口發(fā)送 HTTP 請求,并打印出每個請求的響應(yīng)代碼。

你所要做的就是把下面的 bash 腳本復(fù)制到一個文件中,例如 mod_evasive_test.sh

  1. #!/bin/bash
  2. set -e
  3.  
  4. for i in {1..50}; do
  5. curl -s -I 127.0.0.1 | head -n 1
  6. done

這個腳本的部分含義如下:

  • curl - 這是一個發(fā)出網(wǎng)絡(luò)請求的命令。
    • -s - 隱藏進度表。
    • -I - 僅顯示響應(yīng)頭部信息。
  • head - 打印文件的第一部分。
    • -n 1 - 只顯示第一行。

然后賦予其執(zhí)行權(quán)限:

  1. chmod 755 mod_evasive_test.sh

在啟用 mod_evasive 之前,腳本運行時,將會看到 50 行 “HTTP / 1.1 200 OK” 的返回值。

但是,啟用 mod_evasive 后,您將看到以下內(nèi)容:

  1. HTTP/1.1 200 OK
  2. HTTP/1.1 200 OK
  3. HTTP/1.1 403 Forbidden
  4. HTTP/1.1 403 Forbidden
  5. HTTP/1.1 403 Forbidden
  6. HTTP/1.1 403 Forbidden
  7. HTTP/1.1 403 Forbidden
  8. ...

前兩個請求被允許,但是在同一秒內(nèi)第三個請求發(fā)出時,mod_evasive 拒絕了任何進一步的請求。您還將收到一封電子郵件(郵件地址在選項 DOSEmailNotify 中設(shè)置),通知您有 DOS 攻擊被檢測到。

mod_evasive 現(xiàn)在已經(jīng)在保護您的網(wǎng)站啦! 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2021-11-29 18:10:30

網(wǎng)絡(luò)攻擊數(shù)據(jù)安全數(shù)據(jù)泄露

2019-10-29 05:00:58

黑客攻擊網(wǎng)絡(luò)安全

2009-08-05 22:19:15

2014-08-11 16:39:25

2018-05-04 12:22:47

2021-04-06 14:24:19

物聯(lián)網(wǎng)安全網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)威脅

2018-08-22 13:35:37

2018-01-31 19:00:32

2021-11-14 11:53:05

Linux 系統(tǒng)攻防Linux 系統(tǒng)

2023-10-04 19:01:44

微服務(wù)雪崩故障

2023-01-05 09:15:40

2014-09-22 09:52:06

2014-12-15 11:23:00

Docker Comp分布式應(yīng)用容器應(yīng)用

2022-03-04 10:44:01

堆噴射惡意代碼

2009-10-14 10:16:45

2019-11-28 08:03:39

網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全數(shù)據(jù)安全

2022-06-13 10:18:13

物聯(lián)網(wǎng)IoT

2021-11-09 15:16:49

物聯(lián)網(wǎng)物理資產(chǎn)IoT

2013-08-26 15:38:36

2012-05-21 10:16:53

點贊
收藏

51CTO技術(shù)棧公眾號