Linux

為什麼在 chroot 中執行 named(bind) 對安全性如此重要?或者也許不是?

  • April 19, 2018

我正在玩 bind 並開始想知道為什麼這個軟體是,例如,在 CentOS 中以 chroot 執行。不要誤解我,我知道什麼是 bind 和 chroot (jail) 是乾什麼用的。但我的主要問題是,在沒有 chroot 的情況下執行綁定非常不安全?

在沒有監獄的情況下設置它真的有害嗎(超過任何其他服務或軟體)。在系統中,有許多程序在沒有 chroot 的情況下執行,我認為其中任何一個的妥協都是非常危險的,但是是什麼讓 named 比其他沒有 chroot 執行的軟體更危險?

正如@Some Guy 提到的,您必須從歷史的角度考慮這一點。

從歷史的角度來看,一個硬體就是一個作業系統下的十幾個不同的服務。如果一項服務遭到破壞,那麼該硬體上的所有內容都會遭到破壞。

有了虛擬化,這已經不是什麼大問題了。雖然從 VM 中逃脫並非不可能,但這絕非易事。與以 root 權限執行的程序脫離 chroot 相比,脫離 VM 肯定更難。所以我的綁定伺服器在他們自己的虛擬機上執行。在這種情況下,chroot 確實沒有多大意義,因為損壞已經受到限制,因為它是一個虛擬機。

chroot 是創建虛擬機之類的非常弱的嘗試。任何具有 root 權限的程序都可以逃避 Chroot。chroot 不是預期的,也不能用作安全機制。帶有 BSD 監獄或 LXC 的 chroot 為您提供作業系統級別的虛擬化並提供安全功能。但如今,啟動整台機器的新虛擬機非常容易,因此可能不值得為此付出努力,或學習如何使用作業系統級別的虛擬化工具。

早期版本的 bind 並沒有放棄特權。在 Unix 上,只有 root 帳號才能打開 1024 以下的埠,而眾所周知的 Bind 需要監聽 udp/53 和 tcp/53。由於 Bind 以 root 身份啟動,並且不會放棄特權,因此任何妥協都意味著整個系統都可能受到損害。如今,幾乎所有軟體都將開始打開它們的套接字並執行任何其他需要 root 權限的操作,然後它們會將執行的使用者更改為非特權帳戶。一旦特權被刪除,受到損害的影響對主機系統的影響就會小得多。

引用自:https://serverfault.com/questions/559463