如何將 Apache Limit POST 設置為接受嚴格的本地服務請求?
我正在嘗試使用單獨的虛擬主機設置來強化執行 2 個 wordpress 站點的*Apache 2.4 Web 伺服器。*部署在 Windows 2012 r2 上。幾週前我被黑了,伺服器完全失去了。在新伺服器上,他們仍在嘗試通過後請求注入/程式碼執行來入侵該站點。我在嘗試阻止
POST
伺服器送出時未發送的所有請求時遇到問題。我嘗試過的事情包括
<Location>
,<Directory>
,<Limit>
標籤及其屬性,如GET
,PUT
,POST PUT DELETE
嘗試使用各種Require
語句的各種組合,即。local
,ip
,host
和order allow, deny
模式。Allow all from
<Directory "/">
,<Location >
,<LimitExcept >
標籤,包括GET
,POST
和組合等屬性。- 各種
<if >
說法AllowMethod
聲明- 將目錄中的白名單
.htacess
將嘗試放在不同的文件上下文中。比如
httpd.conf
,Vhost.conf
,.htaccess
。我在 Apache 文件中找到的與指令上下文相關的任何文件。甚至把它放在不應該笑的地方。沒什麼,我在文件中閱讀或堆棧溢出似乎有效。所有載入的身份驗證模組,如 mod_auth、mod_host 等。假設模組很好。
我想要實現的是to
deny
或<Limit POST>
request。僅當伺服器使用伺服器 IP 送出請求時,才嚴格允許它們在動態<Directory "/.*"> or
` 中被響應。因此請求的 IP:port 應該是“遠端地址”,因為 apache 本地服務通過 PHP 發送請求方法。我相信這是正確的邏輯。在下班之前我有時間嘗試的最後一件事是下面的程式碼嘗試動態的 `<Directory “/.*"> 標記我不想為每個表單探勘 Wordpress 並為每個目錄創建一個標記。
感謝您的幫助,請在您的答案中包含一個程式碼範例。
<Directory "/.*"> <if "%{REQUEST_METHOD} == 'POST'"> <Limit POST PUT DELETE> Require req, http %{REMOTE_ADDR} == 'xx.xx.xx.xx:xx' </Limit> </if> </Directory>
現在我試過了
<Directory "/"> <if "($_SERVER['%{REMOTE_ADDR}'] == 'xx.xx.xx.xx'"> <Limit POST> allow from all </Limit> </if> </Directory>
<Directory "/"> <if "($_SERVER['REMOTE_ADDR'] == 'xx.xx.xx.xx'"> <Limit POST> allow from all </Limit> </if> </Directory>
沒有外掛、沒有 nginx、E xpress 或 IIS 建議。只有與此配置相關的解決方案。
POST 由使用者的瀏覽器完成。如果 Apache 的訪問日誌顯示請求來自同一個系統,那麼可能其他一些軟體是該系統上的第一個,例如。作為 Varnish 或 HaProxy 的網路記憶體。檢查標頭 X-Forwarded-For 是否包含使用者的 IP 地址。如果你想保護 Wordpress 免受黑客攻擊,這並不容易,你需要在 Wordpress 本身上工作。更改登錄頁面的名稱,為管理員提供密碼,無法猜測或暴力破解,最後但並非最不重要的一點是,讓 Wordpress 保持最新狀態,以便修補已知漏洞。