第四章 系统安全
4.1 操作系统概述
计算机是由硬件、操作系统软件、应用软件共同构成的复杂系统。其中,一系列复杂的硬件是计算机的基础,多样的应用软件则为用户提供各种不同的应用服务,而操作系统则是整个计算机系统的“灵魂”。
操作系统是一组管理与控制计算机软、硬件资源,为用户提供便捷计算服务的计算机程序的集合。
计算机操作系统的功能主要包括:
1)进程管理
2)内存管理
3)设备管理
4)文件管理
5)用户接口
4.2操作系统安全
4.2.1 操作系统的安全威胁与脆弱性
1.操作系统的安全威胁
威胁计算机操作系统安全的因素有很多,主要有以下几个方面:
(1)非法用户或假冒用户入侵系统
(2)数据被非法破坏或者数据丢失
(3)不明病毒的破坏和黑客入侵
(4)操作系统运行不正常
2.操作系统的脆弱性
无论是哪种计算机系统,都是有人开发及控制的,所以安全漏洞的存在是不可避免的,而且也不可避免地会遭到破坏和干扰。操作系统的脆弱性主要来自以下几个方面:
(1)操作系统地远程调用和系统漏洞
(2)进程管理体系存在问题
操作系统的常见漏洞包括:
(1)空口令或弱口令
(2)默认共享密码
(3)系统组件漏洞
(4)应用程序漏洞
4.2.2 操作系统中常见的安全保护机制
1.进程隔离和内存保护
为了实现进程隔离和内存保护的机制,计算机操作系统中加入了内存管理单元模块,当程序在计算机中运行时,由MMU模块负责分配进程运行所需的内存空间,进程隔离与内存保护机制为每个进程提供互相独立的运行空间,该机制通过禁止进程读写其他进程以及系统进程的内存空间来实现隔离,并通过一系列复杂的机制实现隔离环境下的进程间通信机制与进程间资源共享机制。
2.运行模式
为了安全起见,现代CPU的运行模式通常分为内核模式和用户模式两种运行模式:
(1)内核模式:也称为特权模式,在Internet x86系列中,称为核心层(Ring 0)
(2)用户模式:也称为非特权模式,或者用户层(Ring 3)
3.用户权限控制
当前常用的操作系统通常将用户权限分为系统管理员用户、普通用户、访客用户等不同权限级别,不同类型的用户账号拥有不同的操作权限,通常系统管理员用户拥有对操作系统进行管理的全部权限,普通用户则只有执行、修改属于自己的应用软件和文件的权限,而访客用户则只能访问系统管理员用户和普通用户共享出来的极少的文件和应用。
4.文件系统访问控制
典型的文件操作权限控制是对文件的读、写和执行三方面权限进行限制,分别对应对文件进行读取、修改和运行的操作。
4.2.3 操作系统的安全评估标准
D类:无保护级
C类:自主保护级别
- C1级:自主安全保护级
- C2级:控制访问保护级
B类:强制保护级别
- B1级:标记安全保护级
- B2级:机构化保护级
- B3级:安全区域保护级
A类:验证保护级
- A1级:验证设计级
- 超A1级
4.2.4 常用的操作系统及其安全性
1.Windows系统安全
(1)Windows安全子系统
Windows安全子系统位于Windows操作系统的核心层
1)系统登陆控制流程
2)安全账号管理器
3)本地安全认证
4)安全引用监控器
(2)NTFS文件系统
NTFS文件系统自Windows NT版本开始被微软作为Windows系统的默认文件系统。NTFS文件系统可以对文件系统中的对象设置非常精细的访问权限,其特点主要包括:
- NTFS可以支持的分区大小可以达到2TB。而Windows2000中的FAT32支持的分区大小可达到32GB
- NTFS是一个可恢复的文件系统
- NTFS支持对分区、文件夹和文件的压缩及加密
- NTFS采用了更小的簇,可以更有效率地管理磁盘空间
- 在NTFS分区上,可以为共享资源、文件夹以及文件设置访问许可权限
- 在NTFS文件系统下可以进行磁盘配额管理
- NTFS文件系统中的访问权限是累积的
- NTFS文件权限超越文件夹的权限
- NTFS文件系统中的拒绝权限超越其他权限
- NTFS权限具有继承性
(3)Windows服务包和补丁包
(4)Windows系统日志
Windows系统用户可以通过以下手段提升Windows系统的安全性。
1)正确设置和管理系统用户账户,包括:
- 停止使用Guest账户
- 尽可能少添加用户账户
- 为每个账户设置一个复杂的密码
- 正确地设置每个账户的权限
- 给系统默认的管理员账户改名
- 尽量少用系统管理员账户登陆系统等
2)安全管理系统对外的网络服务
3)启用Windows系统日志功能
2.Linux系统安全
(1)Linux系统的安全机制
Linux采取了许多安全技术措施,有些是以“补丁”的形式发布的,下面简单介绍Linux系统的安全机制:
1)PAM机制
2)加密文件系统
3)防火墙
(2)Linux系统安全防范及设置
1)Linux引导程序安全设置
2)防止使用组合键重启系统
3)安全登录、注销
4)用户账号安全管理
5)文件的安全
6)资源使用的限制
7)清除历史记录
8)系统服务的访问控制
9)系统日志安全
10)关闭不必要的服务
11)病毒防范
12)防火墙
13)使用安全工具
14)备份重要文件
15)升级
16)Rootkit安全防范
Rootkit的组成:
- 以太网嗅探器程序
- 隐藏攻击者的目录和进程的程序
- 一些复杂的Rootkit还可以向攻击者提供telent、shell和finger等服务
- 一些用来清理/var/log和/var/adm目录中其他文件的脚本
目前最常见的Rootkit是Linux Rootkit,以LRK为例 ,LRK工作集包含有:
- Fix:timestamp和checksum,它用来把篡改过的程序的timestamp和checksum变更为和原先系统中的程序相同
- Linsniffer:窃取特定网络信息的sniffer
- Wted:查阅或移除wtmp中指定的栏位
- Z2:移除某个使用者最后的utmp/wtmp/lastlog记录
防范和发现Rootkit:
首先,不要在网上使用明文传输密码,或者使用一次性密码。
其次,使用Tripwire和aide等检测工具能够及时地发现攻击者的入侵,它们能够提供系统完整性的检查。
另外,如果怀疑自己可能被植入Rootkit,可以使用chkrootkit来检查。
4.3 移动终端安全
4.3.1移动终端的概念及其主要安全问题
1.移动终端的概念
移动终端(或者叫移动通信终端)是指可以在移动中使用中使用的计算机设备。广义地讲,移动终端包括手机、笔记本、POS机,甚至包括车载电脑,但是大部分情况下是指手机或者具有多种应用功能的智能手机。
我们大致可以将其划分为以下两大类:
1)有线可移动终端:指U盘、移动硬盘等需要用数据线来和电脑来连接的设备。
2)无线移动终端:指利用无线传输协议来提供无线连接的模块,常见的无线移动终端主要包括智能手机,POS机,笔记本电脑也属于无线移动终端。
移动终端面临两方面的安全问题。一方面,任何一种系统或平台都有其自身的脆弱性,攻击者会利用这些脆弱性进行攻击,移动终端自然也不例外;另一方面,移动终端上有大量应用,其中不少应用在上线之前由于各种原因并没有经过严格的安全性测试,导致存在严重的安全隐患。
2.移动终端面临的安全问题
目前,移动终端中存在的安全问题可归纳为敏感信息本地存储、网络数据传输、恶意软件、应用安全和系统安全问题等类型。
(1)敏感信息本地存储
(2)网络数据传输
(3)应用安全问题
(4)恶意软件
(5)系统安全问题
4.3.2 Android平台及其安全
1.认识Android平台
Android系统的第一个商业版本在2008年发布,至今,Android系统已经成为世界范围内广泛应用的移动操作系统。Android系统不仅用于手机和平板电脑,并且已经应用在智能手表、智能电视甚至个人电脑中。
2.Android的平台特性
Android平台在系统架构上分为多个层次,其中比较重要的有应用层、框架层、运行时和Linux内核层。
- 应用层:即直接为用户提供服务的应用软件。
- 框架层:Android系统的核心部分,有多个系统服务组成。
- 运行时:Android平台的运行时由Java核心类库与Dalvik虚拟机共同组成。
- 内核层:Linux内核层是Android系统的最底层。
3.Android平台的安全问题
4.ROOT的危害
- 不能通过官方进行软件升级
- 增大了因误删导致系统崩溃的几率
- 设备上的病毒、木马有更多机会破坏设备或利用系统达成其非法目的
5.恶意软件的威胁
4.3.3 iOS平台及其安全
1.认识iOS平台
iOS平台是苹果公司于2007年发布的专为初代iPhone等使用的移动端操作系统。
2.iOS平台的安全机制
- 权限分离
- 强制代码签名
- 地址空间随机布局
- 沙盒
沙盒的功能限制如下:
1)无法突破应用程序目录之外的位置
2)无法访问系统上其他的进程,即使是具有同样UID的进程
3)无法直接使用任何硬件设备,只能通过苹果受到约束的API来进行访问
4)无法生成动态代码
3.XcodeGhost事件分析
XcodeGhost造成的危害有如下几种:
1)上传用户信息
2)应用内弹窗
通过URLScheme执行其他操作
4.3.4 移动系统逆向工程和调试
1.移动终端逆向工程概述
逆向工程,顾名思义,是通过反汇编、反编译等手段从应用程序的可执行文件中还原出程序源代码的过程。
在代码分析阶段,主要是通过以下几点,对程序的二进制文件进行分析。
1)发现安全漏洞:在未知源代码的情况下,可以通过逆向工程对应用程序进行分析,发现应用中潜藏的安全漏洞与数据泄露风险
2)检测恶意代码:逆向工程是检测程序中是否存在恶意代码的重要方法
3)病毒木马分析:通过逆向工程,可以准确了解病毒的运行机制和行为特征,方便进行病毒的查杀与专杀工具的编写。
总结以上分析,逆向工程主要有两个作用:
- 攻破目标程序,拿到关键信息,可以归类于与安全相关的逆行工程
- 借鉴他人的程序功能来开发自己的软件,可以归类于与开发相关的逆向工程
2.Android平台逆行工程
一般情况下,apk文件包中会包含以下文件:
- AndroidMainifest.xml文件:应用程序全局配置文件,包含了对组建的定义和应用程序的使用权限
- res文件夹:用于存放资源文件的resources文件夹
- classes.dex文件:Android系统中的应用程序可执行文件
- Resources.arsc:经过编译的二进制资源文件
- META-INF文件夹:存储签名相关的信息
以下介绍classes.dex的简要分析方式:
1)对可执行文件进行反汇编,分析生成的Darvik字节码。
2)使用Apktool或Baksmali生成smali文件进行阅读。
3)使用DDMS等工具监控Android程序的运行状态,对Android程序进行动态调试。
为了防止应用软件被Android逆向工程,可以采取以下几种防护措施:
1)代码混淆:可以使用ProGuard对Java代码进行混淆,增加反编译后阅读的难度。
2)加壳:通过为apk增加保护外壳的方式,保护其中的代码,增加非法修改和反编译的难度。
3)调试器检测:在代码中添加检测动态调试器的模板,当程序检测到调试器依附时,立即终止程序运行
3.iOS平台逆向工程
常用的iOS逆向分析工具有以下几种:
- Dumpcrypt:对从Appstore中下载的应用进行脱壳操作
- class-dump:通常在逆向工程初始阶段使用class-dump
- IDAPro与HopperDisassembler:知名的反汇编工具,用于对可执行文件进行精准而细致的静态分析,转化为接近源代码的伪代码
- GDB与LLDB:与静态分析相对应,这两款工具通过动态调试系统的方式对程序进行更深入透彻的分析
- Cycript:通过进程注入的方式依附运行中的iOS程序,并可以使用JavaScript语法程序进行测试
4.4 虚拟化安全
4.4.1 虚拟化概述
计算机虚拟化技术是一种资源管理技术,它将计算机的各种物理资源,如CPU、内存及存储、网络等,通过抽象、转换后呈现给用户。
4.4.2 虚拟化技术的分类
1.按应用分类
- 操作系统虚拟化
- 应用程序虚拟化
- 桌面虚拟化
- 存储虚拟化、网络虚拟化等
2.按照应用模式分类
- 一对多
- 多对一
- 多对多
3.按硬件资源调用模式分类
- 全虚拟化
- 半虚拟化
- 硬件辅助虚拟化
4.按运行平台分类
- x86平台
- 非x86平台
4.4.3 虚拟化环境中的安全威胁
1.Hypervisor安全
下面是对增强Hypervisor安全的建议:
1)安装厂商发布的Hypervisor的全部更新
2)限制Hypervisor管理接口的访问权限
3)关闭所有不用的Hypervisor服务
使用监控功能来监视每个Guest OS的安全
5)仔细地监控Hypervisor自身的漏洞征兆
2.Guest OS安全
下面是对Guest OS自身的安全建议:
1)遵守推荐的物理OS管理惯例
2)及时安装Guest OS的全部更新
3)在每个Guest OS里,断开不用的虚拟硬件
4)为每个Guest OS采用独立的认证方案,特殊情况下会需要两个Guest OS共享证书
5)确保Guest OS的虚拟设备都正确关联到宿主系统的物理设备上
3.虚拟化基础设施安全
4.规划和部署的安全
(1)规划
该阶段是组织在开始方案设计之前要做的工作,规划阶段需确定当前和未来需求,确定功能和安全的要求。规划阶段的一个关键工作是开发虚拟化安全策略,安全策略应该定义组织允许哪种形式的虚拟化以及每种虚拟化下能够使用的程序和数据。
(2)设计
对于设计虚拟化方案,需考虑的安全性技术如下:
1)认证问题
2)密码问题
3)实施
虚拟化解决方案设计好之后,下一步就是把解决方案变成实际的系统,涉及的方面如下:
- 物理到虚拟的转化
- 监控方面
- 实施的安全性
- 运维
第七章 大数据背景下的先进计算安全问题
7.2 云安全
7.2.1 云的相关概念
1. 云
虚拟机是指通过软件模拟的具有完整性硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,具有封装性、独立性、隔离性、兼容性,且独立于硬件。
云是一种比喻说法,是一个计算资源池,通常为一些大型服务器集群,每一群包括了几十万台甚至上百万台服务器,是一种为提供服务而开发的整套虚拟环境。
云从技术架构可以分为三层:
- 服务软件即服务
- 平台即服务
- 基础设施即服务
从云面向的对象可以分为:
- 公有云
- 私有云
- 混合云
2.云计算
云计算是一种计算方法,即将需提供的服务汇聚成高效资源池,以服务的形式交付给用户使用。云计算通过互联网来提供动态、易扩展且经常是虚拟化的资源。
云计算是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡、热备份冗余等传统计算机和网络技术发展融合的产物。
3.云服务
云服务是在云计算环境下的服务交付模式,是基于互联网的相关服务的增加,使用和交付模式,通常涉及通过互联网来提供动态易扩展的资源,云服务提供的资源通常是虚拟化的资源。
4.云主机
云主机是云计算在基础设施应用上的重要组成部分,处于云计算产业链金字塔的底层。
5.云安全
云安全是一个从云计算衍生而来的新名词,是指云及其承载的服务,可以高效、安全的持续运行。
7.2.2 云面临的安全挑战
目前云面临的安全挑战主要集中在四个方面:
1)如何解决新技术带来的新风险
2)如何规划资源、数据等带来的风险
3)如何落实政策、法规方面的各项要求指标的风险
4)如何去运维管理云及其资源的风险
1.新技术
1)可控性
2)动态性
3)虚拟机逃逸
2.集中化
如何规划云架构、部署将是一个难题,面临的集中化安全挑战至少包括以下几点:
1)云数据中心安全防护方面存在网络结构的规划与设计,系统的识别与迁移,权限集中等问题
2)云平台管理员存在权限滥用风险,一旦恶意人员通过非法手段获得了云平台管理员账号,将会给整个云平台带来不可估量的损失
3)用户的安全隔离
4)资源池内用户抢夺资源和恶意攻击等
3.合规性
4.运维管理
7.2.3 云环境下的安全保障
1.云安全标准
2.云安全建设
1)物理安全方面需要考虑门禁、消防、温湿度控制、电磁屏蔽、防雷、环境监控系统等方面的信息安全建设防护
2)网络安全的安全建设通过FW、IDS/IPS、DDoS、VPN等方式去实现
3)主机安全需要考虑终端安全、主机安全、系统完整性保护、OS加固、安全补丁、病毒防护等方面的信息安全建设防护
4)虚拟化安全建设可以通过虚拟化平台加固、虚拟机加固与隔离、虚拟网络监控、恶意VM预防、虚拟安全网关VFW/VIPS等多方面去进行技术实现
5)应用安全建设可以考虑通过多因素接入认证、WAF、安全审计等技术实现