19.1.1 操作系统安全概念
一般来说,操作系统的安全是指满足安全策略要求,具有相应的安全机制及安全功能,符合特定的安全标准,在一定约束条件下,能够抵御常见的网络安全威胁,保障自身的安全运行及资源安全。国家标准《信息安全技术操作系统安全技术要求(GB/T 20272-2019 )》根据安全功能和安全保障要求,将操作系统分成五个安全等级,即用户自主保护级、系统审计保护级、安全标记保护级、结构化保护级、访问验证保护级。
19.1.2 操作系统安全需求
操作系统安全隐患直接危及整个网络信息系统的安全性。目前,操作系统的安全目标是能够防范网络安全威胁,保障操作系统的安全运行及计算机系统资源的安全性。通常来说,操作系统的安全需求主要包括如下几个方面:
(1)标识和鉴别。能够唯一标识系统中的用户,并进行身份真实性鉴别。
(2)访问控制。按照系统安全策略,对用户的操作进行资源访问控制,防止用户对计算机资源的非法访问(窃取、篡改和破坏)。
(3)系统资源安全。能够保护系统中信息及数据的完整性、保密性、可用性。
(4)网络安全。能够进行网络访问控制,保证网络通信数据安全及网络服务的可用性。
(5)抗攻击。具有系统运行监督机制,防御恶意代码攻击。
(6)自身安全。操作系统具有自身安全保护机制,确保系统安全和完整性,具有可信恢复。
19.1.3 操作系统安全机制
操作系统的安全保障集成多种安全机制,主要包括硬件安全、标识与鉴别、访问控制、最小特权管理、安全审计、可信路径、系统安全增强等。
19.2.1 Windows 系统架构划分为三层
最底层是硬件抽象层,它为上面的一层提供硬件结构的接口,有了这一层就可以使系统方便地移植;第二层是内核层,它为低层提供执行、中断、异常处理和同步的支持;第三层是由一系列实现基本系统服务的模块组 Windows 2000 系统在安全设计上有专门的安全子系统,安全子系统主要由本地安全授权(LSA)、安全账户管理(SAM)和安全参考监视器( SRM)等组成。其中,本地安全授权部分提供了许多服务程序,保障用户获得存取系统的许可权。它产生令牌、执行本地安全管理、提供交互式登录认证服务、控制安全审查策略和由 sRM 产生的审查记录信息。
19.2.2 Windows 安全机制
1. Windows 认证机制
Windows 2000 安全系统集成三种不同的身份验证技术:Kerberos V5、公钥证书和 NTLM。
2. Windows 访问控制机制
为了实现进程间的安全访问,Windows NT/XP 中的对象采用了安全性描述符(SecurityDescriptor )。安全性描述符主要由用户 SID ( Owner )、工作组 SID ( Group )、自由访问控制列表(DACL)和系统访问控制列表(SACL)组成。
3. Windows 审计日志机制
日志文件是 Windows 系统中一个比较特殊的文件,它记录 Windows 系统的运行状况,如各种系统服务的启动、运行、关闭等信息。Windows 日志有三种类型:系统日志、应用程序日志和安全日志,它们对应的文件名为 SysEvent.evt, AppEvent.evt 和 SecEvent.evt。这些日志文件通常存放在操作系统安装的区域“system32\config”目录下。
4. Windows 协议过滤和防火墙
针对来自网络上的威胁,Windows NT 4.0, Windows 2000 则提供了包过滤机制,通过过滤机制可以限制网络包进入用户计算机。
5. Windows 文件加密系统
为了防范入侵者通过物理途径读取磁盘信息,绕过 Windows 系统文件访问控制机制。微软公司研究开发了加密的文件系统 EFS,文件中的数据利用 EFS 在磁盘上加密。用户如果访问加密的文件,则必须拥有这个文件的密钥,才能够打开这个文件,并且像普通文档一样透明地使用它。
6.抗攻击机制
针对常见的缓冲区溢出、恶意代码等攻击,微软公司的新版本操作系统 Windows10 增加抗攻击安全机制,集成了内存保护机制 。
19.2.3 Windows 系统安全分析
目前,Windows 系统承受着各种各样的攻击, Windows 系统的安全问题主要有以下几个。
1. Windows 口令
2. Windows 恶意代码
3. Windows 应用软件漏洞
运行在 Windows 平台的应用软件的安全隐患日益暴露,这些安全隐患常常导致 Windows 系统被非授权访问、非法滥用等。例如 IE 浏览器的安全漏洞导致远程攻击者植入木马,进而危及整个系统的安全。
4. Windows 系统程序的漏洞
Windows 系统程序的设计、实现过程中的安全隐患通常带来不少安全问题,例如 RPC 程序的漏洞导致缓冲区溢出攻击。
5. Windows 注册表安全
注册表(Registry)是有关 Windows 系统配置的重要文件,存储在系统安装目录"system32\config”下。由于所有配置和控制系统的数据都存在于注册表中,而且 Registry 的缺省权限设置是“所有人”(Everyone )“完全控制”(Fu1lControl )和“创建”(Create ),这种设置可能会被恶意用户利用来删除或者替换掉注册表(Registry)文件。例如,入侵者通过修改、创建注册表的相关参数设置,让系统启动恶意进程。
6. Windows 文件共享安全
Windows 98 以后的系统都提供文件共享安全,但是共享会带来信息泄露的问题。例如,Windows 2000,Windows XP 在默认安装后允许任何用户通过空用户连接(IPC$ )得到系统所有账号和共享列表,这本来是为了方便局域网用户共享资源和文件的,但是任何一个远程用户都可以利用这个空的连接得到所有用户的共享列表。黑客利用这项功能,查找系统的用户列表,使用字典工具,对系统进行攻击。这就是网上较流行的 IPC 攻击。
7. Windows 物理临近攻击
一些攻击者利用物理接近 Windows 系统的条件,借用安全工具强行进入 Windows 系统。例如,使用 OfflineNT Password & Registry Editor 软件制作启动盘,然后用该盘引导系统,进而可以访问 NTFS 文件系统。
19.2.4 Windows 系统安全增强技术方法与流程的系统安全增强方法有下面几种:
1.确认系统安全增强的安全目标和系统的业务用途,系统安全目标实际上就是用户所期望系统的安全要求,例如防止信息泄露、抗拒绝服务攻击、限制非法访问等。系统的业务用途是后续安全增强的依据,根据系统的业务用途,系统在安装时或设置策略时进行合适的选择。
2.安装最小化的操作系统,最小化操作系统的目的是减少系统安全隐患数目,系统越大,可能的安全风险就越大,而且管理上也难以顾及。安装最小化的操作系统要求如下:
尽量使用英文版 Windows 操作系统;
不要安装不需要的网络协议;
使用 NTFS 分区;
删除不必要的服务和组件;
3.安装最新系统补丁,系统的漏洞通常成为入侵者进入的途径,因而漏洞的修补是系统安全增强的必要步骤。
4.配置安装的系统服务,根据系统的业务运行的基本要求,做到以下几点:
不要安装与系统业务运行无关的网络/系统服务和应用程序;
5.配置安全策略
6.禁用 NetBIOS,NetBIOS 提供名称服务和会话服务,这些服务通常会给攻击者提供入侵切入点。
7.账户安全配置
账户权限设置不当往往会导致安全问题,在 winaoWs 系统中,设置账户权限应做到以下几点:
禁用默认账号;
定期检查账户,尽早发现可疑账户;
锁定 Guest 账户;
8.文件系统安全配置
19.2.5 Windows 2000 系统安全增强
1.系统启动安全增强
2.账号与口令管理安全增强
具体安全增强措施如下。
1)停用 guest 账号在计算机管理的用户里把 guest 账号停用,任何时候都不允许 guest 账号登录系统。另外,最好给 guest 加一个复杂的口令。
2)限制不必要的用户数量去掉所有的 duplicate user 账号、测试账号、共享账号、普通部门账号等。给用户组策略设置相应权限,并且经常检查系统的账号,删除己经不再使用的账号。
3)把系统 Administrator 账号改名把 Administrato:账号换成不易猜测到的账号名,这样可以有效地防止口令尝试攻击。注意,请不要使用Admin 之类的名字。
4)创建一个陷阱账号创建一个名为 Administrator 的本地账号,把它的权限设置成最低,并且加上一个超过 10 位的复杂口令。这样可以增加攻击者的攻击强度,并且可以借此发现他们的入侵企图。
5)设置安全复杂的口令设置安全复杂的口令,使得攻击者在短时间内无法破解出来,并且定期更换口令。
6)设置屏幕保护口令设置屏幕保护口令是防止内部人员攻击的一个屏障。
7)不让系统显示上次登录的用户名
默认情况下,终端服务接入服务器时,登录对话框中会显示上次登录的账号名,本地的登录对话框也是一样。这使得攻击者可以轻易得到系统的一些用户名,进而做口令猜测。为增强系统安全,通过修改注册表,不 让 对 话 框 里 显 示 上 次 登 录 的 用 户 名 , 具 体 修 改 操 作是 :HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\DontDisplayLastUserName 下 , 把 REG SZ的键值改成“1"。
8)开启口令安全策略
攻击者常利用系统的漏洞来进行入侵。因此,必须密切关注微软或其他网站发布的漏洞和补丁信息,及时为系统安装上最新的补丁,这样有助于保护操作系统免受新出现的攻击方法和新漏洞的危害。
4.网络安全增强
攻击 Windows 2000 的主要途径来自网络,为了防止网络攻击,Windows 2000 从以下几个方面进行安全增强。
1) 禁止建立空连接
2)关闭默认共享
3)关闭不必要的网络服务和网络端口
19.3 UNIX/Linux 操作系统安全分析与防护
19.3.1 UNIX/Linux 系统架构
19.3.2 UNIX/Linux 安全机制
UNIX/Linux 是一种多用户、多任务的操作系统,因而,UNIX/Linux 操作系统基本的安全功能需求就是不同用户之间避免相互干扰,禁止非授权访问系统资源。
1. UNIX/Linux 认证
认证是 UNIX/Linux 系统中的第一道关卡,用户在进入系统之前,首先经过认证系统识别身份,然后再由系统授权访问系统资源。目前,UNIX/Linux 常用的认证方式有如下几种。
1)基于口令的认证方式
基于口令的认证方式是 UNIX/LINUX 最常用的一种技术,用户只要给系统提供正确的用户名和口令就可以进入系统。
2)终端认证
在 UNIX/Linux 系统中,还提供一个限制超级用户从远程登录的终端认证。
3)主机信任机制
UNIX/Linux 系统提供不同主机之间的相互信任机制,这样使得不同主机用户之间无须系统认证就可以登录。
4)第三方认证
第三方认证是指非 UNIX/Linux 系统自身带有的认证机制,而是由第三方提供认证。在 Linux 中,系统支持第 三 方 认 证 , 例 如 一 次 一 密 口 令 认 证 S/Key, Kerberos 认 证 系 统 、 插 入 式 身 份 认 证 PAM ( PluggableAuthentication Modules )。
2. UNIX/Linux 访问控制
普通的 UNIX/Linux 系统一般通过文件访问控制列表 ACL 来实现系统资源的控制,也就是常说的通过“9bit”位来实现。某个文件的列表显示信息如下:
rwxr-xr-- 1test test 4 月 9 日 17:50 sample.txt
由这些信息看出,用户 test 对文件 sample.txt 的访问权限有“读、写、执行”,而 test 这个组的其他用户只有“读、执行”权限,除此以外的其他用户只有“读”权限。
3. UNIX/Linux 审计机制
审计机制是 UINIX/Linux 系统安全的重要组成部分,审计有助于系统管理员及时发现系统入侵行为或系统安全隐患。不同版本的 Lniux 日志文件的目录是不同的,早期版本 UNIX的审计日志目录放在//usr/adm;较新版本的在//var/adm; Solaris,和 BSD 在 UNIX/var/logo常见日志文件如下:
lastlog:记录用户最近成功登录的时间;
loginlog:不良的登录尝试记录;
messages:记录输出到系统主控台以及由 syslog 系统服务程序产生的消息;
utmp:记录当前登录的每个用户;
utmpx:扩展的 utmp ;
wtxnp:记录每一次用户登录和注销的历史信息;
【这些日志文件大概了解一下即可】
1. UNIX/Linux 口令/账号安全
UNIX/Linux 系统的账号和口令是入侵者最为重要的攻击对象,特别是超级用户 root 口令,一旦 root 口令泄露,则危及整个系统的安全。在 UNIX/Linux 中,口令信息保存在 passwd 和 shadow 文件中,这两个文件所在的目录是/etc。入侵者常利用各种方法来获取口令文件。
2. UNIX/Linug 可信主机文件安全
在 UNIX/Linux 系统环境中,为了便于主机之间的互操作,系统提供两个文件$HOME/.rhost 或/etc/hosts.equiv来配置实现可信主机的添加。当一台主机 A 信任另外一台主机 B 后,主机 B 的用户无须主机 A 的认证就可以从主机 B 登录到主机 A。但是,这种简单的信任关系很容易导致假冒,如果可信主机文件配置不当的话,就会难以避免地带来安全隐患。
3. UNIX/Linux 应用软件漏洞
UNIX/Linux 平台的应用软件安全隐患日益暴露,特别是常用的应用软件包,例如 Sendmail 和 BIND。这些安全隐患常常导致系统被非授权访问、非法滥用等。早期的“小莫里斯”网络蠕虫就利用 Sendmail 漏洞来传播。
4. UNIX/Linux 的 SUID 文件安全
在 UNIX/Linux 中,SUID 文件是指被设置成可以带有文件拥有者的身份和权限被执行的可执行文件。因为许多系统安全漏洞存在于 SUID 文件中,SUID 文件己成为系统安全的重大隐患。
5. UNIX/Linux 的恶意代码
同 Windows 系统相比较,UNIX 系统的计算机病毒危害少一些,但仍然存在。其他针对 UNIX 系统的网络蠕虫、特洛伊木马、rootkit 也时有报道。
6. UNIX/Linux 文件系统安全
7. UNIX/Linux 网络服务安全
在 UNIX/Linux 系统中,系统提供许多网络服务,例如 forger, R 一命令服务等。虽然这些服务能够给工作带来方便,但是也造成系统存在安全隐患。例如,通过 forger 服务可以获取远程 UNiX/LINUX 主机的信息,过程如下。
finger 0@victim.host
Alice ??? pts/2 Mon 17:18 some.place
Bob ??? pts/4 <May 13 17:04> xxx.xxx.xxx.xxx
入侵者一般通过普通账号进入 UNIX/Linux 系统,然后再利用系统的程序漏洞提升权限。
19.3.4 UNIX/Linux 系统安全增强方法和流程
1. UNIX/Linux 系统安全增强方法
同 Windows 系统的安全增强一样, UNIX/Linux 系统的安全增强方法常见的有下面几种:
给安全漏洞打补丁;
停止不必要的服务;
升级或更换软件包;
修改系统配置;
安装专用的安全工具软件;
2. UNIX/Linux 系统安全增强基本流程
第一步,确认系统的安全目标。实际上,系统的安全目标就是用户根据系统的运行业务而期望的安全要求,包括系统的保密性、完整性、可用性、可控制性、抗抵赖性。
第二步,安装最小化 UNIX/Linux 系统。这一步的任务就是根据系统所要完成的业务,而选择合适的安装包,减少不需要的软件包,以减少安全隐患。
第三步,利用 UNIX?LINux 系统自身的安全机制,配置安全策略,主要有用户及口令、主机信任、文件访问、网络服务、系统审计等。
第四步,在 UNlX/Linux 系统自身的安全机制不行的情况下,利用第三方软件包来增强系统安全。
第五步,利用系统安全测试工具,检查 UNIX/Linux 系统的安全策略的有效性或系统的安全隐患。这些常用的安全工具有端口扫描 Nmap、文件安全配置检查 COPS、口令检查工具 Crack 等.
第六步,根据系统安全测试,重新调整安全策略或安全措施。
第七步,在系统安全检查通过后,UNIX/Linux 系统就开始正常运行。这时,系统需要不定期进行安全监控,包括进程监控、用户监控、网络连接监控、日志分析等,通过安全监控以保持系统安全。
19.3.5 UNIX/Linux 系统安全增强技术
1.安装系统补丁软件包
及时从应急响应安全站点获取 UNIX/Linux 系统漏洞公布信息,并根据漏洞危害情况,给系统安装补丁包。同时,在安装操作系统补丁前,必须确认补丁软件包的数字签名,检查其完整性,保证补丁软件包是可信的,以防止特洛伊木马或恶意代码攻击。在 Linux 中,可以用 MD5Sum 检查工具来判断补丁软件包的完整性。
2.最小化系统网络服务
最小化配置服务是指在满足业务的前提条件下,尽量关闭不需要的服务和网络端口,以减少系统潜在的安全危害。实现 UNIX/Linux 网络服务的最小化具体安全要求如下:
inetd.conf 的文件权限设置为 600;
inetd.conf 的文件属主为 root;
services 的文件权限设置为 644;
seances 的文件属主为 root;
在 inetd.conf 中,注销不必要的服务,比如 forger, echo, chargen, rsh, rlogin, tftp 服务; 只开放与系统业务运行有关的网络通信端口。
3.设置系统开机保护口令
在 UNIX/Linux 系统中,用户可以通过特殊的组合键而无须提供用户名和口令,就能以单用户身份进入系统。因此,针对这种威胁,一方面要尽量避免入侵者物理临近系统,另一方面要设置系统开机保护口令,阻止入侵者开机,从而达到保护系统的目的。开机保护口令由 BIOS 程序设置实现,这样当系统启动时,BIOS 程序将提示用户输入密码。
4.弱口令检查
UNIX/linux 系统中的弱口令是入侵者进行攻击的切入点,一旦口令被入侵者猜测到,系统就会受到极大的危害。因此,针对弱口令安全隐患,系统管理员通过口令破解工具来检查系统中的弱口令,常用的口令检查工具是 John the Ripper。
John the Ripper 是一个快速的口令破解工具,主要针对 UNIX 下的弱口令,支持的平台有 UNIX, DOS, Linux,Windows。下面举例说明应用 John 工具破解 UNIX 弱口令的过程。在命令行方式下键入 John,可显示它的使用方法。John 提供多种参数模式来破解口令。
5.禁用默认账号
一些 UNIX /Linux 系统带有默认账号,这些默认账号的口令又是为大多数人所知的,极可能成为攻击者进入系统的后门,因而留在系统中极为危险。因此,对这些默认账号最好的安全处理方式是禁用,或者更改口令。
6.用 SSH 增强网络服务安全
在 UNIX/Linux 系统中,一些网络服务在设计时就缺乏安全考虑,存在安全缺陷,易导致系统受到侵害。
7.利用 tcp_wrapper 增强访问控制
tcpes wrapper 是 Wietse Venema 开发的一个可用于各种 UNIX 平台的免费软件,tcpee wrapper 正逐渐成为一种标准的 UNIX 安全工具,成为 UNIX 守护程序 inetd 的一个插件。通过 tcp_wrapper,管理员可以设置对inetd 提供的各种服务进行监控和过滤。
8.构筑 UNIX/Linux 主机防火墙
目前,支持 UNIX /Linux 系统的防火墙软件包有 ipchains, iptables 以及 netfilter。利用这些防火墙软件包,UNIX/Linux 系统可以过滤掉不需要的通信,而且可以从网络上限制远程访问主机,从而减少系统受到的侵害。
9.使用 Tripwire 或 MD5Sum 完整性检测工具
当建立新的 Unix/Linux 系统后,应记录所有系统文件的硬件和软件信息,并形成一个系统文件基准信息库,以便日后检查系统文件的完整性变化,避免恶意程序的植入和修改。利用 Tripwire 或 MD5Sum 软件安全工具可以发现被篡改的文件。Tripwire 是最为常用的开放源码的完整性检查工具,它能生成目标文件的完整性标签, 并周期性地检查文件是否被更改。
10.检测 LKM 后门
1.UNIX/LINUX 系统一般都支持 LKM ( Loadable Kernel Module)功能,但是留下了一个安全隐患,就是入侵者能编写可加载内核模块,例如 rootkit,从而造成较大的系统危害性。针对 LKM 后门危害,除了利用完整性检查工具外,还可利用专用安全检查工具,例如 Kstat, Chkrootkit,Rootkit Hunter。
2.系统安全监测系统的安全是动态的,对运行的系统进行实时监控有利于及时发现安全问题,做针对 UNIX/Linux 系统的安全监测,常用的安全工具有 Netstat, lsof, Snort 等。
19.3.6 Linux 安全增强配置参考
Linux 是被广泛应用的系统,其系统安全性日益重要。针对 Linux 的安全问题,下面介绍Linux 目前主要的安全增强措施和操作。
1.禁止访问重要文件
对于系统中的某些关键性文件,如 inetd.conf, services 和 lilo.conf 等可修改其属性,防止意外修改和被普通用户查看.
首先改变文件属性为 600:
#chmod 600 /etc/inetd.conf
保证文件的属主为 root,将其设置为不能改变:
# chattr +i /etc/inetd.conf
这样,对该文件的任何改变都将被禁止。
只有 root 重新设置复位标志后才能进行修改:
#chattr-i /etc/inetd.conf
2.禁止不必要的 SUID 程序
SUID 可以使普通用户以 root 权限执行某个程序,因此应严格控制系统中的此类程序。找出 root 所属的带 s 位的程序:
#find /-type f \ (-perm -04000-o -perm -02000 \ ) –print|less
禁止其中不必要的程序:
#chmod a-s program_name
3.为 LILO 增加开机口令
在/etc/lilo.conf 文件中增加选项,从而使 LILO 启动时要求输入口令,以加强系统的安全性。具体设置如下:
此时需注意,由于在 LILO 中口令是以明码方式存放的,所以还需要将 lilo.conf 的文件属性设置为只有root 可以读写:
# chmod 600 /etc/lilo.conf
当然,还需要进行如下设置,使 lilo.conf 的修改生效:
#/sbin/lilo -v
4.设置口令最小长度和最短使用时间
口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为 5,但为保证口令不易被猜测攻击,可增加口令的最小长度至少为 8。为此,需修改文件//etc/login.defs 中的参数 PASS_MIN_LEN。同时应限制口令的使用时间,保证定期更换口令,建议修改参数 PASS_MIN_DAYS.
5.限制远程访问
在 Linux 中可通/etc/hosts.allow 和/etc/hosts.deny 这两个文件允许和禁止远程主机对本地服务的访问。
(1)编辑 hosts.deny 文件,加入下列行:
#Deny access to everyone.
ALL:ALL@ALL
则所有服务对所有外部主机禁止,除非由 hosts.allow 文件指明允许。
(2)编辑 hosts.allow 文件,可加入下列行:
#Just an example:
ftp:202 .XXX.XXX YYY.com
则将允许 IP 地址为 202.XXX.XXX 和主机名为 YYY.com 的机器作为客户访问 FTP 服务。
(3)设置完成后,可用 tcpdchk 检查设置是否正确。
6.用户超时注销
如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile 文件,保证账户在一段时间没有操作后,自动从系统注销。编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行:
TMOUT=600 则所有用户将在 10 分钟无操作后自动注销。
7.注销时删除命令记录
编辑/etc/skel/.bash logout 文件,增加如下行:Rm-f $HOME/.bash_hsitory
这样使得系统中的用户在注销时都会删除其命令记录。如果只需要针对某个特定用户,如 root 用户进行设置,则可只在该用户的主目录下修改/$HOME/.bashes history 文件,增加相同的一行即可。
19.4.3 国产操作系统安全增强措施
国产操作系统在自主可控、安全可信方面,对开源操作系统 Linux 进行安全增强,从多个方面对 LNIUX操作系统提供安全保障,包括管理员分权、最小特权、结合角色的基于类型的访问控制、细粒度的自主访问控制、多级安全(即禁止上读下写)等多项安全功能,从内核到应用提供全方位的安全保护。中标麒麟、中科 方 德 等 厂 商 研 发 的 国 产 操 作 系 统 通 过 了 国 家 标 准 《 信 息 安 全 技 术 操 作 系 统 安 全 技 术 要 求 (GB/T20272-2019 )》中规定的第三级、第四级认证。