2013-04-30 72 views
0

我想通過在.htaccess文件中使用下面的命令來阻止關閉IP地址範圍。htaccess通過IP範圍重定向

因此1.2.3.0 - 1.2.3.154需要被阻止,但它不起作用。爲什麼會這樣?

<IfModule mod_rewrite.c> 
RewriteCond %{REMOTE_HOST} ^1\.2\.3\.0/154 
RewriteCond %{REQUEST_URI} !^/australia-ip-restriction? 
RewriteCond %{REQUEST_URI} !^/templates/? 
RewriteCond %{REQUEST_URI} !^/files/? 
RewriteCond %{REQUEST_URI} /(.*)$ 
RewriteRule /(.*)$ /australia-ip-restriction [R=301,L] 
</IfModule> 
+0

你必須使用一個重寫規則,而不是僅僅使用mod_access? – Stobor 2013-04-30 04:17:52

+0

無所謂我只需要重定向IP範圍列表 – 2013-04-30 04:19:16

+0

好的,這有點不同。重定向與禁止不同。 – Stobor 2013-04-30 05:10:49

回答

1

使用REGEX重定向和阻止IP地址是有風險的。您可能會意外阻止或爲您網站的所有流量創建重定向循環,因此您需要採取某種對策。檢查日誌文件以確保您正在查找的結果實際上正在工作並注意誤報。訪問網頁,確保它們按預期工作。使用代理來測試國外IP訪問限制。

世界各地都有註冊商,您可以在其中查找各種IP地址:Ripe.netAPNIC.netArin.net僅舉幾例。這些註冊商負責的IP地址在塊中是非順序的。有一些國家的人們試圖在一個地方收集這些街區。 Nirsoft維護這些列表中的一部分。它們不是以任何方式完成的,IP地址每天都在變化。如果最初在澳大利亞的公司上市的IP塊被Virgin Mobile或Microsoft等公司收購,您最終可能會意外地在英國或美國流量。

如果您有權訪問核心服務器配置或能夠安裝軟件包,爲了保持流量在服務器上不受影響,您可以安裝或設置iptables並阻止對不希望流量的區域進行重複嘗試。你也可以阻止任何超過速度閾值的流量('每秒2頁')。

假設您在robots.txt中列出了一個隱藏文件夾,告訴機器人禁止所有文件夾。如果你看到該文件夾​​的流量,那麼你可以假設它是一個誰在robots.txt看,然後決定偷看。這可以被視爲honeypot。此外,您可以隱藏文檔中沒有關鍵字值的代碼,並使其不可見。當某人運行此代碼或在代碼中隱藏鏈接時,如果他們不遵守robots.txt文件,也可以將其添加到違規者列表中。

您也可以在MySQL中設置數據庫,並使用像PHP這樣的語言來刪除訪問蜜罐的連接(或重定向異地),或嘗試暴力攻擊登錄表單或FTP帳戶的地址。我在Web表單上實施數據庫以跟蹤已完成表單的人員。如果有多個垃圾郵件嘗試被添加到我的黑名單中。

通過反向查找阻止用戶併爲其國家/地區代碼搜索其頂級域名或通過阻止瀏覽器以特定本地語言請求頁面的用戶而不是阻止IP地址範圍的用戶會更容易。

回到您的例子

在你的代碼,每個RewriteCond行的,除非你使用[或]應該是真實的。這裏有更深入的參考資料access restrictions with Apache

REMOTE_HOST是域名...所以這行:

RewriteCond %{REMOTE_HOST} ^1\.2\.3\.0/154 

應該使用REMOTE_ADDR代替:

RewriteCond %{REMOTE_ADDR} ^1\.2\.3\.(1[0-4][0-9]|15[0-4]|[0-9][0-9]|[0-9])$ 
RewriteRule ^(.*)$ australia-ip-restriction [R=301,L] 
+0

謝謝你。有沒有一個網站可以根據國家生成這些IP地址,因此我可以將它們放入我的.htaccess文件中? – 2013-04-30 05:51:57

+0

^1 \ .2 \ .3 \。([0-1] [0-5] [0-4])$可以工作嗎? – 2013-04-30 06:01:25

+0

該模式不符合1.2.3.149或1.2.3.77 – 2013-04-30 06:52:45