自動檢查 CentOS 或 Scientific Linux 上的安全更新?
我們的機器執行基於 RedHat 的發行版,例如 CentOS 或 Scientific Linux。如果已安裝的軟體包存在任何已知漏洞,我們希望系統自動通知我們。FreeBSD 使用ports-mgmt/portaudit埠來做這件事。
RedHat 提供yum-plugin-security ,它可以通過它們的 Bugzilla ID、 CVE ID 或諮詢 ID檢查漏洞。此外,Fedora 最近開始支持yum-plugin-security。我相信這是在 Fedora 16 中添加的。
截至 2011 年底, Scientific Linux 6 不支持 yum-plugin-security 。它確實附帶
/etc/cron.daily/yum-autoupdate
,每天更新 RPM。但是,我認為這不僅僅處理安全更新。CentOS 不支持
yum-plugin-security
.我監視 CentOS 和 Scientific Linux 郵件列表的更新,但這很乏味,我想要一些可以自動化的東西。
對於我們這些維護 CentOS 和 SL 系統的人來說,是否有任何工具可以:
- 如果我目前的 RPM 存在已知漏洞,會自動(通過 cron 程序化)通知我們。
- 或者,自動安裝解決安全漏洞所需的最低升級,這可能
yum update-minimal --security
在命令行上?我考慮過使用
yum-plugin-changelog
列印出每個包的更改日誌,然後解析某些字元串的輸出。是否有任何工具可以做到這一點?
Scientific Linux 現在可以從命令行列出安全更新。此外,我可以更新系統以僅應用安全更新,這比預設設置更好(“只需更新所有內容!包括您不關心的錯誤修復並引入回歸。”
我已經在 Scientific Linux 6.1 和 6.4 上對此進行了測試。我不確定這是什麼時候正式宣布的,但我會在發現時發布更多資訊。
這裡有些例子。
列出安全更新的摘要:
[root@node1 ~]# yum updateinfo Loaded plugins: changelog, downloadonly, fastestmirror, priorities, security Loading mirror speeds from cached hostfile Updates Information Summary: available 4 Security notice(s) 1 important Security notice(s) 3 moderate Security notice(s) 2 Bugfix notice(s) updateinfo summary done root@node1 ~]# yum list-sec Loaded plugins: changelog, downloadonly, fastestmirror, priorities, security Loading mirror speeds from cached hostfile SLSA-2013:1459-1 moderate/Sec. gnupg2-2.0.14-6.el6_4.x86_64 SLSA-2013:1436-1 moderate/Sec. kernel-2.6.32-358.23.2.el6.x86_64 SLSA-2013:1436-1 moderate/Sec. kernel-devel-2.6.32-358.23.2.el6.x86_64 SLSA-2013:1436-1 moderate/Sec. kernel-firmware-2.6.32-358.23.2.el6.noarch SLSA-2013:1436-1 moderate/Sec. kernel-headers-2.6.32-358.23.2.el6.x86_64 SLSA-2013:1457-1 moderate/Sec. libgcrypt-1.4.5-11.el6_4.x86_64 SLSA-2013:1270-1 important/Sec. polkit-0.96-5.el6_4.x86_64 SLBA-2013:1486-1 bugfix selinux-policy-3.7.19-195.el6_4.13.noarch SLBA-2013:1491-1 bugfix selinux-policy-3.7.19-195.el6_4.18.noarch SLBA-2013:1486-1 bugfix selinux-policy-targeted-3.7.19-195.el6_4.13.noarch SLBA-2013:1491-1 bugfix selinux-policy-targeted-3.7.19-195.el6_4.18.noarch updateinfo list done
CVE 列表:
[root@node2 ~]# yum list-sec cves Loaded plugins: changelog, downloadonly, fastestmirror, priorities, security Loading mirror speeds from cached hostfile * epel: mirrors.kernel.org * sl6x: ftp.scientificlinux.org * sl6x-security: ftp.scientificlinux.org 7404 packages excluded due to repository priority protections CVE-2012-6085 moderate/Sec. gnupg2-2.0.14-6.el6_4.x86_64 CVE-2013-4351 moderate/Sec. gnupg2-2.0.14-6.el6_4.x86_64 CVE-2013-4402 moderate/Sec. gnupg2-2.0.14-6.el6_4.x86_64 CVE-2013-4162 moderate/Sec. kernel-2.6.32-358.23.2.el6.x86_64 CVE-2013-4299 moderate/Sec. kernel-2.6.32-358.23.2.el6.x86_64 CVE-2013-4162 moderate/Sec. kernel-firmware-2.6.32-358.23.2.el6.noarch CVE-2013-4299 moderate/Sec. kernel-firmware-2.6.32-358.23.2.el6.noarch CVE-2013-4242 moderate/Sec. libgcrypt-1.4.5-11.el6_4.x86_64 updateinfo list done
然後我可以應用所需的最小更改集
[root@node1 ~]# yum update-minimal --security
或者,只需修補所有內容:
[root@node1 ~]# yum --quiet --security check-update gnutls.x86_64 2.8.5-14.el6_5 sl-security libtasn1.x86_64 2.3-6.el6_5 sl-security [root@node1 ~]# yum --quiet --security update ================================================================================================================= Package Arch Version Repository Size ================================================================================================================= Updating: gnutls x86_64 2.8.5-14.el6_5 sl-security 345 k libtasn1 x86_64 2.3-6.el6_5 sl-security 237 k Transaction Summary ================================================================================================================= Upgrade 2 Package(s) Is this ok [y/N]: Y [root@node1 ~]#
如果我在 CentOS6 機器上嘗試同樣的命令,我不會得到任何結果。我知道一些“137 個可用的軟體包”包含安全修復程序,因為我昨天通過 CentOS 郵件列表收到了勘誤通知。
[root@node1 ~]# yum --security check-update Loaded plugins: downloadonly, fastestmirror, security Loading mirror speeds from cached hostfile * base: mirrors.usc.edu * epel: mirrors.kernel.org * extras: mirror.web-ster.com * updates: mirrors.kernel.org Limiting package lists to security relevant ones No packages needed for security; 137 packages available [root@node1 ~]#
如果您絕對想使用
yum security plugin
,有一種方法可以做到這一點,雖然有點複雜。但是一旦你設置好了,這一切都是自動化的。唯一的要求是您需要至少訂閱一個 RHN。這是一個很好的投資IMO,但讓我們堅持這一點。
訂閱後,您可以使用mrepo或reposync來設置內部 Yum 儲存庫,它反映 CentOS 儲存庫。(或者你可以只使用 rsync)。
然後使用附加到這個郵件列表文章的腳本,定期連接到您的 RHN 訂閱,下載安全包資訊。現在你有兩個選擇。
從生成的“updateinfo.xml”文件中只提取包名。使用 puppet 或 cfengine 或 ssh-in-a-for-loop 使用該資訊“搜尋”您的伺服器以查找需要安全或其他更新的 Rpm。這更簡單,給你你想要的一切,但你不能使用
yum security
.另一種選擇是使用這裡
modifyrepo
顯示的命令,注入. 在執行此操作之前,您必須修改 perl 腳本以將 xml 中的 Rpm MD5 總和從 RHN 更改為 Centos 總和。而且您必須確定 CentOS 儲存庫是否確實包含 中提到的所有 Rpm ,因為它們有時落後於 RHN。但這沒關係,你可以忽略 CentOS 沒有趕上的更新,因為除了從 SRPM 建構它們之外,你幾乎無能為力。updateinfo.xml``repomd.xml``updateinfo.xml
使用選項 2,您可以
yum security
在所有客戶端上安裝外掛,它會工作。編輯:這也適用於 Redhat RHEL 5 和 6 機器。並且比使用 Spacewalk 或 Pulp 等重量級解決方案更簡單。