【原創(chuàng)干貨】我是如何為公有云和XX聯(lián)邦政府提供安全的Linux操作系統(tǒng)的解決方案的诀豁?(第3篇)

我大約是在2012年左右時(shí),在網(wǎng)絡(luò)和私有云兩大領(lǐng)域之外,又在操作系統(tǒng)領(lǐng)域得到一個(gè)非常有挑戰(zhàn)的新機(jī)遇:為公司超過30萬臺的服務(wù)器提供安全的Linux操作系統(tǒng)解決方案就谜,并為操作系統(tǒng)領(lǐng)域提供24x7應(yīng)急響應(yīng)和支持服務(wù)(Tier 3 Escalation)怪蔑。我得到Linux社區(qū)一些朋友的幫助,在較短的時(shí)間內(nèi)快速成立了一個(gè)研發(fā)團(tuán)隊(duì)丧荐,其中一位技術(shù)大拿是看到我們這個(gè)領(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ù)和強(qiáng)化的工具集。這個(gè)解決方案不僅應(yīng)用企業(yè)內(nèi)部的部署车荔,還應(yīng)用于公有云和一些特別需求的外部客戶渡冻,包括XX聯(lián)邦政府。在2018年忧便,團(tuán)隊(duì)成員在美國舊金山的Oracle OpenWorld 2018上發(fā)表了主題為“Perform In-Place Upgrade for Large-Scale Cloud Infrastructure”的演講族吻,將部分經(jīng)驗(yàn)分享了出來。

本文就已經(jīng)公開的部分信息珠增,簡要地概述一下我們是如何提供安全的Linux操作系統(tǒng)解決方案的超歌。

一、最小化安裝

(一)決定最小化安裝包清單的基本原則

我們的解決方案是基于Oracle Linux(OL蒂教,以前稱為Oracle Enterprise Linux)巍举,是由Oracle自行分發(fā)的Linux發(fā)行版,自2006年底以來部分由GNU通用公共許可證提供凝垛。它是從Red Hat Enterprise Linux(RHEL)源代碼編譯而來懊悯,用Oracle代替Red Hat品牌。它有很多針對Oracle產(chǎn)品的加強(qiáng)和Bug Fix梦皮,也被Oracle云和Oracle集成系統(tǒng)(如Oracle Exadata等)使用定枷。

在安裝Oracle Linux的系統(tǒng)上,我們建議刪除不需要的RPM届氢,以最小化軟件占用空間欠窒。那么,我是如何確定這個(gè)最小化清單呢退子?

最小化清單包括如下幾點(diǎn):

(1)基礎(chǔ)包 (@core Yum 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)運(yùn)維所需要的額外的軟件包,包括安全工具(比如setools)铛碑、我們自己定制的性能數(shù)據(jù)收集軟件包(Oracle OSWatcher)狠裹、硬件管理數(shù)據(jù)包(oracle-hmp-tools.x86_64, MegaCli.noarch,smartmontools.x86_64, lldpd.x86_64)汽烦。

(二)對每個(gè)OL版本涛菠,使用CHROOT來生成原始的最小化軟件包清單

我們使用CHROOT測試并生成每個(gè)OL版本的最小化包列表的初始版本。其中撇吞,首先要安裝oraclelinux-release軟件包俗冻。 在release安裝正確后,我們可以運(yùn)行yum牍颈,使用“--installroot”選項(xiàng)在chroot目錄中安裝其他軟件包了迄薄。

以下是生成包列表的示例過程。

