From王錄華程序猿的人類學(xué)
我大約是在2012年左右時,在網(wǎng)絡(luò)和私有云兩大領(lǐng)域之外,又在操作系統(tǒng)領(lǐng)域得到一個非常有挑戰(zhàn)的新機遇:為公司超過30萬臺的服務(wù)器提供安全的Linux操作系統(tǒng)解決方案,并為操作系統(tǒng)領(lǐng)域提供24x7應(yīng)急響應(yīng)和支持服務(wù)(Tier 3 Escalation)。我得到Linux社區(qū)一些朋友的幫助,在較短的時間內(nèi)快速成立了一個研發(fā)團隊,其中一位技術(shù)大拿是看到我們這個領(lǐng)域的大牛左耳朵耗子轉(zhuǎn)發(fā)貼子后和我取得聯(lián)系并加入的。我們最終在Linux領(lǐng)域交付的產(chǎn)品,內(nèi)部的名字叫“APOL Image” (基于Oracle Linux 和Oracle VM Server),以及相關(guān)用于操作系統(tǒng)安全評估、修復(fù)和強化的工具集。這個解決方案不僅應(yīng)用企業(yè)內(nèi)部的部署,還應(yīng)用于公有云和一些特別需求的外部客戶,包括XX聯(lián)邦政府。在2018年,團隊成員在美國舊金山的Oracle OpenWorld 2018上發(fā)表了主題為“Perform In-Place Upgrade for Large-Scale Cloud Infrastructure”的演講,將部分經(jīng)驗分享了出來。
本文就已經(jīng)公開的部分信息,簡要地概述一下我們是如何提供安全的Linux操作系統(tǒng)解決方案的。
1
最小化安裝
(一)決定最小化安裝包清單的基本原則
我們的解決方案是基于Oracle Linux(OL,以前稱為Oracle Enterprise Linux),是由Oracle自行分發(fā)的Linux發(fā)行版,自2006年底以來部分由GNU通用公共許可證提供。它是從Red Hat Enterprise Linux(RHEL)源代碼編譯而來,用Oracle代替Red Hat品牌。它有很多針對Oracle產(chǎn)品的加強和Bug Fix,也被Oracle云和Oracle集成系統(tǒng)(如Oracle Exadata等)使用。
在安裝Oracle Linux的系統(tǒng)上,我們建議刪除不需要的RPM,以最小化軟件占用空間。那么,我是如何確定這個最小化清單呢?
最小化清單包括如下幾點:
(1)基礎(chǔ)包 (@coreYum groups),以及其依賴的軟件包。(2)Oracle UEK 內(nèi)核 (kernel-uek,kernel-uek-firmware,kernel-uek-devel)。(3)安裝RDBMS數(shù)據(jù)庫所依賴的軟件包 (oracle-rdbms-server-12cR1-preinstall etc., 但是不包括RDBMS數(shù)據(jù)庫或preinstall本身)(4)JVM 或 Oracle Java JDK 所依賴的軟件包(不包括JVM/JDK本身)(5)VNC Server (tigervnc-server or vnc-server) 所依賴的軟件包(不包括tigervnc-server/vnc-server本身,也不包括X WINDOWS)(6)一些通用的基礎(chǔ)軟件包,例如 audit.x86_64, authconfig.x86_64等等。 (8)運維所需要的額外的軟件包,包括安全工具(比如setools)、我們自己定制的性能數(shù)據(jù)收集軟件包(Oracle OSWatcher)、硬件管理數(shù)據(jù)包(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
(三)審核最小化軟件包清單
審核每個軟件包的來源、功能,以及是否真的必要將其收入用于產(chǎn)生環(huán)境的Linux Base Image中。
2
LINUX配置的最佳實踐指南
有了軟件包清單,接下來是決定相關(guān)的配置了。
(一)優(yōu)化配置
我的團隊基于超過30萬的服務(wù)器的運維狀態(tài)、以及超過1萬條Bug的研究分析,提煉出了一個針對生產(chǎn)環(huán)境的Oracle Linux配置最佳實踐指南,涉及Oracle Linux, OVM dom0, Xen 和硬件Firmware。我們對待服務(wù)器的Outage事件上,采取的策略是:“Fix one fix all”。
這個實踐指南是一個持續(xù)更新的基于專家知識的文檔,為產(chǎn)品、運維和信息安全部門提供充分的Linux配置信息以供審核和反饋。內(nèi)容包括了NTP客戶端配置、SysLog、Cron、Sshd、Ulimit、Banner、審計、SELinux、串行控制臺設(shè)置、NUMA、Cstate、Xen配置、NFS客戶端、Sysctl設(shè)置(優(yōu)化的參數(shù)包括了文件系統(tǒng)、網(wǎng)絡(luò)、錯誤修復(fù)、網(wǎng)絡(luò)性能、網(wǎng)絡(luò)安全、虛擬內(nèi)存、OOM killer調(diào)整、vm.nr_hugepages、內(nèi)核消息、內(nèi)核Semaphores、共享內(nèi)存、kernel.sysrq等等)、LDAP客戶端、ipmitool和HMP、DNS客戶端、Timezone、Mcollective、Puppet客戶端、郵件和Sendmail、默認啟用的服務(wù)、LLDP、OS Watcher、EM和EMAgent、磁盤布局、RAID和LVM、文件系統(tǒng)、網(wǎng)絡(luò)和Yum等等。
(二)創(chuàng)建特定的user和groups
(三)刪除不需要的軟件包和服務(wù)以進行操作系統(tǒng)安全強化
(四)磁盤空間布局標(biāo)準(zhǔn)化
(五)更新kickstart模版
我們使用kickstart模板來自動構(gòu)建新版本的Linux系統(tǒng),所有配置變更都須在kickstart體現(xiàn)出來。另外,我的一位同事寫了個很棒的工具,可以將新版本的kickstart模板和老版本的差別自動轉(zhuǎn)化為“零停機時間”的升級程序。
3
安全檢查
一個新版本的OS Image準(zhǔn)備就緒后,除了常規(guī)的功能、性通、整合測試外,我們還需要進行安全測試。
我們的安全檢查包括CIS-CAT測試、QualysGuard測試、和我們定制作的OpenSCAP測試。然后根據(jù)測試發(fā)現(xiàn)的弱點調(diào)整安裝包和配置,更新kickstart模版。
同時,對于政府的云服務(wù),我們云安全團隊通過Nessus Scanner / Nessus安全中心進行每月掃描,并將發(fā)現(xiàn)的弱點告訴我們,以便我們即時提供強化修復(fù)方案。這也是我們整個安全檢查環(huán)節(jié)中的重要一環(huán)。
除了測試,我們每周會定期跟蹤新的關(guān)鍵CVE,監(jiān)測行業(yè)安全漏洞相關(guān)信息。
4
Agile Scrum 和 CI/CD流程
我們使用Agile Scrum 方式進行Linux Image項目管理, Scrum Sprint 周期為7天。
同時我們使用Jenkins進行整合測試, 使用Jenkins聲明性管道的Jenkins文件來簡化測試配置,并使用“來自SCM的管道腳本”,以確保所有測試的變更在Git Repo里可跟蹤。
5
Linux OS安全評估和強化平臺
我們還開發(fā)了一個Linux操作系統(tǒng)安全評估和強化平臺,用于操作系統(tǒng)安全評估和強化修復(fù)。這是一個用于自助服務(wù)的應(yīng)用程序,系統(tǒng)運維部門能夠通過對CVE,報告和建議的自動評估來進行Oracle Linux OS安全評估。此外,它還支持STIG的操作系統(tǒng)強化和其他合規(guī)性修復(fù)任務(wù)。無論是否進行自定義,用戶都可以運行自動修補和強化修復(fù)。同時,它允許輕松地將各種安全掃描工具(OpenScap,NESSUS,CIS-CAT,Pen-test,Yum Security-plugin, DISA STIG等)與其他企業(yè)分析或報告系統(tǒng)集成(例如OS Security Web Service,EM,PEO APS Auto-Remediation工具鏈,aps-cli或PEO Jobcontrol健康檢查報告)。
6
以零停機時間為目標(biāo)的自動部署和升級方案
在涉及到Kernel的升級中,我使用的是ksplice技術(shù)來實現(xiàn)“零停機時間”的操作系統(tǒng)升級。
在2018年的Meltdown 和 Spectre 漏洞事件中,我們設(shè)計開發(fā)并實施了一個內(nèi)部編排解決方案。在很短的期限內(nèi),我們提供了45,000行源代碼(不包括評論或空白行),實現(xiàn)了一個dom0 和 domU 全面自動升級的方案,這個方案以O(shè)racle SaaS服務(wù)的POD為目標(biāo)對象,進行在線升級和強化。大約超過 70 萬 VM 實例以及相應(yīng)物理設(shè)備使用了我們的這個內(nèi)部編排方案進行操作系統(tǒng)升級。
Oracle OpenWorld 2018: Perform In-Place Upgrade for Large-Scale Cloud Infrastructure
我們最終在Linux領(lǐng)域交付的產(chǎn)品,是一個內(nèi)部的名字叫“APOL Image”的Oracle Linux和OVM dom0方案,以及相關(guān)用于操作系統(tǒng)安全評估、修復(fù)和強化的統(tǒng)一工具鏈。
本文旨在簡單闡述一下作為一個IT系統(tǒng)架構(gòu)師,我工作中是如何思考并持續(xù)改進生產(chǎn)環(huán)境中Linux操作系統(tǒng)安全性和可靠性的。其目的在于拋磚引玉,帶動大家一起討論Linux操作系統(tǒng)安全性及改進方案。其中有些觀點不一定正確,歡迎批評指正。
-
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210399 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6895瀏覽量
123747 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3846瀏覽量
64686
原文標(biāo)題:王錄華:我是如何為公有云和XX聯(lián)邦政府提供安全的Linux操作系統(tǒng)的解決方案的?
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
Linux操作系統(tǒng)
![<b class='flag-5'>Linux</b><b class='flag-5'>操作系統(tǒng)</b>](https://file.elecfans.com/web2/M00/48/94/pYYBAGKhtA-AfTnQAABM_zpn8SE782.jpg)
Linux操作系統(tǒng)原理及應(yīng)用
linux操作系統(tǒng)的安全性
Linux與其他操作系統(tǒng)的區(qū)別
linux操作系統(tǒng)的優(yōu)化及安全
Linux操作系統(tǒng)安全的配置說明
基于FPGA的嵌入式Linux操作系統(tǒng)解決方案
Linux操作系統(tǒng)的目錄結(jié)構(gòu)
Linux嵌入式操作系統(tǒng)有哪些優(yōu)勢
Linux是實時系統(tǒng)還是分時操作系統(tǒng)?
不同的操作系統(tǒng)訪問服務(wù)器很麻煩?來看看虹科Linux遠程桌面解決方案!
![不同的<b class='flag-5'>操作系統(tǒng)</b>訪問服務(wù)器很麻煩?來看看虹科<b class='flag-5'>Linux</b>遠程桌面<b class='flag-5'>解決方案</b>!](https://file.elecfans.com/web2/M00/14/69/poYBAGE-5CCAJKUbAAAcwK3zQN8860.png)
Elektrobit推出全球首個符合汽車功能安全標(biāo)準(zhǔn)的開源操作系統(tǒng)解決方案
![Elektrobit推出全球首個符合汽車功能<b class='flag-5'>安全</b>標(biāo)準(zhǔn)的開源<b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>解決方案</b>](https://file1.elecfans.com/web2/M00/D7/6B/wKgZomYoZ42AdhfbAAASTT0sLW0860.jpg)
面向功能安全應(yīng)用的汽車開源操作系統(tǒng)解決方案
![面向功能<b class='flag-5'>安全</b>應(yīng)用的汽車開源<b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>解決方案</b>](https://file1.elecfans.com/web2/M00/09/1B/wKgaomb2COWALymqAAGxcgbAXe0968.jpg)
評論