From王錄華程序猿的人類學
我大約是在2012年左右時,在網絡和私有云兩大領域之外,又在操作系統領域得到一個非常有挑戰的新機遇:為公司超過30萬臺的服務器提供安全的Linux操作系統解決方案,并為操作系統領域提供24x7應急響應和支持服務(Tier 3 Escalation)。我得到Linux社區一些朋友的幫助,在較短的時間內快速成立了一個研發團隊,其中一位技術大拿是看到我們這個領域的大牛左耳朵耗子轉發貼子后和我取得聯系并加入的。我們最終在Linux領域交付的產品,內部的名字叫“APOL Image” (基于Oracle Linux 和Oracle VM Server),以及相關用于操作系統安全評估、修復和強化的工具集。這個解決方案不僅應用企業內部的部署,還應用于公有云和一些特別需求的外部客戶,包括XX聯邦政府。在2018年,團隊成員在美國舊金山的Oracle OpenWorld 2018上發表了主題為“Perform In-Place Upgrade for Large-Scale Cloud Infrastructure”的演講,將部分經驗分享了出來。
本文就已經公開的部分信息,簡要地概述一下我們是如何提供安全的Linux操作系統解決方案的。
1
最小化安裝
(一)決定最小化安裝包清單的基本原則
我們的解決方案是基于Oracle Linux(OL,以前稱為Oracle Enterprise Linux),是由Oracle自行分發的Linux發行版,自2006年底以來部分由GNU通用公共許可證提供。它是從Red Hat Enterprise Linux(RHEL)源代碼編譯而來,用Oracle代替Red Hat品牌。它有很多針對Oracle產品的加強和Bug Fix,也被Oracle云和Oracle集成系統(如Oracle Exadata等)使用。
在安裝Oracle Linux的系統上,我們建議刪除不需要的RPM,以最小化軟件占用空間。那么,我是如何確定這個最小化清單呢?
最小化清單包括如下幾點:
(1)基礎包 (@coreYum groups),以及其依賴的軟件包。(2)Oracle UEK 內核 (kernel-uek,kernel-uek-firmware,kernel-uek-devel)。(3)安裝RDBMS數據庫所依賴的軟件包 (oracle-rdbms-server-12cR1-preinstall etc., 但是不包括RDBMS數據庫或preinstall本身)(4)JVM 或 Oracle Java JDK 所依賴的軟件包(不包括JVM/JDK本身)(5)VNC Server (tigervnc-server or vnc-server) 所依賴的軟件包(不包括tigervnc-server/vnc-server本身,也不包括X WINDOWS)(6)一些通用的基礎軟件包,例如 audit.x86_64, authconfig.x86_64等等。 (8)運維所需要的額外的軟件包,包括安全工具(比如setools)、我們自己定制的性能數據收集軟件包(Oracle OSWatcher)、硬件管理數據包(oracle-hmp-tools.x86_64, MegaCli.noarch,smartmontools.x86_64, lldpd.x86_64)。
(二)對每個OL版本,使用CHROOT來生成原始的最小化軟件包清單
我們使用CHROOT測試并生成每個OL版本的最小化包列表的初始版本。其中,首先要安裝oraclelinux-release軟件包。 在release安裝正確后,我們可以運行yum,使用“--installroot”選項在chroot目錄中安裝其他軟件包了。
以下是生成包列表的示例過程。
CHROOT=./CHROOTCDROM=./CDROMYUM_REPO_FILE=yum_repo.repomkdir -p ${CDROM}mount -o loop,ro $ISO_FILE ${CDROM}cat > $YUM_REPO_FILE <[main]include=/etc/yum.confplugins=1group_package_types=mandatory[rpm_footprint_dvd]name=rpm_footprint_dvdbaseurl=file://${CDROM}/Servergpgkey=file://${CDROM}/RPM-GPG-KEYgpgcheck=0enabled=1[rpm_footprint_addons]name=rpm_footprint_addons...skip....[rpm_footprint_uek]name=rpm_footprint_uek...skip....EOF!
mkdir -p ${CHROOT}mkdir -p ${CHROOT}/var/lib/rpmrpm --rebuilddb --root=${CHROOT}yumdownloader -c $YUM_REPO_FILE --disablerepo=* --enablerepo=rpm_footprint* --installroot=${CHROOT} oraclelinux-releaserpm --root=${CHROOT} -ivh --nodeps $LINUX_RELEASEyum -c $YUM_REPO_FILE --disablerepo=* --enablerepo=rpm_footprint* --installroot=${CHROOT} groupinstall -y "Core"rpm --root=${CHROOT} -ivh --nodeps $KERNEL_UEK# Install DB and Java, and Othersyum -c $YUM_REPO_FILE --disablerepo=* --enablerepo=rpm_footprint* --installroot=${CHROOT} install -y $PKG# Remove the Java JDK and RDBMS preinstall packagesyum -c $YUM_REPO_FILE --disablerepo=* --enablerepo=rpm_footprint* --installroot=${CHROOT} erase -y $PKG# Get the rpm listrpm --root=${CHROOT} -qa --qf '%{n}-%{v}-%{r}.%{arch}.rpm ' |sort > rpm-list.txt
(三)審核最小化軟件包清單
審核每個軟件包的來源、功能,以及是否真的必要將其收入用于產生環境的Linux Base Image中。
2
LINUX配置的最佳實踐指南
有了軟件包清單,接下來是決定相關的配置了。
(一)優化配置
我的團隊基于超過30萬的服務器的運維狀態、以及超過1萬條Bug的研究分析,提煉出了一個針對生產環境的Oracle Linux配置最佳實踐指南,涉及Oracle Linux, OVM dom0, Xen 和硬件Firmware。我們對待服務器的Outage事件上,采取的策略是:“Fix one fix all”。
這個實踐指南是一個持續更新的基于專家知識的文檔,為產品、運維和信息安全部門提供充分的Linux配置信息以供審核和反饋。內容包括了NTP客戶端配置、SysLog、Cron、Sshd、Ulimit、Banner、審計、SELinux、串行控制臺設置、NUMA、Cstate、Xen配置、NFS客戶端、Sysctl設置(優化的參數包括了文件系統、網絡、錯誤修復、網絡性能、網絡安全、虛擬內存、OOM killer調整、vm.nr_hugepages、內核消息、內核Semaphores、共享內存、kernel.sysrq等等)、LDAP客戶端、ipmitool和HMP、DNS客戶端、Timezone、Mcollective、Puppet客戶端、郵件和Sendmail、默認啟用的服務、LLDP、OS Watcher、EM和EMAgent、磁盤布局、RAID和LVM、文件系統、網絡和Yum等等。
(二)創建特定的user和groups
(三)刪除不需要的軟件包和服務以進行操作系統安全強化
(四)磁盤空間布局標準化
(五)更新kickstart模版
我們使用kickstart模板來自動構建新版本的Linux系統,所有配置變更都須在kickstart體現出來。另外,我的一位同事寫了個很棒的工具,可以將新版本的kickstart模板和老版本的差別自動轉化為“零停機時間”的升級程序。
3
安全檢查
一個新版本的OS Image準備就緒后,除了常規的功能、性通、整合測試外,我們還需要進行安全測試。
我們的安全檢查包括CIS-CAT測試、QualysGuard測試、和我們定制作的OpenSCAP測試。然后根據測試發現的弱點調整安裝包和配置,更新kickstart模版。
同時,對于政府的云服務,我們云安全團隊通過Nessus Scanner / Nessus安全中心進行每月掃描,并將發現的弱點告訴我們,以便我們即時提供強化修復方案。這也是我們整個安全檢查環節中的重要一環。
除了測試,我們每周會定期跟蹤新的關鍵CVE,監測行業安全漏洞相關信息。
4
Agile Scrum 和 CI/CD流程
我們使用Agile Scrum 方式進行Linux Image項目管理, Scrum Sprint 周期為7天。
同時我們使用Jenkins進行整合測試, 使用Jenkins聲明性管道的Jenkins文件來簡化測試配置,并使用“來自SCM的管道腳本”,以確保所有測試的變更在Git Repo里可跟蹤。
5
Linux OS安全評估和強化平臺
我們還開發了一個Linux操作系統安全評估和強化平臺,用于操作系統安全評估和強化修復。這是一個用于自助服務的應用程序,系統運維部門能夠通過對CVE,報告和建議的自動評估來進行Oracle Linux OS安全評估。此外,它還支持STIG的操作系統強化和其他合規性修復任務。無論是否進行自定義,用戶都可以運行自動修補和強化修復。同時,它允許輕松地將各種安全掃描工具(OpenScap,NESSUS,CIS-CAT,Pen-test,Yum Security-plugin, DISA STIG等)與其他企業分析或報告系統集成(例如OS Security Web Service,EM,PEO APS Auto-Remediation工具鏈,aps-cli或PEO Jobcontrol健康檢查報告)。
6
以零停機時間為目標的自動部署和升級方案
在涉及到Kernel的升級中,我使用的是ksplice技術來實現“零停機時間”的操作系統升級。
在2018年的Meltdown 和 Spectre 漏洞事件中,我們設計開發并實施了一個內部編排解決方案。在很短的期限內,我們提供了45,000行源代碼(不包括評論或空白行),實現了一個dom0 和 domU 全面自動升級的方案,這個方案以Oracle SaaS服務的POD為目標對象,進行在線升級和強化。大約超過 70 萬 VM 實例以及相應物理設備使用了我們的這個內部編排方案進行操作系統升級。
Oracle OpenWorld 2018: Perform In-Place Upgrade for Large-Scale Cloud Infrastructure
我們最終在Linux領域交付的產品,是一個內部的名字叫“APOL Image”的Oracle Linux和OVM dom0方案,以及相關用于操作系統安全評估、修復和強化的統一工具鏈。
本文旨在簡單闡述一下作為一個IT系統架構師,我工作中是如何思考并持續改進生產環境中Linux操作系統安全性和可靠性的。其目的在于拋磚引玉,帶動大家一起討論Linux操作系統安全性及改進方案。其中有些觀點不一定正確,歡迎批評指正。
-
Linux
+關注
關注
87文章
11420瀏覽量
212307 -
操作系統
+關注
關注
37文章
7025瀏覽量
124691 -
數據庫
+關注
關注
7文章
3884瀏覽量
65560
原文標題:王錄華:我是如何為公有云和XX聯邦政府提供安全的Linux操作系統的解決方案的?
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Linux與其他操作系統的區別
linux操作系統的優化及安全
基于FPGA的嵌入式Linux操作系統解決方案
Linux操作系統的目錄結構
Linux是實時系統還是分時操作系統?
不同的操作系統訪問服務器很麻煩?來看看虹科Linux遠程桌面解決方案!

Elektrobit推出全球首個符合汽車功能安全標準的開源操作系統解決方案

評論