CHROOT=./CHROOT
CDROM=./CDROM
YUM_REPO_FILE=yum_repo.repo
mkdir -p ${CDROM}
mount -o loop,ro $ISO_FILE ${CDROM}
cat > $YUM_REPO_FILE <
[main]
include=/etc/yum.conf
plugins=1
group_package_types=mandatory
[rpm_footprint_dvd]
name=rpm_footprint_dvd
baseurl=file://${CDROM}/Server
gpgkey=file://${CDROM}/RPM-GPG-KEY
gpgcheck=0
enabled=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/rpm
rpm --rebuilddb --root=${CHROOT}
yumdownloader -c $YUM_REPO_FILE --disablerepo=* --enablerepo=rpm_footprint* --installroot=${CHROOT} oraclelinux-release
rpm --root=${CHROOT} -ivh --nodeps $LINUX_RELEASE
yum -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 Others
yum -c $YUM_REPO_FILE --disablerepo=* --enablerepo=rpm_footprint* --installroot=${CHROOT} install -y $PKG
# Remove the Java JDK and RDBMS preinstall packages
yum -c $YUM_REPO_FILE --disablerepo=* --enablerepo=rpm_footprint* --installroot=${CHROOT} erase -y $PKG
# Get the rpm list
rpm --root=${CHROOT} -qa --qf '%{n}-%{v}-%{r}.%{arch}.rpm\n' |sort > rpm-list.txt

(三)審核最小化軟件包清單

審核每個(gè)軟件包的來源煮岁、功能讥蔽,以及是否真的必要將其收入用于產(chǎn)生環(huán)境的Linux Base Image中。

二人乓、LINUX配置的最佳實(shí)踐指南

有了軟件包清單勤篮,接下來是決定相關(guān)的配置了都毒。

(一)優(yōu)化配置

我的團(tuán)隊(duì)基于超過30萬的服務(wù)器的運(yùn)維狀態(tài)色罚、以及超過1萬條Bug的研究分析,提煉出了一個(gè)針對生產(chǎn)環(huán)境的Oracle Linux配置最佳實(shí)踐指南账劲,涉及Oracle Linux, OVM dom0, Xen 和硬件Firmware戳护。我們對待服務(wù)器的Outage事件上,采取的策略是:“Fix one fix all”瀑焦。

