Apache Web 服務器強化和安全指南

已發表: 2015-02-14

保護和強化 Apache HTTP Server 的實用指南。

Web 服務器是基於 Web 的應用程序的關鍵部分。 Apache Web 服務器通常位於網絡邊緣,因此它成為最容易受到攻擊的服務之一。

具有默認配置會提供許多敏感信息,這可能有助於黑客為攻擊應用程序做準備。 大多數 Web 應用程序攻擊是通過 XSS、信息洩漏、會話管理和 SQL 注入攻擊,這些攻擊是由於編程代碼薄弱和未能清理 Web 應用程序基礎設施造成的。

Positive Technologies 的一項有趣研究表明,52% 的掃描應用程序存在高漏洞。

漏洞報告

在本文中,我將討論一些在 Linux 平台上保護 Apache HTTP 服務器的最佳實踐。

以下是在 Apache 2.4.x 版本上測試的。

  • 這假設您已經在 UNIX 平台上安裝了 Apache。 如果沒有,您可以閱讀安裝指南。
  • 在本指南中,我將 Apache 安裝目錄 /opt/apache 稱為 $Web_Server。
  • 建議您在進行任何修改之前備份現有的配置文件。

觀眾

這是為中間件管理員、應用程序支持、系統分析師或任何工作或渴望學習強化和安全指南的人設計的。

必須具備 Apache Web 服務器和 UNIX 命令的公平知識。

筆記

您需要一些工具來檢查 HTTP 標頭以進行某些實施驗證。 有兩種方法可以做到這一點。

  1. 使用瀏覽器內置的開發人員工具檢查 HTTP 標頭。 通常,它位於網絡選項卡下
  2. 使用在線 HTTP 響應標頭檢查工具

刪除服務器版本橫幅

我想說這是首先要考慮的事情之一,因為您不想公開您正在使用的 Web 服務器版本。 暴露版本意味著您正在幫助黑客加快偵察過程。

默認配置將公開 Apache 版本和操作系統類型,如下所示。

阿帕奇服務器橫幅

  • 轉到 $Web_Server/conf 文件夾
  • 使用 vi 編輯器修改 httpd.conf
  • 添加以下指令並保存 httpd.conf
 ServerTokens Prod ServerSignature Off
  • 重啟阿帕奇

ServerSignature將從 Apache 生成的頁面中刪除版本信息。

ServerTokens將 Header 更改為僅生產,即 Apache

正如您在下面看到的,版本和操作系統信息消失了。

apache-server-banner-masked

禁用目錄瀏覽器列表

在瀏覽器中禁用目錄列表,因此訪問者看不到根目錄或子目錄下的所有文件和文件夾。

讓我們測試一下它在默認設置下的樣子。

  • 轉到 $Web_Server/htdocs 目錄
  • 在其中創建一個文件夾和幾個文件
# mkdir test # touch hi # touch hello

現在,讓我們嘗試通過 http://localhost/test 訪問 Apache

apache-目錄列表

正如您所看到的,它揭示了您擁有的所有文件/文件夾,我相信您不想暴露它。

  • 轉到 $Web_Server/conf 目錄
  • 使用 vi 打開httpd.conf
  • 搜索 Directory 並將 Options 指令更改為 None 或 –Indexes
 <Directory /opt/apache/htdocs> Options -Indexes </Directory>

(或者)

 <Directory /opt/apache/htdocs> Options None </Directory>
  • 重啟阿帕奇

注意:如果您的環境中有多個 Directory 指令,您應該考慮對所有指令都執行相同的操作。

現在,讓我們嘗試通過 http://localhost/test 訪問 Apache

禁用目錄列表

如您所見,它顯示了一個禁止的錯誤,而不是顯示測試文件夾列表。

埃塔格

它允許遠程攻擊者通過 Etag 標頭獲取敏感信息,例如 inode 編號、多部分 MIME 邊界和子進程。

