Security+ 5. 实现主机/软件安全性

5.1 加固(Hardening)

  • 指修改系统的默认配置来尝试关闭漏洞
  • 系统加固的技巧如下:
1. 确保操作系统符合最小功能原则,即系统不能提供超出其目的范围之外的其他功能。
2. 通过系统基于主机防火墙禁用任何不必要的网络端口
3. 禁用运行在系统上的任何不必要服务,减少系统的攻击面
4. 充分利用供应商或行业认可的组织所提供的任何安全配置来加强系统的防御能力。
5. 禁用系统上的任何默认账户,使攻击者无法通过这些账户获取访问权限。
6. 强制要求用户改掉分配给他们的默认密码。
7. 执行补丁管理服务,以便能够更高效地管理所有软件和服务的自动更新补丁。

5.2 可信计算基础(trusted computing base/TCB)

  • 指计算机系统中用于负责确保安全策略得到实施,系统安全性得到保障的硬件。
  • TCB组成:(TOS(固件(硬件)))
  • TOS(Trusted operating systems):可信OS,满足TCB安全要求的操作系统。

5.2.1 硬件和固件安全

  • BIOS/UEFI:基本输入/输出系统BIOS和统一可扩展固件接口[Unified Extensible Firmware Interface(UEFI)]都是固件接口,为操作系统启动初始化硬件。UEFI更现代更安全。
  • 信任根和HSM:信任根(root of trust)是指通过使用能保持数据机密性和防止被篡改的加密机制,实施硬件平台的可信计算架构的技术。硬件安全模块[Hardware security module(HSM)]是一种能够提供信任根功能的物理设备。
  • TPM:可信平台模块[Trusted platform module(TPM)]:一种安全的加密处理器,用于生成加密密钥,在TCB的多个方面都有使用。
  • 安全启动和远程认证:安全启动(Secure boot)是一种UEFI功能,在启动操作过程中阻止不想要的进程执行。UEFI采用启动加载程序的加密散列来确保其完整性。TPM为这个启动散列签订一个报告,发送到第三方进行验证,这个过程叫远程认证(remote attestation)
  • FDE/SED:基于硬件的全磁盘加密[full disk encryption(FDE)],用在被称为自加密驱动[Self-encrypting drives(SED)]的设备中。
  • EMI保护:所有的电器都会产生电磁干扰[Electromagetic interference(EMI)],未授权用户如果能接收这些电磁辐射,就可能获得其他的敏感数据。
  • EMP保护:攻击者使用电磁脉冲[Electromagetic pulses(EMP)]来破坏硬件,引起故障。
  • 供应链安全(supply chain):指供应,制造,分配,最终向消费者发布商品和服务的端到端过程。硬件生产商就对供应链的每个环节实施强而有力的安全机制,并评估执行该机制执行。

5.2.2 软件安全

  • 安全基线:一组应用到组织中特定主机上的安全和配置设置。
  • 日志(logging):win事件日志查看器(eventvwr.msc)
  • 安全审计(Security auditing):指对系统安全性中的优缺点执行有序技术评估的过程,确保系统符合要求。

5.2.2.1 软件更新

  1. 补丁(Patch):补充代码的小单元,用于解决软件数据包或操作系统中的问题或功能缺陷。
  2. 热修复(Hotfix):紧急发布的补丁,用于解决特定的安全缺陷。
  3. 汇总(Rollup):之前发布的补丁与热修改集合。
  4. 服务包(Service pack):更大的系统更新汇编集合,可能包括功能的提高,新性能等。

5.2.2.2 应用程序黑名单与白名单

  • 黑名单:阻止特定应用程序在系统上运行;但只能阻止被确定的,新的或未知的存在风险的应用程序可能会被赋予访问权限
  • 白名单:比黑名单提供了一种更加彻底的解决方案,但管理开销太大。

5.2.2.3 防恶意软件(Anti-malware software)

*指扫描独立计算机和整个企业网络,查找已知病毒、木马、蠕虫、以及其他恶意程序的保护性软件。有以下几种类型:

  1. 防病毒(Antivirus):扫描文件,查找与特定模式匹配的可执行代码,基于签名的防病毒软件。
  2. 防垃圾邮件(Anti-spam)
  3. 防间谍软件(Anti-spyware)
  4. 弹出窗口阻止程序(Pop-up blocker)
  5. 基于主机的防火墙(Host-based Firewall)
  6. 高级防恶意软件工具:
