搜尋
首頁系統教程Linuxevasive 模組保護您的網站免受應用程式層 DOS 攻擊

evasive 模組保護您的網站免受應用程式層 DOS 攻擊

Apr 30, 2024 pm 05:34 PM
linuxapachelinux教程紅帽linux系統linux指令linux認證紅帽linuxlinux視頻

有多種可以導致網站下線的攻擊方法,比較複雜的方法要涉及資料庫和程式設計方面的技術知識。一個更簡單的方法稱為「拒絕服務Denial Of Service」(DOS)攻擊。這個攻擊方法的名字來自於它的意圖:使普通客戶或網站訪客的正常服務請求被拒絕。

evasive 模块保护您的网站免受应用层 DOS 攻击

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

  1. OSI 模型的三、四層,即網路層攻擊
  2. OSI 模型的七層,即應用層攻擊

第一種類型的 DOS 攻擊-網路層,發生於當大量的垃圾流量流向網頁伺服器時。當垃圾流量超過網路的處理能力時,網站就會宕機。

第二種類型的 DOS 攻擊是在應用程式層,是利用合法的服務請求,而不是垃圾流量。當頁面請求數量超過網頁伺服器所能承受的容量時,即使是合法訪客也將無法使用網站。

本文將著眼於緩解應用層攻擊,因為減輕網路層攻擊需要大量的可用頻寬和上游供應商的合作,這通常不是透過配置網路伺服器就可以做到的。

透過設定普通的網頁伺服器,可以保護網頁免受應用層攻擊,至少是適度的防護。防止這種形式的攻擊是非常重要的,因為Cloudflare[1] 最近報告指出[2] 網路層攻擊的數量正在減少,而應用層攻擊的數量則在增加。

本文將介紹如何使用 zdziarski[3] 開發的 Apache2 的模組 mod_evasive[4]

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

mod_evasive 會記錄來自每個 IP 位址的請求的數量。當這個數字超過對應 IP 位址的幾個閾值之一時,會出現一個錯誤頁面。錯誤頁面所需的資源要比一個能夠響應合法訪問的線上網站少得多。

在 Ubuntu 16.04 上安裝 mod_evasive

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

apt-get update
apt-get upgrade
apt-get install libapache2-mod-evasive

現在我們需要設定 mod_evasive。

它的設定檔位於 /etc/apache2/mods-available/evasive.conf。預設情況下,所有模組的設定在安裝後都會被註解掉。因此,在修改設定檔之前,模組不會幹擾到網站流量。

<ifmodule mod_evasive20.c>
   #DOSHashTableSize    3097
   #DOSPageCount        2
   #DOSSiteCount        50
   #DOSPageInterval     1
   #DOSSiteInterval     1
   #DOSBlockingPeriod   10

   #DOSEmailNotify      you@yourdomain.com
   #DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"
   #DOSLogDir           "/var/log/mod_evasive"
</ifmodule>

第一部分的參數的意義如下:

  • DOSHashTableSize - 正在存取網站的 IP 位址清單及其請求數的目前清單。
  • DOSPageCount - 在一定的時間間隔內,每個頁面的請求次數。時間間隔由 DOSPageInterval 定義。
  • DOSPageInterval - mod_evasive 統計頁面請求次數的時間間隔。
  • DOSSiteCount - 與 DOSPageCount 相同,但統計的是來自相同 IP 位址對網站內任何頁面的請求數量。
  • DOSSiteInterval - mod_evasive 統計網站請求次數的時間間隔。
  • DOSBlockingPeriod - 某個 IP 位址被加入黑名單的時長(以秒為單位)。

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

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

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

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

其餘的參數是:

  • DOSEmailNotify - 用於接收 DOS 攻擊訊息和 IP 位址黑名單的電子郵件位址。
  • DOSSystemCommand - 偵測到 DOS 攻擊時執行的命令。
  • DOSLogDir - 用於存放 mod_evasive 的暫存檔案的目錄。
配置 mod_evasive

默认的配置是一个很好的开始,因为它不会阻塞任何合法的用户。取消配置文件中的所有参数(DOSSystemCommand 除外)的注释,如下所示:

<ifmodule mod_evasive20.c>
   DOSHashTableSize   3097
   DOSPageCount       2
   DOSSiteCount       50
   DOSPageInterval    1
   DOSSiteInterval    1
   DOSBlockingPeriod  10

   DOSEmailNotify       JohnW@example.com
   #DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"
   DOSLogDir            "/var/log/mod_evasive"
</ifmodule>

必须要创建日志目录并且要赋予其与 apache 进程相同的所有者。这里创建的目录是 /var/log/mod_evasive ,并且在 Ubuntu 上将该目录的所有者和组设置为 www-data ,与 Apache 服务器相同:

mkdir /var/log/mod_evasive
chown www-data:www-data /var/log/mod_evasive

在编辑了 Apache 的配置之后,特别是在正在运行的网站上,在重新启动或重新加载之前,最好检查一下语法,因为语法错误将影响 Apache 的启动从而使网站宕机。