為了防止這個漏洞,讓我們如下實現它。 這是修復 PCI 合規性所必需的。

  • 轉到 $Web_Server/conf 目錄
  • 添加以下指令並保存 httpd.conf
 FileETag None
  • 重啟阿帕奇

從非特權帳戶運行 Apache

默認安裝作為沒人或守護進程運行。 為 Apache 使用單獨的非特權用戶是好的。

這裡的想法是保護其他運行的服務以防出現任何安全漏洞。

  • 創建一個名為 apache 的用戶和組
# groupadd apache # useradd –G apache apache
  • 將 apache 安裝目錄所有權更改為新創建的非特權用戶
# chown –R apache:apache /opt/apache
  • 轉到 $Web_Server/conf
  • 使用 vi 修改 httpd.conf
  • 搜索用戶和組指令並更改為非特權帳戶 apache
 User apache Group apache
  • 保存 httpd.conf
  • 重啟阿帕奇

grep 用於運行 http 進程並確保它與 apache 用戶一起運行

# ps –ef |grep http

您應該看到一個進程正在以 root 身份運行。 那是因為 Apache 正在偵聽端口 80,它必須以 root 身份啟動。

保護二進制和配置目錄權限

默認情況下,二進制和配置的權限是 755,這意味著服務器上的任何用戶都可以查看配置。 您可以禁止其他用戶進入 conf 和 bin 文件夾。

  • 轉到 $Web_Server 目錄
  • 更改 bin 和 conf 文件夾的權限
# chmod –R 750 bin conf

系統設置保護

在默認安裝中,用戶可以使用 .htaccess 覆蓋 apache 配置。 如果您想阻止用戶更改您的 apache 服務器設置,您可以將AllowOverride添加到None ,如下所示。

這必須在根級別完成。

  • 轉到 $Web_Server/conf 目錄
  • 使用 vi 打開 httpd.conf
  • 在根級別搜索目錄
<Directory /> Options -Indexes AllowOverride None </Directory>
  • 保存 httpd.conf
  • 重啟阿帕奇

HTTP 請求方法

HTTP 1.1 協議支持許多可能不需要的請求方法,其中一些具有潛在風險。

通常,您可能需要在 Web 應用程序中使用 GET、HEAD、POST 請求方法,這些方法可以在相應的 Directory 指令中進行配置。

默認配置支持 HTTP 1.1 協議中的 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 方法。

  • 轉到 $Web_Server/conf 目錄
  • 使用 vi 打開 httpd.conf
  • 搜索目錄並添加以下內容
<LimitExcept GET POST HEAD> deny from all </LimitExcept>
  • 重啟阿帕奇

禁用跟踪 HTTP 請求

默認情況下,Apache Web 服務器中啟用了 Trace 方法。

啟用此功能可能允許跨站點跟踪攻擊,並可能為黑客提供竊取 cookie 信息的選項。 讓我們看看它在默認配置中的樣子。

  • 做一個帶有監聽端口的 telnet Web 服務器 IP
  • 發出 TRACE 請求,如下所示
#telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 200 OK Date: Sat, 31 Aug 2013 02:13:24 GMT Server: Apache Transfer-Encoding: chunked Content-Type: message/http 20 TRACE / HTTP/1.1 Host: test 0 Connection closed by foreign host. #

正如您在上面的 TRACE 請求中看到的,它已經響應了我的查詢。 讓我們禁用它並測試它。

  • 轉到 $Web_Server/conf 目錄
  • 添加以下指令並保存 httpd.conf
 TraceEnable off
  • 重啟阿帕奇

使用監聽端口執行 telnet Web 服務器 IP 並發出TRACE請求,如下所示

#telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 405 Method Not Allowed Date: Sat, 31 Aug 2013 02:18:27 GMT Server: Apache Allow:Content-Length: 223Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>405 Method Not Allowed</title> </head><body> <h1>Method Not Allowed</h1> <p>The requested method TRACE is not allowed for the URL /.</p> </body></html> Connection closed by foreign host. #

正如您在上面的 TRACE 請求中看到的那樣,它使用 HTTP 405 Method Not Allowed 阻止了我的請求。