端点保护(endpoint protection)保护软件:与防恶意扫描器相结合组成一个更大的安全控制套件。
恶意软件沙盒(malware sandboxing)软件:将恶意软件放大一个此所环境中,可以在不破坏生产系统或网络其余部分的前提下安全地对其进行分析。
逆向工程(Reverse engineering)软件:尝试将恶意软件解构成它的基础组件,以便能更容易地理解其属性。
  1. 数据执行保护[Data execution prevention(DEP)]:是一种CPU和Windwos功能,能够防止内存中的恶意代码执行。

5.2.2.4 硬件外围设备的安全

  1. 无线键盘和鼠标:攻击者可能会向无线鼠标或键盘发送信号强制做出点击或击键行为。保持固件更新。
  2. 显示:确保显示设备中的操作系统,固件,软件等保持最新状态。
  3. 外部存储设备:关闭其自动运行功能。
  4. 打印机和多功能(MFD)设备: 完善无线网络安全能防止不必要的访问,设置打印机和MFD使之每次工作后清除内存和存储驱动。
  5. 摄像头和麦克风:关闭其应用程序和驱动器。

5.2.3 嵌入式系统(Embedded system)

指大型系统中拥有特定功能的计算机硬件和软件系统。

  1. ICS/SCADA:工业控制系统[Industrial control systems(ICSs)]是一种控制关键工础设施的网络系统,如水,电,运输,和通讯服务。最重要的类型是监控和数据采集[supervisory control and data acquisition(SCADA)]系统,其功能是向嵌入式系统发送或接收远程控制信号。
  2. 微型控制器(Microcontroller)/系统级芯片[system on chip(SoC)]:现代微型控制器有一个内置加密引擎,可以不必依赖额外的软件来支持数据加密。
  3. RTOS:实时操作系统(real-time operating system)使用调试器来为每个支行进程或用户平衡处理器时间。
  4. 智能设备(Smart device)
  5. LoT(Internet of things):物联网设备有着非常差的安全性。
  6. 摄像系统:支持联网的相机承受了与网络计算机或LoT设备相同的漏洞。
  7. 特殊用途的系统:如医疗设备,ATM,汽车,飞机等。

5.2.4 保护主机准则

  1. 实时跟进操作系统供应商的安全信息。
  2. 应用安全设置,禁用不必要的服务,对用户账户遵守最低权限原则
  3. 创建安全基线,提高加固过程的效率
  4. 将基线与当前主机配置进行对比
  5. 应用黑/白名单来限制系统中执行的软件。
  6. 确保系统中的所有关键活动都被记录下来。
  7. 审核日志。
  8. 准备第三方审计,验证主机是否符合要求
  9. 在主机中实施防恶意软件
  10. 考虑不同硬件外围设备的特殊安全意义
  11. 考虑嵌入式系统的特殊安全意义

5.3 云和虚拟化安全

  • 虚拟化Virtualization
  • 超级处管理器hypervisor:将虚拟软件与其支行的物理硬件分离开来的软件层。
I型:超级管理器直接在主机的硬件上支行。
II型:超级管理器在主机操作系统的最高层中以应用程序的形式支行。
  • 应用程序容器application container/应用程序单元application cell:是一种虚拟化方式,表示应用程序在主机操作系统的独立容器中运行,容器不会像虚拟机一样运行完整的操作系统,主机操作系统为它们提供了所需的操作资源。

  • 虚拟桌面基础架构[virtual desktop infrastructure(VDI)]:使用虚拟化将个人计算环境与用户的物理机分离开来,在VDI中,桌面操作系统和应用程序在虚拟机内运行,他们被托管在VID中的服务器上。运行桌面操作系统的虚拟机被称为虚拟桌面环境[virtual desktop environment(VDE)]

