Centos

yum install http - 這安全嗎?

  • September 11, 2018

我對使用 yum 安裝軟體包不是很熟悉。在前世,我使用了 apt。

目前,我正在查看一些執行說明

# yum install http://example.com/package.rpm

它顯然會訂閱一個特定的儲存庫,可以從中下載更多的包。這是安全的事情嗎?

作為比較,我知道 apt 包具有 gpg 簽名,這意味著通過 http 下載不是問題。如此處所述。並且在使用 apt 下載主記憶體儲庫之外的包時,您可以手動添加一個 gpg 密鑰以供 apt 接受,以確保任何非標準包具有相同的可信來源。

如果我執行上述命令,yum 會在它開始安裝之前要求我接受 gpg 密鑰,還是它可以只安裝任何東西?

如果相關,我的/etc/yum.conf文件包含gpgcheck=1在該[main]部分內。

你的問題有一點需要解釋。

YUM首先,了解如何rpm協同工作很重要:

  1. RPM 是一種包格式,並且有一個類似命名的命令行工具rpm,用於安裝單個 RPM 包。您可以將rpm命令行工具視為類似於dpkg命令行工具,因為它們都安裝了沒有依賴關係的單個包。
  2. yum是一個安裝 RPM 包及其依賴項的高級程序。您可以將yum命令視為類似於apt-get兩者都可以安裝包及其所有依賴項。
  3. 當你執行時,yum install你應該使用包名,而不是 URL。例如:yum install package,類似於您將如何執行:apt-get install package
  4. 如果你有一個包 URL,你可以執行,但如果你沒有安裝包的依賴項,你將需要使用(痛苦的)或使用和配置的儲存庫rpm -i https://url一一安裝它們。rpm -i``yum

現在,就 GPG 而言,有一些適用於 Debian 和 RPM 打包系統的事情需要了解,但最重要的事情需要了解:

  1. 兩個系統都有兩組 GPG 簽名:包本身的 GPG 簽名和儲存庫上的 GPG 簽名。
  2. Debian 軟體包沒有檢查其 GPG 簽名,並且來自 Ubuntu 和 Debian 項目儲存庫的官方軟體包都沒有 GPG 簽名。
  3. 當通過明文 HTTP 使用時,這兩個系統都容易受到一系列 GPG 重放攻擊;如果可能的話,你絕對應該 100% 通過 HTTPS 而不是純文字 HTTP 安裝你的包。

就 RPM 和 YUM GPG 簽名而言:

  1. 首先,您可以在配置文件中指定 GPG 密鑰的路徑或 URL:gpgkey=https://example/gpg.keygpgkey=/usr/share/example/gpg.key. 如果需要超過 1 個,您可以指定多個 GPG 密鑰。
  2. 其次,有兩種選擇:gpgcheck=1repo_gpgcheck=1。第一個選項導致yum install驗證包本身的 GPG 簽名,第二個選項驗證儲存庫的 GPG 簽名。理想情況下,您應該同時使用兩者,但許多儲存庫未正確配置為同時支持兩者。
  3. 第一次執行時yum installyum將嘗試導入列出的 GPG 密鑰(gpgkey如果尚未導入)。系統將提示您並要求您接受或拒絕。
  4. 您必須pygpgme在系統上安裝該軟體包才能驗證 GPG 簽名。在最新版本的 RHEL 和 CentOSpygpgme上會自動安裝 的依賴項yum,但您應該驗證它是否已安裝在您的系統上。
  5. 沒有等價的apt-transport-https,yum可以通過 HTTPS 開箱即用,但您應確保yum您使用的版本具有sslverify預設啟用的選項;有些版本yum沒有。如果您的版本沒有,則應將其設置為啟用。驗證 SSL 證書至關重要。

即使在包和儲存庫上都有 GPG 簽名,儲存庫仍然容易受到重放攻擊;如果可能,您應該通過 HTTPS 訪問您的儲存庫。一種攻擊的簡短解釋是,惡意攻擊者可以在特定時間對儲存庫元數據和相關的 GPG 簽名進行快照,並將該元數據和簽名重放給請求它的客戶端,從而阻止客戶端看到更新的包。由於元數據沒有被觸及,GPG 簽名將是有效的。然後,攻擊者可以利用漏洞利用軟體中未更新的已知漏洞來攻擊機器。您可以在本文中閱讀有關對包管理器的攻擊的更多資訊。

我寫了兩篇關於GPG 和 YUM/rpm以及GPG 和 APT的博文。

如果您還有其他我可以回答的問題,請發表評論;包管理非常難以正確執行。

引用自:https://unix.stackexchange.com/questions/317698