Centos
yum install http - 這安全嗎?
我對使用 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
協同工作很重要:
- RPM 是一種包格式,並且有一個類似命名的命令行工具
rpm
,用於安裝單個 RPM 包。您可以將rpm
命令行工具視為類似於dpkg
命令行工具,因為它們都安裝了沒有依賴關係的單個包。yum
是一個安裝 RPM 包及其依賴項的高級程序。您可以將yum
命令視為類似於apt-get
兩者都可以安裝包及其所有依賴項。- 當你執行時,
yum install
你應該使用包名,而不是 URL。例如:yum install package
,類似於您將如何執行:apt-get install package
。- 如果你有一個包 URL,你可以執行,但如果你沒有安裝包的依賴項,你將需要使用(痛苦的)或使用和配置的儲存庫
rpm -i https://url
一一安裝它們。rpm -i``yum
現在,就 GPG 而言,有一些適用於 Debian 和 RPM 打包系統的事情需要了解,但最重要的事情需要了解:
- 兩個系統都有兩組 GPG 簽名:包本身的 GPG 簽名和儲存庫上的 GPG 簽名。
- Debian 軟體包沒有檢查其 GPG 簽名,並且來自 Ubuntu 和 Debian 項目儲存庫的官方軟體包都沒有 GPG 簽名。
- 當通過明文 HTTP 使用時,這兩個系統都容易受到一系列 GPG 重放攻擊;如果可能的話,你絕對應該 100% 通過 HTTPS 而不是純文字 HTTP 安裝你的包。
就 RPM 和 YUM GPG 簽名而言:
- 首先,您可以在配置文件中指定 GPG 密鑰的路徑或 URL:
gpgkey=https://example/gpg.key
或gpgkey=/usr/share/example/gpg.key
. 如果需要超過 1 個,您可以指定多個 GPG 密鑰。- 其次,有兩種選擇:
gpgcheck=1
和repo_gpgcheck=1
。第一個選項導致yum install
驗證包本身的 GPG 簽名,第二個選項驗證儲存庫的 GPG 簽名。理想情況下,您應該同時使用兩者,但許多儲存庫未正確配置為同時支持兩者。- 第一次執行時
yum install
,yum
將嘗試導入列出的 GPG 密鑰(gpgkey
如果尚未導入)。系統將提示您並要求您接受或拒絕。- 您必須
pygpgme
在系統上安裝該軟體包才能驗證 GPG 簽名。在最新版本的 RHEL 和 CentOSpygpgme
上會自動安裝 的依賴項yum
,但您應該驗證它是否已安裝在您的系統上。- 沒有等價的
apt-transport-https
,yum
可以通過 HTTPS 開箱即用,但您應確保yum
您使用的版本具有sslverify
預設啟用的選項;有些版本yum
沒有。如果您的版本沒有,則應將其設置為啟用。驗證 SSL 證書至關重要。即使在包和儲存庫上都有 GPG 簽名,儲存庫仍然容易受到重放攻擊;如果可能,您應該通過 HTTPS 訪問您的儲存庫。一種攻擊的簡短解釋是,惡意攻擊者可以在特定時間對儲存庫元數據和相關的 GPG 簽名進行快照,並將該元數據和簽名重放給請求它的客戶端,從而阻止客戶端看到更新的包。由於元數據沒有被觸及,GPG 簽名將是有效的。然後,攻擊者可以利用漏洞利用軟體中未更新的已知漏洞來攻擊機器。您可以在本文中閱讀有關對包管理器的攻擊的更多資訊。
我寫了兩篇關於GPG 和 YUM/rpm以及GPG 和 APT的博文。
如果您還有其他我可以回答的問題,請發表評論;包管理非常難以正確執行。