5.3.1 虚拟化的安全性

  1. 补丁管理:部署补丁管理系统,确保安装所有相关补丁。
  2. 最小权限:应用最小权限,定期监控对所有环境的访问行为,防止未授权访问。
  3. 日志:审核用户和系统活动。
  4. 联网:正确配置虚拟网络
  5. 快照:持续不断地捕捉快照
  6. 避免VM蔓延:虚拟机蔓延(VM sprawl)发生在虚拟机数量超过组织的控制或管理能力之时。避免的最佳方案是使用虚拟机生命周期管理[VM lifecycle management(VMLM)]维护和监控组织中所有虚拟机的中央控制面板。
  7. VM逃逸保护:VM escape发生在攻击者在虚拟机上执行代码,允许支行在虚拟机上的应用程序脱离虚拟机环境并直接与超级管理器互动,可以访问最底层的主机操作系统。避免的最佳方案是虚拟软件保持更新,限制主机和客户机之间的资源共享功能。

5.3.2 云计算Cloud computing

  1. 云部署模型:私有、公共,社群、混合
  2. 云服务类型:
软件:软件即服务[Software as a Service(SaaS)]指使用云向用户提供应用程序
平台:平台即服务[Platform as a service (PaaS)]指使用云向用户提供虚拟系统
基础设施:基础设施即服务[Infrastructure as a Service (IaaS)]:指使用云提供客户端所需的任意或所有基础设施访问。
安全:安全即服务[Security as a Service(SECaaS)]:用户能利用云供应商在计算机安全的特定区域内提供的信息,服务,软件,基础设施和流程,如认证机制,防恶意软件方案,IDS
云访问安全代理[Cloud access security broker(CASB)]:安装在组织内部网络和云网络之间的安全网关,确保往来流量符合安全策略。

5.3.3 保护虚拟和基于云的资源准则

  1. 使用虚拟化实现简单高效的资源管理
  2. 认识不同虚拟化类型之间的区别,并确定适合的部署方案
  3. 确保VM软件以及主机和客户机的OS定期打补丁
  4. 对访问虚拟机执行最小权限原则
  5. 确保虚拟机记录关键事件的日志
  6. 配置虚拟网络
  7. 记录最佳虚拟机状态的快照
  8. 结合使用虚拟机生命周期管理方案
  9. 熟悉不同云部署模型和服务类型
  10. 利用SECaaS将部分安全操作转移给第三方供应商

5.4 移动设备的安全性

5.4.1 移动设备连接方式

  1. 蜂窝(cellular network):移动通讯
  2. Wi-Fi
  3. 蓝牙
  4. NFC
  5. 红外线
  6. SATCOM:卫星通讯[Satellite communications],发送和接收来自轨道卫星的无线电信号
  7. ANT:专有无线网络技术,主要用于传感器之间的通讯,如心率监测器等。
  8. USB

5.4.2 移动设备的管理(Mobile device management/MDM)

  • 指跟踪、控制、保护组织移动基础架构的过程。

5.4.2.1 移动设备的安全控制

  1. 屏幕锁定
  2. 强密码和PIN码
  3. 全设备加密
  4. 远程擦除/锁定
  5. 地理定位和地理围栏(deofencing):根据现实世界的地理位置,创建虚拟边界,超出此边界的任何设备将限制其中的功能。
  6. 访问控制
  7. 应用程序和内容管理
  8. 资产跟踪和清单控制:持续跟踪提供给用户的移动设备
  9. 推送通知服务
  10. 限制可移动存储功能
  11. 存储分区(Storage segmentation):按照特定界线划分数据存储,如本地-云
  12. 容器化:使用虚拟容器来将敏感应用程序和存储与设备中的其他分离开来。
  13. 禁用不使用的功能:如同步

5.4.2.2 移动设备的监控和执行

  1. 来自第三方商店的应用安装:监控或阻止
  2. 应用侧面加载:侧面加载(sideloading)指在移动设备上直接安全应用数据包,而非应用商店下载。
  3. Root/越狱
  4. 自定义固件配置
  5. 固件OTA更新:OTA指空中下载
  6. 运营商解锁:将用户锁定为特定移动运营商可以使用
  7. 摄像头和麦克风的使用:监控或禁用
  8. 地理标记
  9. 外部媒介的使用:如随身USB[USB on-the-go(OTG)]
  10. SMS/MMS的使用:监控传输
  11. Wi-Fi直连的使用:Wi-Fi直连(Wi-Fi Direct)让两个设备在没有无线访问点的情况下相互连接,与蓝牙连接类似。
  12. 数据共享(Tethering):多个设备共享无线互联网连接的过程
  13. 支付方式的使用:监控或强制执行所有设备必须使用单一支付服务

