為什麼通過 SSH 的 root 登錄如此糟糕,以至於每個人都建議禁用它?
Internet 上的每個人都建議通過SSH禁用 root 登錄,因為這是一種不好的做法,並且系統中存在安全漏洞,但沒有人解釋為什麼會這樣。
啟用 root 登錄(尤其是禁用密碼登錄)有什麼危險?
如果允許密碼驗證,從安全的角度來看,X 符號使用者名和 Y 符號密碼或 root 使用者名和 X+Y 符號密碼有什麼區別?
為什麼 root over SSH 不好
有很多機器人試圖通過 SSH 登錄到您的電腦。這些機器人的工作方式如下。
他們執行類似的操作
ssh root@$IP
,然後嘗試使用“root”或“password123”等標準密碼。他們會盡可能長時間地這樣做,直到找到正確的密碼。在全球可訪問的伺服器上,您可以在日誌文件中看到大量日誌條目。我可以達到每分鐘 20 次或更多。當攻擊者運氣好(或有足夠的時間)並找到密碼時,他們將擁有 root 訪問權限,這意味著您遇到了麻煩。
但是,當您禁止 root 通過 SSH 登錄時,機器人需要先猜測使用者名,然後再猜測匹配的密碼。因此,可以說似是而非的密碼列表有
N
條目,而似是而非的使用者列表的M
條目很大。該機器人有一組N*M
條目要測試,因此與只有一組 size 的根案例相比,這使得機器人更難一些N
。有些人會說這個額外
M
的東西並沒有真正提高安全性,我同意這只是一個小的安全性增強。但我認為這更多是因為這些小掛鎖本身並不安全,但它們阻礙了很多人輕鬆訪問。當然,這僅在您的機器沒有其他標準使用者名(如 tor 或 apache)時才有效。不允許使用 root 的更好理由是 root 對機器造成的損害比標準使用者所能做的要大得多。因此,如果他們運氣不好,他們找到了您的密碼,整個系統就會失去,而使用標準使用者帳戶,您只能操縱該使用者的文件(這仍然非常糟糕)。
在評論中提到,普通使用者可以有權使用
sudo
,如果這個使用者的密碼被猜到,系統也會完全失去。總之,我想說攻擊者獲得哪個使用者的密碼並不重要。當他們猜出一個密碼時,您將無法再信任該系統。攻擊者可以使用該使用者的權限來執行命令
sudo
,攻擊者還可以利用您系統中的弱點並獲得 root 權限。如果攻擊者可以訪問您的系統,您將無法再信任它。這裡要記住的是,系統中允許通過 SSH 登錄的每個使用者都是一個額外的弱點。通過禁用 root,您可以消除一個明顯的弱點。
為什麼 SSH 上的密碼不好
禁用密碼的原因非常簡單。
- 使用者選擇了錯誤的密碼!
嘗試密碼的整個想法只有在密碼可以猜到時才有效。因此,當使用者擁有密碼“pw123”時,您的系統將變得不安全。人們選擇密碼的另一個問題是,他們的密碼從來都不是真正隨機的,因為那樣很難記住。
此外,使用者傾向於重複使用他們的密碼,用它來登錄 Facebook 或他們的 Gmail 帳戶以及您的伺服器。因此,當黑客獲得該使用者的 Facebook 帳戶密碼時,他就可以進入您的伺服器。使用者很容易通過網路釣魚失去它,或者 Facebook 伺服器可能被黑客入侵。
但是當您使用證書登錄時,使用者不會選擇他的密碼。該證書基於一個隨機字元串,該字元串非常長,從 1024 位到 4096 位(約 128 - 512 個字元的密碼)。此外,此證書僅用於登錄您的伺服器,不用於任何外部服務。
監控根訪問
@Philip Couling的評論應該是一個答案:
禁用 root 有一個管理原因。在商業伺服器上,您總是希望按人控制訪問。根永遠不是一個人。即使您允許某些使用者具有 root 訪問權限,您也應該強制他們通過自己的使用者登錄,然後 su - 或 sudo -i 以便記錄他們的實際登錄。這使得撤銷對個人的所有訪問權限變得更加簡單,因此即使他們擁有 root 密碼,他們也無法對其進行任何操作。——菲利普·庫林
我還要補充一點,它允許團隊通過適當的 sudo 配置來強制執行最小特權原則(但編寫一個聽起來更容易)。這使團隊能夠更好地分配不重要的內容,而不會洩露城堡的鑰匙。
連結
http://bsdly.blogspot.de/2013/10/the-hail-mary-cloud-and-lessons-learned.html
這篇文章來自評論,我想給它一個更突出的位置,因為它更深入地探討了試圖通過 SSH 登錄的殭屍網路,他們是如何做到的,日誌文件的樣子和可以做些什麼來阻止他們。它是由彼得漢斯汀寫的。