2010-06-19 44 views
0

我收到很多失敗的登錄請求垃圾郵件發送者/漫遊器嘗試強制憑據,我也收到很多請求,如/forum/index.php在Rails App中阻止垃圾郵件發送者的可靠方法?

我寫了一個腳本,從production.log解析那些攻擊者的IP的:

#!/bin/bash 

# Failed Logins 
grep "Failed " ~/app/log/production.log | egrep -o -e "[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}" | sort | uniq > ~/spammers.txt 

# Try to GET .php Files 
cat ~/app/log/production.log | awk '$0!~/^$/ {print $0}' | sed -n -e "N; /\.php/p" | grep "ApplicationController#index" | egrep -o -e "[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}" | sort | uniq >> ~/spammers.txt 

但我不能阻止(.httaccess)的IP的,直到我手動檢查其來源由Geolocation

是否存在針對此問題的Rail-ish解決方案?

回答

1

我不認爲有這樣的Rails答案。

如果你正在linux服務器上運行,你可以使用LFD(登錄失敗守護進程)進行研究。 http://www.configserver.com/cp/csf.html

一旦您設置看你的Rails應用程序,它會在足夠登錄失敗,入侵企圖後,防火牆級別等

-1

有很多事情你可以做。沒有特別的Rails-y,但應該有所幫助。

首先,我建議您使用JanRain Engage (formerly rpxnow.com)進行身份驗證。該產品使用戶可以使用來自Google,Yahoo,Microsoft,Facebook和一系列其他OpenID提供商的身份驗證憑據登錄到您的網站。讓他們擔心DOS攻擊。其次,如果他們有特定的URL,他們試圖擊中,讓你的網站作爲一個靜態網頁提供它,並設置HTTP標頭,使流氓頁面緩存在他們的瀏覽器。那麼,至少你的服務器不會受到嚴重打擊。

第三,記錄嘗試登錄到您的頁面的垃圾郵件製造者的IP地址,比如說,每分鐘10次以上,如果他們嘗試再次登錄,則通過放置4秒睡眠在呈現其頁面之前。

+0

不知怎麼阻止他們,我敢打賭,黑客寫劇本不尊重緩存標題。另外,我敢打賭,黑客只是打擊常見的URL,即使它是一個開放的ID站點,也會繼續這樣做。 – 2010-06-19 22:07:21

+0

在渲染頁面之前使用sleep只會影響你的rails進程。不要這樣做。 – 2010-06-19 22:07:48

+0

@Scott S - 好點。睡眠應該發生在呈現登錄表單的網頁javascript或登錄響應表單中。但你是第一個正確的......垃圾郵件機器人通常不是網絡瀏覽器中的程序。 – 2010-06-19 22:41:41