5.4.2.3 移动部署模型

  1. 企业拥有:企业全权负责设备的维护和管理
  2. BYOD(bring your own device):将控制权和所有权转移至员工个人,员工对设备负责
  3. CYOD(choice your own device):员工对设备负有实质性的责任,员工必须从可接受设备列表中选择。
  4. COPE(Corporate-owned, personally enable):组织选择希望让员工使用的设备。但当组织对其享有所有权的设备上的个人信息时,会出现隐私问题。
  5. VMI(Virtual mobile infrastructure):创建一个虚拟移动基础架构来使用他们的移动设备。
BYOD安全控制
1. 策略:制定一份有效且明确的用户接受策略,并确保组织成员服从策略。
2. 所有权归属:制定清晰的界线明确定义员工所有和组织所有的内容。
3. 补丁管理和防恶意软件
4. 考虑架构和基础设施的需求
5. 取证:遵守规范标准
6. 隐私支持:向员工提供保护隐私信息和设备使用安全的工具让员工放心他们的隐私问题。

5.4.3 移动设备安全性准则

  1. 组织中移动设备使用的不同连接方式
  2. 对特定连接方式应用不同的控制等级
  3. 纳入移动设备管理平台
  4. 在移动设备上实施安全控制,
  5. 监控与移动设备有关的活动,如第三方应用安装,root等
  6. 执行策略或禁止特定移动设备活动的使用
  7. 考虑移动设备不同的部署方式
  8. BYOD内在风险
  9. 应用不同的安全控制打击BYOD风险,如确定所有权,鼓励使用防恶意软件,为用户提供工具和知识保护隐私等

5.5 在软件开发生命周期中纳入安全性

  • 发起 --> 设计 --> 实施 --> 测试 --> 部署 --> 处理
  • 版本控制

5.5.1 DevOps

  • DevOps中,网络架构师和管理员能够配置必要的基础架构,以帮助测试应用程序的网络功能,而不会干扰其他业务。
  • 不可变系统(immutable system):DevOps有助于使用不可变系统,在每次配置更改时从头开始重新创建,使用结束后以编程方式销毁。确保系统始终保持在它需要所处的状态,没有任何无关的配置。
  • 供应和撤销供应:需要时提供资源,不需要时取消供应。

5.5.2 保护代码的技巧

  1. 合理的输入验证(input validation):包括限制用户输入到特定字段中的内容,将无法识别呀不需要的输入进行规范化(normalizing)
  2. 合理的错误处理:减少将有关代码的数据暴露给未经授权用户的风险。
  3. 加密:使用合理的寻加算法/技术维持敏感数据的机密性
  4. 代码签名(code signing):确保源代码和应用程序二进制文件未被篡改。
  5. 代码重用:使用可信第三方库
  6. 限制死代码:死代码指成功执行,但其结果实际上未在软件中使用的任何代码。
  7. 服务器和客户端:验证输入和软件执行
  8. 限制数据暴露:限制向用户暴露的应用数据数量。
  9. 内存管理
  10. 存储程序(Stored procedure):是一组预编译的数据库语句,用于验证数据库的输入。可以限制用户可以成功提交的语句、种类、格式实现。
编译代码(compiled code):指从高级编程语言源代码转换为可由系统直接执行的低级代码。
运行时代码(runtime code):指由中间在运行环境解释的源代码,这些代码在该环境运行,而不是由系统直接运行。

5.5.3 代码测试方法

  1. 静态代码分析(static code analysis):在源代码没有执行时查看源代码的过程
  2. 动态代码分析:动态代码分析是在执行代码时审查代码的过程
  3. 压力测试
  4. 沙盒:测试不同环境下的测试结果
  5. 模型验证:评估软件项目如何满足开发早期定义的规范的过程。

5.5.4 软件开发生命周期的安全性准则

  1. 将安全性集成到软件开发生命周期的每个阶段
  2. 考虑采用DevOps,将软件开发与系统操作集成在一起
  3. 在DevOps文化中,利用软件自动化和基础架构即代码
  4. 开发过程中加入版本控制系统,便于管理项目变更
  5. 整合安全编码技术,避免代码中的漏洞,如:输入验证,存储程序等
  6. 评估软件项目的安全性,稳定性和功能。
posted @ 2023-07-07 10:07  f_carey  阅读(15)  评论(0编辑  收藏  举报  来源