Apache 包含一个辅助命令,是一个配置语法检查器。只需运行以下命令来检查您的语法:

apachectl configtest

如果您的配置是正确的,会得到如下结果:

Syntax OK

但是,如果出现问题,您会被告知在哪部分发生了什么错误,例如:

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

如果您的配置通过了 configtest 的测试,那么这个模块可以安全地被启用并且 Apache 可以重新加载:

a2enmod evasive
systemctl reload apache2.service

mod_evasive 现在已配置好并正在运行了。

测试

为了测试 mod_evasive,我们只需要向服务器提出足够的网页访问请求,以使其超出阈值,并记录来自 Apache 的响应代码。

一个正常并成功的页面请求将收到如下响应:

HTTP/1.1 200 OK

但是,被 mod_evasive 拒绝的将返回以下内容:

HTTP/1.1 403 Forbidden

以下脚本会尽可能迅速地向本地主机(127.0.0.1,localhost)的 80 端口发送 HTTP 请求,并打印出每个请求的响应代码。

你所要做的就是把下面的 bash 脚本复制到一个文件中,例如 mod_evasive_test.sh

#!/bin/bash
set -e

for i in {1..50}; do
        curl -s -I 127.0.0.1 | head -n 1
done

这个脚本的部分含义如下:

  • curl - 这是一个发出网络请求的命令。
    • -s - 隐藏进度表。
    • -I - 仅显示响应头部信息。
  • head - 打印文件的第一部分。
    • -n 1 - 只显示第一行。

然后赋予其执行权限:

chmod 755 mod_evasive_test.sh

在启用 mod_evasive 之前,脚本运行时,将会看到 50 行 “HTTP / 1.1 200 OK” 的返回值。

但是,启用 mod_evasive 后,您将看到以下内容:

HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
...

前两个请求被允许,但是在同一秒内第三个请求发出时,mod_evasive 拒绝了任何进一步的请求。您还将收到一封电子邮件(邮件地址在选项 DOSEmailNotify 中设置),通知您有 DOS 攻击被检测到。

mod_evasive 现在已经在保护您的网站啦!


以上是evasive 模組保護您的網站免受應用程式層 DOS 攻擊的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:Linux就该这么学。如有侵權,請聯絡admin@php.cn刪除
Linux管理員的薪水是多少?Linux管理員的薪水是多少?Apr 17, 2025 am 12:24 AM

Linux管理員的平均年薪在美國為75,000至95,000美元,歐洲為40,000至60,000歐元。提升薪資可以通過:1.持續學習新技術,如雲計算和容器技術;2.積累項目經驗並建立Portfolio;3.建立職業網絡,拓展人脈。

Linux的主要目的是什麼?Linux的主要目的是什麼?Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

互聯網在Linux上運行嗎?互聯網在Linux上運行嗎?Apr 14, 2025 am 12:03 AM

互聯網運行不依賴單一操作系統,但Linux在其中扮演重要角色。 Linux廣泛應用於服務器和網絡設備,因其穩定性、安全性和可擴展性受歡迎。

Linux操作是什麼?Linux操作是什麼?Apr 13, 2025 am 12:20 AM

Linux操作系統的核心是其命令行界面,通過命令行可以執行各種操作。 1.文件和目錄操作使用ls、cd、mkdir、rm等命令管理文件和目錄。 2.用戶和權限管理通過useradd、passwd、chmod等命令確保系統安全和資源分配。 3.進程管理使用ps、kill等命令監控和控制系統進程。 4.網絡操作包括ping、ifconfig、ssh等命令配置和管理網絡連接。 5.系統監控和維護通過top、df、du等命令了解系統運行狀態和資源使用情況。

使用Linux別名提高自定義命令快捷方式的生產率使用Linux別名提高自定義命令快捷方式的生產率Apr 12, 2025 am 11:43 AM

介紹 Linux是一個強大的操作系統,由於其靈活性和效率,開發人員,系統管理員和電源用戶都喜歡。但是,經常使用長而復雜的命令可能是乏味的

Linux實際上有什麼好處?Linux實際上有什麼好處?Apr 12, 2025 am 12:20 AM

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

在Linux上掌握道德黑客的基本工具和框架在Linux上掌握道德黑客的基本工具和框架Apr 11, 2025 am 09:11 AM

簡介:通過基於Linux的道德黑客攻擊數字邊界 在我們越來越相互聯繫的世界中,網絡安全至關重要。 道德黑客入侵和滲透測試對於主動識別和減輕脆弱性至關重要

如何學習Linux基礎知識?如何學習Linux基礎知識?Apr 10, 2025 am 09:32 AM

Linux基礎學習從零開始的方法包括:1.了解文件系統和命令行界面,2.掌握基本命令如ls、cd、mkdir,3.學習文件操作,如創建和編輯文件,4.探索高級用法如管道和grep命令,5.掌握調試技巧和性能優化,6.通過實踐和探索不斷提陞技能。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)