現在,此 Web 服務器不允許 TRACE 請求並有助於阻止跨站點跟踪攻擊。

使用 HttpOnly 和 Secure 標誌設置 cookie

您可以使用 cookie 中的 HttpOnly 和 Secure 標誌來緩解大多數常見的跨站點腳本攻擊。 如果沒有 HttpOnly 和 Secure,就有可能竊取或操縱 Web 應用程序會話和 cookie,而且很危險。

  • 確保在您的 httpd.conf 中啟用了 mod_headers.so
  • 轉到 $Web_Server/conf 目錄
  • 添加以下指令並保存 httpd.conf
 Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  • 重啟阿帕奇

點擊劫持攻擊

Clickjacking 是一個眾所周知的 Web 應用程序漏洞。

  • 確保在您的 httpd.conf 中啟用了 mod_headers.so
  • 轉到 $Web_Server/conf 目錄
  • 添加以下指令並保存 httpd.conf
 Header always append X-Frame-Options SAMEORIGIN
  • 重啟阿帕奇

apache-x-frame-options

X-Frame-Options 還支持我在此處解釋的另外兩個選項。

服務器端包含

服務器端包含 (SSI) 有增加服務器負載的風險。 如果您已共享環境和高流量 Web 應用程序,則應考慮通過在 Options 指令中添加 Includes 來禁用 SSI。

SSI 攻擊允許通過在 HTML 頁面中註入腳本或遠程執行代碼來利用 Web 應用程序。

  • 轉到 $Web_Server/conf 目錄
  • 使用 vi 打開 httpd.conf
  • 搜索目錄並在選項指令中添加包含
<Directory /opt/apache/htdocs> Options –Indexes -Includes Order allow,denyAllow from all </Directory>
  • 重啟阿帕奇

注意:如果您的環境中有多個 Directory 指令,您應該考慮對所有指令都執行相同的操作。

X-XSS 保護

跨站點腳本 (XSS) 保護可以在許多瀏覽器中繞過。 如果 Web 應用程序被用戶禁用,您可以應用此保護。 Facebook、Twitter、谷歌等大多數大型網絡公司都在使用它。

  • 轉到 $Web_Server/conf 目錄
  • 使用 vi 打開 httpd.conf 並添加以下 Header 指令
Header set X-XSS-Protection "1; mode=block"
  • 重啟阿帕奇

如您所見,XSS-Protection 是在響應標頭中註入的。

apache-xss

禁用 HTTP 1.0 協議

當我們談論安全時,我們應該盡可能地保護。 那麼為什麼我們使用舊的 HTTP 版本的協議,讓我們也禁用它們呢?

HTTP 1.0 存在與會話劫持相關的安全漏洞。 我們可以通過使用 mod_rewrite 模塊來禁用它。

  • 確保在 httpd.conf 文件中加載 mod_rewrite 模塊
  • 啟用 RewriteEngine 指令如下並添加重寫條件以僅允許 HTTP 1.1
 RewriteEngine On RewriteCond %{THE_REQUEST} !HTTP/1.1$ RewriteRule .* - [F]

超時值配置

默認情況下,Apache 超時值為 300 秒,這可能是 Slow Loris 攻擊和 DoS 的受害者。 為了緩解這種情況,您可以將超時值降低到大約 60 秒。

  • 轉到 $Web_Server/conf 目錄
  • 使用 vi 打開 httpd.conf
  • 在 httpd.conf 中添加以下內容
Timeout 60

SSL

擁有 SSL 是您添加到 Web 應用程序中的額外安全層。 但是,默認 SSL 配置會導致某些漏洞,您應該考慮調整這些配置。

SSL 密鑰

破解 SSL 密鑰很難,但並非不可能。 這只是計算能力和時間的問題。

您可能知道,使用 2009 年的 PC 破解大約 73 天,您可以對 512 位密鑰進行逆向工程。

