題:
為什麼禁用root用戶才需要安全性?
Randomblue
2016-02-16 03:04:36 UTC
view on stackexchange narkive permalink

有關服務器加固的頁面聲明:

出於安全原因,必須禁用root帳戶。

為什麼出於安全原因禁用必要的根帳戶?

我相信您的答案就在您的報價“使用sudo權限創建“影子用戶””上方的部分中
該鏈接僅建議您使用[passwd -l](http://man7.org/linux/man-pages/man1/passwd.1.html)禁用root帳戶的密碼,而不是禁用root用戶以某種更大的方式入賬。您仍然可以執行“ su”。
順便說一句,我不能說我認為那是一篇很棒的文章。
如果您正在運行Ubuntu服務器,請嘗試`tail -f / var / log / auth.log`,查看有多少攻擊者嘗試以root用戶身份登錄。
禁用的root帳戶僅受其密碼強度保護。如果該密碼被洩露,則您的系統也被洩露。
所有這些基本上反映了根源於萬能的Unix原始安全模型在互聯網世界中無法很好地運行。需要更精細的粒度。
關於服務器強化的一頁,詳細介紹了保護/ tmp的重要性,但卻設法使/ tmp和/ var / tmp混淆([它們是不一樣的!] com / fhs / pub / fhs-2.3.html#VARTMPTEMPORARYFILESPRESERVEDBETWEE)),並以某種方式*不*提及[libpam-tmpdir](https://launchpad.net/ubuntu/trusty/+package/libpam-tmpdir)?儘管它肯定有一些好的建議,但顯然該頁面*不應*被視為福音。
相關文章,來自Unix Stack Exchange:[哪種方法最安全的方式來獲得root特權:sudo,su或登錄?](http://unix.stackexchange.com/questions/8581/which-is-the-safest-way-獲取root權限sudo su或登錄/)
@ThorbjørnRavnAndersen:“未禁用的root帳戶僅受其密碼強度的保護”:因此,如果禁用root的密碼登錄並使用ssh密鑰對,那麼問題就解決了!還是?
這是@SteveJessop向正確方向邁出的一步。您可能需要查看Apple在OS X中對“無根”所做的工作。http://apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really
六 答案:
Ohnana
2016-02-16 03:12:38 UTC
view on stackexchange narkive permalink

如果您不使用Root,則使用sudo! Sudo是僅在需要時才成為root的好方法。

  1. Root是一個巨大的目標。 root的用戶名是什麼?根!我很聰明:)
  2. 記錄。 Sudo具有更大的審計記錄命令(這樣,當有人使用sudo愚蠢地做某事時,您可以將其視聽中央日誌記錄服務器)。
  3. 粒狀權限。根是“大圖釘”錘。不要將BFH交給用戶。 Sudo允許您指定用戶可以在沒有密碼的情況下運行更新命令(如aptitude),但是一切都超出了限制!您無法使用root的BFH來執行此操作。 IT使您可以靈活地為用戶批准某些命令,但不允許其他命令。這樣,您就可以構建一個安全策略,該安全策略不需要管理員在每次需要更新計算機(或其他繁瑣的任務)時就物理登錄到計算機。
  4. 白痴證明。 為什麼不給用戶BFH?因為他們很笨。為什麼我使用sudo而不是root?我很笨啞意味著錯誤,而錯誤意味著安全漏洞和sysadmin問題。
  5. ol>
然後用戶輸入:`sudo bash`
並且,如果您有適當的審核策略,則用戶將看到:`權限被拒絕。將報告此事件。
然後,用戶鍵入`SHELL = / my / program apt-get install <我忘記>`並得到一個shell,因為某些軟件包將`$ SHELL`誤認為`sh`。
或者,用戶使用setuid shell創建一個軟件包,然後安裝它。或安裝具有已知漏洞的舊版本的根守護程序。
儘管您對在root帳戶上使用`sudo`提出了一個很好的論據,但我不確定您實際上為禁用root密碼提出了一個論據。
@Gilles除非您僅允許更新或有軟件包白名單。
您可以在@Ohnana啟用root帳戶的同時執行所有操作。僅在必須強迫使用您系統的人遵守規則(即他們愚蠢或無法完全信任)時才需要禁用它。
@TomLeek`sudo su`似乎可以更好地工作,因為它可以正確設置環境,運行登錄外殼等。
@PyRulez僅允許更新無濟於事。但是,許多發行版上的默認sudo配置會清除大多數環境變量(包括“外殼”),確實可以解決這種特殊的升級方式。可能還有其他涉及具有交互式配置的軟件包,儘管只允許升級可以大大降低那裡的風險。
@immibis運行sudo su而不是sudo bash既無關緊要(Tom的觀點是用戶運行一個shell,之後他們可以做任何想要的事情),而且毫無意義(`sudo su無法“正確設置環境” ”,而不是`sudo bash`,並且不運行登錄shell —它運行用戶的登錄shell(用戶數據庫的“ pw_shell”字段),但不作為登錄shell(“-bash”或類似的東西運行`.profile`))。
我對此唯一的疑問是使用了“防白痴”一詞。可以使系統防呆,但只能防白痴。真正的白痴證明是不可能的,因為宇宙會不斷製造出更好的白痴。
可以說,使用專用的root帳戶並始終啟動root shell比使用sudo更為安全,因為sudo要么緩存憑據(允許惡意程序隱藏在後台並乘上合法主機的權限)要求),或者要求您經常輸入密碼(這是一種習慣)。
@Gilles @immibis的含義是用戶可能是惡意的,在這種情況下,不能使用sudo。
@immibis,的sudo su不執行sudo -i所做的任何事情,只是不必要地調用了不必要的可執行文件。
那麼,為什麼不重命名root?
@Joshua很難做到,並且很可能會在系統的整個生命週期中困擾您。每個人都取決於根!最好禁用登錄並從那裡開始工作。
@Ohnana: vim / etc / password很簡單。文件由ID而非名稱所有。
@Joshua / etc / shadow,/ etc / groups也是如此。另外,`find / etc -type f -exec grep -l root {} +`是有多少配置文件以root身份而不是以UID 0身份查找root。這還不包括為新系統重新編譯所需的所有工具。配置...在一個理想的世界中,每個人都會說UID 0而不是root,但是那些該死的肉袋會使一切變得混亂。
您忽略了我已經成功嘗試過的事實。
對我而言,通過root登錄進行sudo的最大原因是:如果您需要授予多個用戶的root訪問權限,則想撤消一個人的權限(例如,他或她離開公司)。使用sudo輕鬆。如果您將root密碼交給了這些人,則需要更改它,其他所有人都需要記住新密碼。
@Ohnana [確實會報告此事件](https://xkcd.com/838/)。
schroeder
2016-02-16 03:11:58 UTC
view on stackexchange narkive permalink

您鏈接到的網站在解釋他們讓您做什麼方面的能力很差。 root帳戶不是 被禁用,而是root的密碼被禁用。這就是 passwd -l 所做的。

這些說明的目的是為了使人們無法以root用戶身份登錄,因為root帳戶易於猜測。我不確定他們使用“難以猜測的名稱”創建偽用戶的方法會更加安全...

root確實是ssh bot的主要目標。如果您忘記在sshd_config中禁用它,則操作系統會備份您。
Tom Leek
2016-02-16 03:12:25 UTC
view on stackexchange narkive permalink

這是大型機時代以來的古老傳統。這個想法是 root 可以在計算機上完成他想做的事情,包括替換內核或銷毀UEFI變量,這會阻塞計算機。而非 root 帳戶則不能-除非通過 sudo 授予該帳戶管理權限,這是Ubuntu所擁有的,並且完全破壞了上述原理。

真的,禁用 root 帳戶現在專門用於安撫長老神,他們:

  1. 脾氣暴躁;
  2. 已經過時了;
  3. 已經死了幾十年,但是仍然被強大的牧師等級的牧師所崇拜,這些牧師統稱為“合格審核員”。
  4. ol>

    在實踐中,您的數字生活完全可以通過普通用戶帳戶訪問,因此相對於 root 用戶進行任何保護都沒有多大意義。過去,當機器是由數百個可能彼此敵對的用戶共享的大型服務器時,以 root / non- root 的區別來處理已經成為過去。 >

“您可以通過普通用戶帳戶完全訪問您的數字生活”-OP在*服務器*加固的情況下詢問。這假定為桌面系統。
另外,我相信`sudo`會記錄東西。
在多用戶計算機上,有一個責任方面。根是一個通用帳戶,因此,由根執行的任何操作都不能與用戶綁定(除非從特定用戶帳戶提升了登錄名)。
這是嘲諷嗎?還是您還使用密碼認證而不是密鑰對?
Mike McManus
2016-02-17 04:51:41 UTC
view on stackexchange narkive permalink

請注意(至少在Ubuntu及其衍生版本上),在禁用root密碼時需要權衡取捨。

如果您的系統出現災難,則需要從控制台將系統引導到恢復(或單用戶)模式。如果禁用了root密碼(默認情況下是默認密碼),那麼在引導到單用戶模式時就不需要任何身份驗證,因為root帳戶沒有用於此目的的憑據,在這種情況下,不能保證其他任何帳戶都能正常工作。這是通過sulogin程序中的特殊代碼處理的。

總的來說,這很容易做到:在將系統開放給未經身份驗證的root用戶的同時,您可以防止一整類的遠程攻擊。從物理控制台登錄。請記住,您無論如何都無法通過物理訪問來保護攻擊者的系統。這就是為什麼存在帶有電子訪問控制的安全數據中心的原因。

Alexander C. Solon
2016-02-16 11:46:49 UTC
view on stackexchange narkive permalink

通常禁用Root以在整個Linux操作系統中提供額外的安全性。 root用戶具有無論其重要性如何實際上可以進行任何更改的能力。這使它成為黑客,病毒等的常見目標。禁用它(或禁用密碼)可確保如果檢索到密碼(實際上並不那麼難),則無法登錄該帳戶。

實際上,即使有基本的用戶錯誤,在現代Linux系統上“檢索”複雜的root密碼也可能非常困難。
總是有暴力破解方法,或者如果它們使用帶有任何單詞的密碼,則可以使用彩虹表。無論哪種方式,都可以這樣做,如果您正在運行的服務器可能成為流行的目標(例如,用於Google,Facebook或其他設備的服務器),則最好確保它不會發生
它取決於配置,但是祝您好運,蠻力地強制使用bcrypt存儲了一個複雜的root密碼。而且由於密碼是固定的(幾乎所有可能的配置,包括大多數默認設置),所以彩虹表是無用的。
GAD3R
2016-02-16 17:21:36 UTC
view on stackexchange narkive permalink

默認情況下,root帳戶密碼在Ubuntu中已鎖定。

因為如果該用戶的帳戶被攻擊者破壞,則攻擊者還可以在下次用戶獲得root特權時使用。用戶帳戶是該鏈中的薄弱環節,因此必須與root用戶一樣小心保護。

root用戶密碼不需要與需要執行某種管理類型的每個人共享。要禁用您的root帳戶,請使用以下命令:

  sudo passwd -dl root  


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...