2011-09-16 84 views
2

我在IIS 7.5上運行WordPress的 - 我今天回顧我的日誌,發現有大量的蠻力嘗試在我的網站,尋找可能危害其安全性的文件。具體查找安裝文件,phpMyAdmin,其他MySQL的東西等 - 所有這些都是404。IIS/PHP蠻力安全模塊 - 建議?

基於這些信息,有什麼方法可以創建一個安全模塊,以A)阻止超過[n]連續數404個。 B)阻止匹配某些關鍵字的人,例如尋找phpMyAdmin。 C)這是可選的,但如果我想硬編碼/添加一些,一個理想的解決方案也會阻塞IP地址。

我有一些想法,但我也在尋找其他建議。由於服務器是IIS,我寧願使用C#ASP.NET的解決方案或以某種方式嵌入IIS中。

回答

1

實現一個HttpHandler攔截所有請求。如果他們正在尋找這些模塊,請記錄他們的IP並停止攻擊,並將IP添加到阻止的主機列表中。

是的 - 有人可以僞造一個IP(在DoS攻擊中更多關注並且在這裏不可行),但是他們無法僞造整個會話(大致是一個數據包),因此他們無法繼續使用該IP來獲取一個迴應,並知道該文件是否存在。

這種方法,如果您想進一步的所有接入立即處理以特殊的方式IPS如塊將被使用。

如果你不需要這種類型的控制,只是想阻止考慮定製URLScan的規則,以立即阻止它,因爲現在的UrlScan自帶內置到IIS。 參見: http://www.hanselman.com/blog/HackedAndIDidntLikeItURLScanIsStepZero.aspx

+0

urlscan對於iis和apache的重寫規則是一樣的嗎?這就是爲什麼我使用,我只是重寫所有請求phpMy *管理*配置*等索引。這主要是爲了清除錯誤日誌(因爲我沒有任何這些文件夾),但也很安心 – thegaffney

+0

不,URLScan不會像apache重寫一樣是url重寫器,而是試圖阻止其中的攻擊軌道。如果你想重定向(我不相信你可以使用UrlScan,但我錯了),一種選擇是實現處理程序。 –

0

A)屏蔽某人具有比一排[n]的數量404的更多。

有一個名爲「更好的WP安全」的wordpress插件,它具有404檢測功能,它完全允許此功能。我現在正在使用它,它工作得很好。

B)阻止匹配某些關鍵字的人,例如尋找phpMyAdmin。

你不想阻止任何試圖訪問phpMyAdmin的人,因爲那也包括你自己。您想通過IP過濾請求 - 不允許任何不在白名單中的IP訪問phpMyAdmin。您將在下面的第三個問題的答案中找到如何做到這一點。

C)這是可選的,但理想的解決方案也將阻止IP地址,如果我想

您可以按照以下步驟禁止訪問IIS上的wp-login.php中和可溼性粉劑管理員對於不在白名單中的IP的7.5。您可以通過在步驟4的代碼中(包括)複製代碼之間的代碼並更改「path」屬性來模擬該示例,以將您想要的任何文件(例如phpMyAdmin)包含在wordpress文件夾中。

1,打開網頁。在你的WordPress根文件夾的配置文件,如果你沒有找到它,創建一個

2,啓用「IP和域限制」按照[本條]的作用[1]

3,打開IIS Manager,點擊根節點,在右側面板中選擇「Feature Delegation」,找到「IPv4 Address and Domain Restrictions」項,授予「Read/Write」權限

4,打開web.config文件,如果您自己創建了文件並且該文件爲空,請添加以下代碼(請參閱底部的註釋以獲得解釋):

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<location path="wp-login.php"> 
     <system.webServer> 
     <security> 
      <ipSecurity allowUnlisted="false">  
       <clear/> 
       <add ipAddress="100.100.100.29" allowed="true"/> 
       <add ipAddress="111.111.111.0" subnetMask="255.255.255.0" allowed="true"/> 
      </ipSecurity> 
     </security> 
     <modules runAllManagedModulesForAllRequests="true"/> 
     </system.webServer> 
    </location> 

    <location path="wp-admin"> 
     <system.webServer> 
     <security> 
      <ipSecurity allowUnlisted="false">  
       <clear/> 
       <add ipAddress="100.100.100.29" allowed="true"/> 
       <add ipAddress="111.111.111.0" subnetMask="255.255.255.0" allowed="true"/> 
      </ipSecurity> 
     </security> 
     <modules runAllManagedModulesForAllRequests="true"/> 
     </system.webServer> 
    </location> 
</configuration> 

如果您正在使用現有的web.config文件,那麼您只需將標記之間的代碼添加到web.config中的現有標記中即可。

說明:此代碼阻止訪問wp-login.php或wp-admin的所有IP,例外情況是IP 100.100.100.29和111.111.111.1-255。請用您自己的清單替換這些IP。

5,現在嘗試訪問不在列表中的IP的wp-login.php或wp-admin,應該給出403-訪問被拒絕錯誤。