保護 SSH 伺服器免受暴力破解
我有一個小的 SVN 伺服器,執行 debian 的舊戴爾 optiplex。我對我的伺服器沒有那麼高的要求,因為它只是一個小的 SVN 伺服器……但確實希望它是安全的。
我剛剛將我的伺服器更新為更新更好的 optiplex,並開始研究舊伺服器。我在遇到問題後將其刪除。當我檢查日誌時,它充滿了蠻力嘗試,並且不知何故有人成功進入了我的機器。這個人創建了一些名為“knarkgosse”的額外卷,其中包含兩個目錄“root”和“swap1”或其他內容。真的不知道他們為什麼和做什麼,但肯定想防止這種情況再次發生。不過我覺得這有點奇怪,因為我每隔幾個月左右就會更改一次密碼,而且密碼總是隨機的字母和數字放在一起……不容易暴力破解。
我知道我可以阻止 root 登錄,並使用 sudoers… 並更改 SSH 埠,但我還能做什麼?
所以我有幾個問題:
- 如何在 X 次錯誤嘗試後阻止登錄 5 分鐘。還是在每次錯誤嘗試後緩慢嘗試?
- 伺服器可以連接到某種中央黑名單嗎?跟踪“不安全”且永遠不應被授予訪問權限的 IP 地址的黑名單?
- 我還能做些什麼來為我的伺服器應用安全性?
就像我之前說的,我正在使用 Apache(www-data 使用者問題?)、svn、mysql、php、phpmyadmin、hudson 執行 Debian 5。它位於家庭網路上,埠轉發在 80、443、8080、8180、23 和 22 上。
Fail2ban和Port Knocking應該可以滿足您的大部分需求。
還建議更改您的 SSH 埠並僅允許基於密鑰的身份驗證。
可以說,在添加額外的安全措施時,您可能會達到收益遞減的程度,但話又說回來,何時“足夠安全”由您決定。
禁止 root 登錄也是一個好主意。
安全密碼和密鑰認證是無可替代的。 話雖如此,Fail2Ban是一個很好的工具,可以禁止嘗試驗證太多次使用者的 IP。它也可作為大多數發行版的預建構包使用。請注意,您可能會不小心被禁止,因此請確保您也擁有恢復白名單 IP 或輕鬆訪問控制台…
Fail2Ban 有幾個很好的例子來說明如何配置你所問的一切……但是,它沒有一個通用的壞地址儲存庫。由於容易獲得另一個 IP(dhcp renew/bot-net 攻擊/等),我認為任何地方都沒有這樣的儲存庫。我還將使用常見的“管理員”類型使用者名(root/admin/administrator/sysop/etc..)禁用通過 ssh 登錄,因為這些是最常見的。