因此,您擁有的密鑰長度越長,破解 SSL 密鑰就越複雜。 大多數大型網絡公司都使用 2048 位密鑰,如下所示,我們為什麼不呢?

  • Outlook.com
  • 微軟網站
  • Live.com
  • Skype.com
  • 蘋果網
  • 雅虎網
  • 必應網
  • Hotmail.com
  • 推特網

您可以使用 OpenSSL 生成 2048 位的 CSR,如下所示。

 openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key

它將生成一個 CSR,您需要將其發送給證書頒發機構以對其進行簽名。 收到簽名證書文件後,您可以將它們添加到 httpd-ssl.conf 文件中

SSLCertificateFile #Certificate signed by authority SSLCertificateChainFile #Certificate signer given by authority SSLCertificateKeyFile #Key file which you generated above
  • 重新啟動 Apache Web 服務器並嘗試使用 https 訪問 URL

SSL 密碼

SSL Cipher 是一種加密算法,用作 Internet 上兩台計算機之間的密鑰。 數據加密是將純文本轉換為秘密密碼的過程。

它基於您的 Web 服務器 SSL 密碼配置,將進行數據加密。 所以配置 SSL Cipher 很重要,它更強大且不易受攻擊。

  • 轉到 $Web_Server/conf/extra 文件夾
  • 如下修改 httpd-ssl.conf 中的 SSLCipherSuite 指令以僅接受更高的加密算法
SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4
  • 保存配置文件並重啟apache服務器

注意:如果您的 SSL 審計報告中有許多弱密碼,您可以快速拒絕它們添加! 一開始。

禁用 SSL v2 和 v3

SSL v2 和 v3 存在許多安全漏洞,如果您正在努力進行滲透測試或 PCI 合規性,那麼您應該關閉安全發現以禁用 SSL v2/v3。

任何 SSL v2/v3 通信都可能容易受到允許數據篡改或洩露的中間人攻擊。

讓我們實現 apache Web 服務器以僅接受最新的 TLS 並拒絕 SSL v2/v3 連接請求。

  • 轉到 $Web_Server/conf/extra 文件夾
  • 如下修改 httpd-ssl.conf 中的 SSLProtocol 指令以僅接受 TLS 1.2+
 SSLProtocol –ALL +TLSv1.2

完成 SSL 配置後,最好使用在線 SSL/TLS 證書工具測試您的 Web 應用程序以查找任何配置錯誤。

國防部安全

Mod Security 是一個開源的 Web 應用程序防火牆,您可以將其與 Apache 一起使用。

它作為一個模塊出現,您必須編譯和安裝。 如果您買不起商業 Web 應用程序防火牆,這將是一個很好的選擇。

為了提供通用 Web 應用程序保護,核心規則使用以下技術:

  • HTTP 保護 – 檢測違反 HTTP 協議和本地定義的使用策略
  • 實時黑名單查找 – 利用第 3 方 IP 信譽
  • 基於 Web 的惡意軟件檢測 - 通過檢查 Google 安全瀏覽 API 來識別惡意 Web 內容。
  • HTTP 拒絕服務保護——防禦 HTTP 泛洪和慢速 HTTP DoS 攻擊。
  • Common Web Attacks Protection – 檢測常見的 Web 應用程序安全攻擊
  • 自動化檢測——檢測機器人、爬蟲、掃描儀和其他惡意表面活動
  • 與文件上傳的 AV 掃描集成 - 識別通過 Web 應用程序上傳的惡意文件。
  • 跟踪敏感數據——跟踪信用卡使用情況並阻止洩漏。
  • 特洛伊木馬保護 - 檢測對特洛伊木馬的訪問。
  • 應用程序缺陷的識別——應用程序錯誤配置的警報。
  • 錯誤檢測和隱藏——偽裝服務器發送的錯誤消息。

下載安裝

