0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

我们是如何提供安全的Linux操作系统解决方案的

Linux阅码场 来源:lp 2019-04-03 15:27 次阅读

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

    文章

    10988

    浏览量

    206724
  • 操作系统
    +关注

    关注

    37

    文章

    6280

    浏览量

    121869
  • 数据库
    +关注

    关注

    7

    文章

    3590

    浏览量

    63365

原文标题:王录华:我是如何为公有云和XX联邦政府提供安全的Linux操作系统的解决方案的?

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux与其他操作系统的区别

    访问计算机内的所有可用内存,提供完整的Unix接口。而MS-DOS只支持部分Unix的接口。  就使用费用而言,Linux和MS-DOS是两种完全不同的实体。与其他商业操作系统相比,MS-DOS价格比
    发表于 09-13 10:12

    LINUX操作系统

    Linux操作系统,分为好几种,它们有什么区别吗?今天安装了个乌班图操作系统,这个LINUX操作系统如何?本人不太清楚,还请前辈指点一下?谢
    发表于 12-16 18:34

    Linux操作系统

    linux的教学内容1 、Linux概述 2 、Linux操作系统安装3、 Linux的内核 4 、Li
    发表于 04-10 16:54 0次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>

    Linux操作系统原理及应用

    Linux操作系统原理及应用 1.1  操作系统的地位 1.2  操作系统的功能 1.3  操作系统的发
    发表于 04-28 14:53 0次下载

    linux操作系统安全

    linux操作系统安全性 计算机系统安全性的内涵 操作系统安全性功能
    发表于 04-28 15:05 0次下载

    Linux与其他操作系统的区别

    Linux与其他操作系统的区别 Linux与其他操作系统的区别  Linux可以与MS-DOS、OS/2、Windows等其他
    发表于 01-18 12:42 1593次阅读

    什么是Linux操作系统

    什么是Linux操作系统  简单地说,Linux是一套
    发表于 12-26 12:04 1371次阅读

    linux操作系统的优化及安全

    linux操作系统的优化及安全 在网上看到不少有关linux优化方面的好文章,在此我也不赘述这些文章了,我只想从我自己的体会来谈谈这方面的问题。
    发表于 01-29 14:04 271次阅读

    趣谈Linux操作系统

    趣谈Linux操作系统
    的头像 发表于 01-13 16:00 6092次阅读

    基于linux的十大操作系统排名

    基于linux内核开源的特性,并随着linux的不断发展,各种基于Linux操作系统版本也在不断发行出来,其中每一个不同版本的Linux
    发表于 07-10 16:23 1.5w次阅读

    Linux嵌入式操作系统有哪些优势

    嵌入式Linux操作系统是将Linux操作系统进行裁剪,使Linux操作系统能够在嵌入式计算机
    发表于 07-10 16:34 4716次阅读

    五款常用的Linux操作系统

     Linux操作系统诞生于1991年的10月5日。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。
    发表于 07-16 14:48 1897次阅读

    不同的操作系统访问服务器很麻烦?来看看虹科Linux远程桌面解决方案

    对一些IT团队来说,为具有各种操作系统的多种设备提供基于服务器的计算访问的能力是一种持续的挑战。例如,使用远程桌面技术为用户带来了更大的灵活性,因为它允许使用与本地安装的操作系统不同的操作系统
    的头像 发表于 12-19 13:49 369次阅读
    不同的<b class='flag-5'>操作系统</b>访问服务器很麻烦?来看看虹科<b class='flag-5'>Linux</b>远程桌面<b class='flag-5'>解决方案</b>!

    linux属于什么操作系统

    Linux属于一种类UNIX操作系统Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX
    的头像 发表于 11-08 11:01 1726次阅读

    Elektrobit推出全球首个符合汽车功能安全标准的开源操作系统解决方案

    德国埃朗根,2024年4月23日 – Elektrobit今日宣布推出面向功能安全应用的EB corbos Linux for Safety Applications,这是全球首个符合汽车功能安全标准的开源
    的头像 发表于 04-24 09:58 280次阅读
    Elektrobit推出全球首个符合汽车功能<b class='flag-5'>安全</b>标准的开源<b class='flag-5'>操作系统</b><b class='flag-5'>解决方案</b>