Apache-2.4

如何將 Apache Limit POST 設置為接受嚴格的本地服務請求?

  • July 9, 2020

我正在嘗試使用單獨的虛擬主機設置來強化執行 2 個 wordpress 站點的*Apache 2.4 Web 伺服器。*部署在 Windows 2012 r2 上。幾週前我被黑了,伺服器完全失去了。在新伺服器上,他們仍在嘗試通過後請求注入/程式碼執行來入侵該站點。我在嘗試阻止POST伺服器送出時未發送的所有請求時遇到問題。

我嘗試過的事情包括

  • <Location>, <Directory>,<Limit>標籤及其屬性,如GET, PUTPOST PUT DELETE嘗試使用各種Require語句的各種組合,即。local, ip,hostorder allow, deny模式。Allow all from
  • <Directory "/">, <Location >,<LimitExcept >標籤,包括GET,POST和組合等屬性。
  • 各種<if >說法
  • AllowMethod聲明
  • 將目錄中的白名單.htacess

將嘗試放在不同的文件上下文中。比如httpd.conf, Vhost.conf, .htaccess。我在 Apache 文件中找到的與指令上下文相關的任何文件。甚至把它放在不應該笑的地方。沒什麼,我在文件中閱讀或堆棧溢出似乎有效。

所有載入的身份驗證模組,如 mod_auth、mod_host 等。假設模組很好。

我想要實現的是todeny<Limit POST>request。僅當伺服器使用伺服器 IP 送出請求時,才嚴格允許它們在動態<Directory "/.*"> or ` 中被響應。因此請求的 IP:port 應該是“遠端地址”,因為 apache 本地服務通過 PHP 發送請求方法。我相信這是正確的邏輯。

在下班之前我有時間嘗試的最後一件事是下面的程式碼嘗試動態的 `<Directory “/.*"> 標記我不想為每個表單探勘 Wordpress 並為每個目錄創建一個標記。

感謝您的幫助,請在您的答案中包含一個程式碼範例。

&lt;Directory "/.*"&gt;
&lt;if "%{REQUEST_METHOD} == 'POST'"&gt;
&lt;Limit POST PUT DELETE&gt;
Require req, http %{REMOTE_ADDR} == 'xx.xx.xx.xx:xx'
&lt;/Limit&gt;
&lt;/if&gt;
&lt;/Directory&gt;

現在我試過了

&lt;Directory "/"&gt; 
&lt;if "($_SERVER['%{REMOTE_ADDR}'] == 'xx.xx.xx.xx'"&gt;
&lt;Limit POST&gt;
allow from all
&lt;/Limit&gt;
&lt;/if&gt;
&lt;/Directory&gt;
&lt;Directory "/"&gt; 
&lt;if "($_SERVER['REMOTE_ADDR'] == 'xx.xx.xx.xx'"&gt;
&lt;Limit POST&gt;
allow from all
&lt;/Limit&gt;
&lt;/if&gt;
&lt;/Directory&gt;

沒有外掛、沒有 nginx、E xpress 或 IIS 建議。只有與此配置相關的解決方案。

POST 由使用者的瀏覽器完成。如果 Apache 的訪問日誌顯示請求來自同一個系統,那麼可能其他一些軟體是該系統上的第一個,例如。作為 Varnish 或 HaProxy 的網路記憶體。檢查標頭 X-Forwarded-For 是否包含使用者的 IP 地址。如果你想保護 Wordpress 免受黑客攻擊,這並不容易,你需要在 Wordpress 本身上工作。更改登錄頁面的名稱,為管理員提供密碼,無法猜測或暴力破解,最後但並非最不重要的一點是,讓 Wordpress 保持最新狀態,以便修補已知漏洞。

引用自:https://serverfault.com/questions/1024450