必須在您希望將 Mod Security 與 Apache 一起使用的服務器上安裝以下先決條件。 如果其中任何一個不存在,則 Mod Security 編譯將失敗。 您可以在 Linux 或 Centos 上使用 yum install 來安裝這些軟件包。

  • apache 2.x 或更高版本
  • libpcre 包
  • libxml2 包
  • liblua 包
  • libcurl 包
  • libapr 和 libapr-util 包
  • 與 Apache Web 服務器捆綁在一起的 mod_unique_id 模塊

現在,讓我們從這裡下載 Mod Security 2.7.5 的最新穩定版本

  • 將下載的文件傳輸到 /opt/apache
  • 提取 modsecurity-apache_2.7.5.tar.gz
 # gunzip –c modsecurity-apache_2.7.5.tar.gz | tar xvf –
  • 轉到提取的文件夾 modsecurity-apache_2.7.5
 # cd modsecurity-apache_2.7.5
  • 運行配置腳本,包括現有 Apache 的 apxs 路徑
# ./configure –with-apxs=/opt/apache/bin/apxs
  • 使用 make 腳本編譯安裝
# make # make install
  • 安裝完成後,您會在 /opt/apache 下的模塊文件夾中看到 mod_security2.so

現在到此結束,您已經在現有的 Apache Web 服務器中安裝了 Mod Security 模塊。

配置

要在 Apache 中使用 Mod 安全功能,我們必須在 httpd.conf 中加載 mod 安全模塊。 mod_unique_id 模塊是 Mod Security 的先決條件。

該模塊為每個請求提供一個具有唯一標識符的環境變量,由 Mod Security 跟踪和使用。

  • 在 httpd.conf 中添加以下行以加載 Mod Security 模塊並保存配置文件
LoadModule unique_id_module modules/mod_unique_id.so LoadModule security2_module modules/mod_security2.so
  • 重啟 apache 網絡服務器

國防部安全現已安裝!

接下來您要做的是安裝 Mod Security 核心規則以充分利用其功能。

最新的核心規則可以從以下鏈接下載,該鏈接是免費的。 https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/master

  • 將下載的核心規則 zip 複製到 /opt/apache/conf 文件夾
  • 解壓核心規則文件
  • 您可能希望將文件夾重命名為簡短易記的名稱。 在本例中,我將重命名為 crs。
  • 轉到 crs 文件夾並將 modsecurity_crs10_setup.conf.example 重命名為 modsecurity_crs10_setup.conf

現在,讓我們啟用這些規則以使其與 Apache Web 服務器一起使用。

  • 在 httpd.conf 中添加以下內容
