evasive 模組保護您的網站免受應用程式層 DOS 攻擊
有多種可以導致網站下線的攻擊方法,比較複雜的方法要涉及資料庫和程式設計方面的技術知識。一個更簡單的方法稱為「拒絕服務」(DOS)攻擊。這個攻擊方法的名字來自於它的意圖:使普通客戶或網站訪客的正常服務請求被拒絕。
#一般來說,有兩種形式的 DOS 攻擊:
- OSI 模型的三、四層,即網路層攻擊
- OSI 模型的七層,即應用層攻擊
第一種類型的 DOS 攻擊-網路層,發生於當大量的垃圾流量流向網頁伺服器時。當垃圾流量超過網路的處理能力時,網站就會宕機。
第二種類型的 DOS 攻擊是在應用程式層,是利用合法的服務請求,而不是垃圾流量。當頁面請求數量超過網頁伺服器所能承受的容量時,即使是合法訪客也將無法使用網站。
本文將著眼於緩解應用層攻擊,因為減輕網路層攻擊需要大量的可用頻寬和上游供應商的合作,這通常不是透過配置網路伺服器就可以做到的。
透過設定普通的網頁伺服器,可以保護網頁免受應用層攻擊,至少是適度的防護。防止這種形式的攻擊是非常重要的,因為Cloudflare[1] 最近報告指出[2] 網路層攻擊的數量正在減少,而應用層攻擊的數量則在增加。
本文將介紹如何使用 zdziarski[3] 開發的 Apache2 的模組 mod_evasive[4]。
另外,mod_evasive 會阻止攻擊者透過嘗試數百個使用者名稱和密碼的組合來進行猜測(即暴力攻擊)的企圖。
mod_evasive 會記錄來自每個 IP 位址的請求的數量。當這個數字超過對應 IP 位址的幾個閾值之一時,會出現一個錯誤頁面。錯誤頁面所需的資源要比一個能夠響應合法訪問的線上網站少得多。
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 的暫存檔案的目錄。
默认的配置是一个很好的开始,因为它不会阻塞任何合法的用户。取消配置文件中的所有参数(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管理員的平均年薪在美國為75,000至95,000美元,歐洲為40,000至60,000歐元。提升薪資可以通過:1.持續學習新技術,如雲計算和容器技術;2.積累項目經驗並建立Portfolio;3.建立職業網絡,拓展人脈。

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

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

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

SublimeText3漢化版
中文版,非常好用

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