這個(gè)實(shí)踐指南是一個(gè)持續(xù)更新的基于專家知識的文檔腌且,為產(chǎn)品、運(yùn)維和信息安全部門提供充分的Linux配置信息以供審核和反饋榛瓮。內(nèi)容包括了NTP客戶端配置铺董、SysLog、Cron禀晓、Sshd精续、Ulimit、Banner粹懒、審計(jì)重付、SELinux、串行控制臺設(shè)置凫乖、NUMA确垫、Cstate弓颈、Xen配置、NFS客戶端删掀、Sysctl設(shè)置(優(yōu)化的參數(shù)包括了文件系統(tǒng)翔冀、網(wǎng)絡(luò)、錯(cuò)誤修復(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埂伦、默認(rèn)啟用的服務(wù)、LLDP思恐、OS Watcher沾谜、EM和EMAgent、磁盤布局胀莹、RAID和LVM基跑、文件系統(tǒng)、網(wǎng)絡(luò)和Yum等等描焰。

(二)創(chuàng)建特定的user和groups

(三)刪除不需要的軟件包和服務(wù)以進(jìn)行操作系統(tǒng)安全強(qiáng)化

(四)磁盤空間布局標(biāo)準(zhǔn)化

(五)更新kickstart模版

我們使用kickstart模板來自動構(gòu)建新版本的Linux系統(tǒng)媳否,所有配置變更都須在kickstart體現(xiàn)出來。另外荆秦,我的一位同事寫了個(gè)很棒的工具篱竭,可以將新版本的kickstart模板和老版本的差別自動轉(zhuǎn)化為“零停機(jī)時(shí)間”的升級程序。

三萄凤、安全檢查

一個(gè)新版本的OS Image準(zhǔn)備就緒后室抽,除了常規(guī)的功能、性通靡努、整合測試外坪圾,我們還需要進(jìn)行安全測試晓折。

我們的安全檢查包括CIS-CAT測試、QualysGuard測試兽泄、和我們定制作的OpenSCAP測試漓概。然后根據(jù)測試發(fā)現(xiàn)的弱點(diǎn)調(diào)整安裝包和配置,更新kickstart模版病梢。

同時(shí)胃珍,對于政府的云服務(wù),我們云安全團(tuán)隊(duì)通過Nessus Scanner / Nessus安全中心進(jìn)行每月掃描蜓陌,并將發(fā)現(xiàn)的弱點(diǎn)告訴我們觅彰,以便我們即時(shí)提供強(qiáng)化修復(fù)方案。這也是我們整個(gè)安全檢查環(huán)節(jié)中的重要一環(huán)钮热。

除了測試填抬,我們每周會定期跟蹤新的關(guān)鍵CVE,監(jiān)測行業(yè)安全漏洞相關(guān)信息隧期。

四飒责、Agile Scrum 和 CI/CD流程

我們使用Agile Scrum 方式進(jìn)行Linux Image項(xiàng)目管理, Scrum Sprint 周期為7天。

同時(shí)我們使用Jenkins進(jìn)行整合測試, 使用Jenkins聲明性管道的Jenkins文件來簡化測試配置仆潮,并使用“來自SCM的管道腳本”宏蛉,以確保所有測試的變更在Git Repo里可跟蹤。

五性置、Linux操作系統(tǒng)安全評估和強(qiáng)化平臺

我們還開發(fā)了一個(gè)Linux操作系統(tǒng)安全評估和強(qiáng)化平臺拾并,用于操作系統(tǒng)安全評估和強(qiáng)化修復(fù)。這是一個(gè)用于自助服務(wù)的應(yīng)用程序蚌讼,系統(tǒng)運(yùn)維部門能夠通過對CVE辟灰,報(bào)告和建議的自動評估來進(jìn)行Oracle Linux OS安全評估个榕。此外篡石,它還支持STIG的操作系統(tǒng)強(qiáng)化和其他合規(guī)性修復(fù)任務(wù)。無論是否進(jìn)行自定義西采,用戶都可以運(yùn)行自動修補(bǔ)和強(qiáng)化修復(fù)凰萨。同時(shí),它允許輕松地將各種安全掃描工具(OpenScap械馆,NESSUS胖眷,CIS-CAT,Pen-test霹崎,Yum Security-plugin珊搀, DISA STIG等)與其他企業(yè)分析或報(bào)告系統(tǒng)集成(例如OS Security Web Service,EM尾菇,PEO APS Auto-Remediation工具鏈境析,aps-cli或PEO Jobcontrol健康檢查報(bào)告)囚枪。

六、以零停機(jī)時(shí)間為目標(biāo)的自動部署和升級方案

在涉及到Kernel的升級中劳淆,我使用的是ksplice技術(shù)來實(shí)現(xiàn)“零停機(jī)時(shí)間”的操作系統(tǒng)升級链沼。

在2018年的Meltdown 和 Spectre 漏洞事件中,我們設(shè)計(jì)開發(fā)并實(shí)施了一個(gè)內(nèi)部編排解決方案沛鸵。在很短的期限內(nèi)括勺,我們提供了45,000行源代碼(不包括評論或空白行),實(shí)現(xiàn)了一個(gè)dom0 和 domU 全面自動升級的方案曲掰,這個(gè)方案以O(shè)racle SaaS服務(wù)的POD為目標(biāo)對象疾捍,進(jìn)行在線升級和強(qiáng)化。大約超過 70 萬 VM 實(shí)例以及相應(yīng)物理設(shè)備使用了我們的這個(gè)內(nèi)部編排方案進(jìn)行操作系統(tǒng)升級栏妖。

Oracle OpenWorld 2018: Perform In-Place Upgrade for Large-Scale Cloud Infrastructure

我們最終在Linux領(lǐng)域交付的產(chǎn)品拾氓,是一個(gè)內(nèi)部的名字叫“APOL Image”的Oracle Linux和OVM dom0方案,以及相關(guān)用于操作系統(tǒng)安全評估底哥、修復(fù)和強(qiáng)化的統(tǒng)一工具鏈咙鞍。

本文旨在簡單闡述一下作為一個(gè)IT系統(tǒng)架構(gòu)師,我工作中是如何思考并持續(xù)改進(jìn)生產(chǎn)環(huán)境中Linux操作系統(tǒng)安全性和可靠性的趾徽。其目的在于拋磚引玉续滋,帶動大家一起討論Linux操作系統(tǒng)安全性及改進(jìn)方案。其中有些觀點(diǎn)不一定正確孵奶,歡迎批評指正疲酌。

歡迎大家發(fā)表留言,列出你的企業(yè)在Linux操作系統(tǒng)領(lǐng)域遭遇到的痛點(diǎn)問題了袁。

(作者:王錄華朗恳,Oracle云服務(wù)研發(fā)總監(jiān))

參考資料:

(1)、Oracle OpenWorld 2018: Perform In-Place Upgrade for Large-Scale Cloud Infrastructure
(2)载绿、Oracle ksplice: https://www.oracle.com/webfolder/assets/infographics/ksplice/index.htm
(3)粥诫、Xen: http://xenbits.xen.org/xsa/
(4)、Oracle:http://linux.oracle.com/pls/apex/f?p=130:21
(5)崭庸、https://blogs.oracle.com/security/
(6)怀浆、http://www.oracle.com/technetwork/topics/security/whatsnew/index.html
(7)、https://nvd.nist.gov/vuln/search
(8)怕享、CVE details http://www.cvedetails.com/
(9)执赡、Redhat:https://access.redhat.com/security/cve/
(10)、https://rhn.redhat.com/errata/rhel-server-6-errata.html
(11)函筋、https://rhn.redhat.com/errata/rhel-server-errata.html
(12)沙合、https://securityblog.redhat.com/
(13)、 MS-ISAC Cyber Security Advisories - http://msisac.cisecurity.org/advisories/
(14)跌帐、 IBM's Alert - http://www.iss.net/threats/ThreatList.php

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末首懈,一起剝皮案震驚了整個(gè)濱河市芳来,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猜拾,老刑警劉巖即舌,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挎袜,居然都是意外死亡顽聂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門盯仪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來紊搪,“玉大人,你說我怎么就攤上這事全景∫” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵爸黄,是天一觀的道長滞伟。 經(jīng)常有香客問我,道長炕贵,這世上最難降的妖魔是什么梆奈? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮称开,結(jié)果婚禮上亩钟,老公的妹妹穿的比我還像新娘。我一直安慰自己鳖轰,他們只是感情好清酥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蕴侣,像睡著了一般焰轻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睛蛛,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天鹦马,我揣著相機(jī)與錄音胧谈,去河邊找鬼忆肾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛菱肖,可吹牛的內(nèi)容都是我干的客冈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼稳强,長吁一口氣:“原來是場噩夢啊……” “哼场仲!你這毒婦竟也來了和悦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渠缕,失蹤者是張志新(化名)和其女友劉穎鸽素,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亦鳞,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馍忽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了燕差。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遭笋。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖徒探,靈堂內(nèi)的尸體忽然破棺而出瓦呼,到底是詐尸還是另有隱情,我是刑警寧澤测暗,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布央串,位于F島的核電站,受9級特大地震影響碗啄,放射性物質(zhì)發(fā)生泄漏蹋辅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一挫掏、第九天 我趴在偏房一處隱蔽的房頂上張望侦另。 院中可真熱鬧,春花似錦尉共、人聲如沸褒傅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殿托。三九已至,卻和暖如春剧蚣,著一層夾襖步出監(jiān)牢的瞬間支竹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工鸠按, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留礼搁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓目尖,卻偏偏與公主長得像馒吴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容