<IfModule security2_module> Include conf/crs/modsecurity_crs_10_setup.confInclude conf/crs/base_rules/*.conf </IfModule>

在上述配置中,我們加載了 Mod Security 主配置文件 modsecurity_crs_10_setup.conf 和 Mod Security Core Rules 提供的基本規則 base_rules/*.conf 來保護 Web 應用程序。

  • 重啟 apache 網絡服務器

您已成功使用 Apache 配置 Mod Security!

做得好。 現在,Apache Web 服務器受到 Mod Security Web 應用程序防火牆的保護。

入門

讓我們從 Mod Security 中的一些關鍵配置開始,以強化和保護 Web 應用程序。

在本節中,我們將在 /opt/apache/conf/crs/modsecurity_crs_10_setup.conf 中進行所有配置修改。

出於示例目的,我們將在本節中將 /opt/apache/conf/crs/modsecurity_crs_10_setup.conf 稱為 setup.conf。

了解免費提供的 OWASP 規則是什麼很重要。 OWASP 提供了兩種類型的規則。

基本規則——這些規則經過大量測試,可能誤報率較低。

實驗規則——這些規則是出於實驗目的,您可能會有很高的誤報。 在生產環境中使用它們之前,在 UAT 中進行配置、測試和實現非常重要。

可選規則——這些可選規則可能不適用於整個環境。 根據您的要求,您可以使用它們。

如果您正在尋找 CSRF、用戶跟踪、會話劫持等保護,那麼您可以考慮使用可選規則。 從 OWASP 下載頁面提取下載的 crs zip 文件後,我們有基本規則、可選規則和實驗規則。

這些規則配置文件位於 crs/base_rules、crs/optional_rules 和 crs/experimental_rules 文件夾中。 讓我們熟悉一些基本規則。

  • modsecurity_crs_20_protocol_violations.conf:此規則用於防止協議漏洞,例如響應拆分、請求走私、使用不允許的協議 (HTTP 1.0)。
  • modsecurity_crs_21_protocol_anomalies.conf:這是為了防止請求頭中缺少 Host、Accept、User-Agent。
  • modsecurity_crs_23_request_limits.conf:此規則依賴於特定應用程序,如請求大小、上傳大小、參數長度等。
  • modsecurity_crs_30_http_policy.conf:這是配置和保護允許或不允許的方法,如 CONNECT、TRACE、PUT、DELETE 等。
  • modsecurity_crs_35_bad_robots.conf:檢測惡意機器人
  • modsecurity_crs_40_generic_attacks.conf:這是為了防止操作系統命令注入、遠程文件包含等。
  • modsecurity_crs_41_sql_injection_attacks.conf:該規則保護SQL和盲SQL注入請求。
  • modsecurity_crs_41_xss_attacks.conf:防止跨站點腳本請求。
  • modsecurity_crs_42_tight_security.conf:目錄遍歷檢測和保護。
  • modsecurity_crs_45_trojans.conf:該規則檢測通用文件管理輸出,HTTP後門頁面上傳,已知簽名。
  • modsecurity_crs_47_common_exceptions.conf:這被用作一種異常機制,以消除可能遇到的常見誤報,如 Apache 內部虛擬連接、SSL pinger 等。

日誌記錄

日誌記錄是首先要配置的內容之一,因此您可以為 Mod Security 正在執行的操作創建日誌。 有兩種類型的日誌記錄可用; 調試和審計日誌。

調試日誌:這是從錯誤日誌中復制 Apache 錯誤、警告和通知消息。

審計日誌:這是編寫由 Mod Security 規則標記的事務日誌 Mod Security 使您可以靈活地配置審計、調試或兩者都記錄。

默認情況下,配置將寫入兩個日誌。 但是,您可以根據自己的要求進行更改。 日誌由SecDefaultAction指令控制。 讓我們看看 setup.conf 中的默認日誌配置

SecDefaultAction “phase:1,deny,log”

記錄調試、審計日誌——使用“log” 只記錄審計日誌——使用“nolog,auditlog” 只記錄調試日誌——使用“log,noauditlog” 您可以指定要存儲的審計日誌位置,由 SecAuditLog 控制指示。

讓我們通過添加如下所示將審計日誌寫入/opt/apache/logs/modsec_audit.log。

  • 在 setup.conf 中添加 SecAuditLog 指令並重新啟動 Apache Web Server
 SecAuditLog /opt/apache/logs/modsec_audit.log
  • 重新啟動後,您應該會看到生成了 modsec_audit.log

啟用規則引擎

默認情況下,引擎規則是關閉的,這意味著如果您不啟用規則引擎,您就沒有利用 Mod Security 的所有優勢。

規則引擎的啟用或禁用由SecRuleEngine指令控制。

  • 在 setup.conf 中添加 SecRuleEngine 指令並重新啟動 Apache Web Server
 SecRuleEngine On

SecRuleEngine 有三個值:

  • On – 啟用規則引擎
  • Off – 禁用規則引擎
  • DetectionOnly – 啟用規則引擎,但從不執行任何操作,如阻止、拒絕、丟棄、允許、代理或重定向

一旦規則引擎開啟 - Mod Security 就可以使用一些常見的攻擊類型進行保護。

常見攻擊類型保護

現在 Web 服務器已準備好使用 XSS、SQL 注入、協議違規等常見攻擊類型進行保護,因為我們已經安裝了核心規則並打開了規則引擎。 讓我們測試其中的幾個。

XSS 攻擊

  • 打開 Firefox 並訪問您的應用程序並將 <script> 標籤放在末尾或 URL
  • 監控 apache/logs 文件夾中的 modsec_audit.log

您會注意到 Mod Security 阻止請求,因為它包含 <script> 標籤,這是 XSS 攻擊的根源。

目錄遍歷攻擊:- 目錄遍歷攻擊可以通過利用此漏洞並訪問系統相關文件來造成大量破壞。 例如 - /etc/passwd、.htaccess 等。

  • 打開 Firefox 並通過目錄遍歷訪問您的應用程序
  • 監控 apache/logs 文件夾中的 modsec_audit.log
 http://localhost/?../.../boot
  • 您會注意到 Mod Security 阻止請求,因為它包含目錄遍歷。

更改服務器橫幅

在本指南的前面部分,您學習瞭如何刪除 Apache 和 OS 類型、ServerTokens 指令的版本幫助。

讓我們先一步,保持服務器名稱隨心所欲如何? 可以使用 Mod Security 中的SecServerSignature指令。 你看這很有趣。

注意:要使用 Mod Security 從標頭操作服務器橫幅,您必須在 Apache Web 服務器的 httpd.conf 中將 ServerTokesn 設置為 Full。

  • 在 setup.conf 中使用所需的服務器名稱添加 SecServerSignature 指令並重新啟動 Apache Web 服務器
SecServerSignature YourServerName

前任:

 [/opt/apache/conf/crs] #grep SecServer modsecurity_crs_10_setup.conf SecServerSignature geekflare.com [/opt/apache/conf/crs] #

常規配置

讓我們看看一些常規配置作為最佳實踐。

配置監聽

當您在單個服務器上有多個接口和 IP 時,建議將 Listen 指令配置為絕對 IP 和端口號。

當您將 apache 配置保留為使用某個端口號偵聽所有 IP 時,可能會在將 HTTP 請求轉發到其他 Web 服務器時產生問題。 這在共享環境中很常見。

  • 在 httpd.conf 中使用絕對 IP 和端口配置 Listen 指令,如下所示的示例
Listen 10.10.10.1:80

訪問記錄

在您的 Web 服務器中正確配置訪問日誌非常重要。 要在日誌中捕獲的一些重要參數是服務請求所花費的時間,即會話 ID。

默認情況下,Apache 未配置為捕獲這些數據。 您必須按如下方式手動配置它們。

  • 在訪問日誌中捕獲處理請求和 SESSION ID 所花費的時間
  • 在 LogFormat 指令下的 httpd.conf 中添加 %T & %sessionID
 LogFormat "%h %l %u %t "%{sessionID}C" "%r" %>s %b %T" common

您可以參考 http://httpd.apache.org/docs/2.2/mod/mod_log_config.html 以獲得 Apache Web 服務器中 LogFormat 指令支持的參數的完整列表。

禁用加載不需要的模塊

如果您已經編譯並安裝了所有模塊,那麼您很可能會在 Apache 中加載許多模塊,而這可能不是必需的。

最佳實踐是在您的 Web 應用程序中使用所需的模塊配置 Apache。 以下模塊存在安全問題,您可能有興趣在 Apache Web Server 的 httpd.conf 中禁用。

WebDAV(基於 Web 的分佈式創作和版本控制)該模塊允許遠程客戶端操作服務器上的文件並受到各種拒絕服務攻擊。 在 httpd.conf 中禁用評論

#LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so #Include conf/extra/httpd-dav.conf

信息模塊 mod_info 模塊可以在加載此模塊後使用 .htaccess 洩漏敏感信息。 在 httpd.conf 中禁用評論

#LoadModule info_module modules/mod_info.so

參考:如果沒有以下鏈接的指導,這是不可能的:

  • http://httpd.apache.org/docs/2.4/
  • http://www.modsecurity.org/documentation/
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

這就是您可以用來保護您的 Apache Web 服務器的一些最佳實踐。

如果您想在 Apache 中實現自定義錯誤頁面,請檢查此鏈接。

如果您不熟悉 Apache HTTP,那麼我建議您參加 Apache HTTP 管理課程。