2011-08-04 59 views
5

有點背景。我爲非營利組織運行該網站。在我注意到一個死鏈接後,我在網站上運行了一個鏈接檢查器,並找到了更多。所以,我實現了一個自定義的404頁面來記錄任何失敗的鏈接。這使我可以修復我斷開的鏈接並提醒其他鏈接到我們的鏈接已損壞。處理嘗試破解網站的最佳方法

這導致一個有趣的發現相當快:他們是驚人的很多嘗試,以規避安全和利用標準軟件包漏洞的網站上常見的,像phpMyAdmin,論壇等

我的日誌罪犯的IP地址,幾乎完全發現他們不是來自美國,我們的組織嚴格關注美國的一個小地區,因此我想通過PHP等方式禁止他們,例如:加載列表頭文件中的違法者被所有頁面使用,並且如果他們屬於列表,則簡單地與消息一起消失。

這是一個好辦法?有什麼更好的嗎?我所關心的是,他們找到漏洞並獲得訪問權限。

+2

如果你只是需要禁止所有生成404錯誤的IP--看看fail2ban軟件 – zerkms

+0

這太可怕了。所以如果你拼錯一個URL你會被禁止?或者我誤解了你。 –

+0

是的,你誤解了。只有黑客入侵企圖被禁止 – steveo225

回答

4

你在美國以外將IP列入黑名單的方法在短時間內會稍微有效,但從長遠來看真的會是一場失敗的戰鬥。如果您可以在不影響用戶基礎的情況下將IP排除在美國之外,則可以使用Maxmind GeoIP之類的服務來識別PHP代碼中的國家/地區,並拒絕外部用戶訪問。

將這些文件加載​​到頭文件的列表或數組中很可能會在一段時間後變得笨拙並可能影響性能。將禁止列表存儲在數據庫中並在您的站點中建立會話時檢查IP會更好。

但是,最重要的行動方式是始終確保您的第三方軟件包(如論壇,博客,維基等)與安全補丁保持同步。常見Web應用程序的漏洞衆所周知並廣爲宣傳,因此保持打補丁非常重要。

附錄養成閱讀http://www.exploit-db.com/的習慣以便及時瞭解新的漏洞。

+0

老實說,我認爲幫助大多數人保護壞人的原因是該網站只使用內部軟件,所以保持最新狀態是沒有意義的。老實說,阻止的IP可能最終會在數據庫中而不是列表中,現在這個列表非常小。 – steveo225

1

要從美國得到IP,MaxMind GeoLite Country應該這樣做。
這是免費GPL和很好地隱藏到他們的網站。

大多數IP定位符是在利用這個免費的DB,
在我的經驗它始終得到國家的權利。

(這是值得向他們購買的一個是的GeoIP市數據庫,那種數據更加可變的,GeoLite City得到的時間是正確的不到70% - 與一些非常壯觀的錯誤)

GeoLite具有數據庫和二進制風格。
二進制文件有一個php庫,可以進行索引查找。

我不會禁止他們顧左右而言他,反正

爲什麼?很多原因。
其中之一是:人們有時會出國旅行,並可能希望在holydays期間檢查他們的網站。

如果我是你的話,我會在頁面上放置一個recaptcha,如果他們通過了,請設置一個祕密的日常cookie 的。
喜歡的東西:

hash('md5',$salt.date('Ymd')); 

MD5不應該被用於那些,反正 - 使用SHA-1 calc下的散列和緩存它的一天)

您可以設置祕密日常cookie也可以通過GeoLite測試。
因此,您不必在每次訪問時查看它。