一、UNIX/Linux操作系统安全分析与防护
1.1 UNIX/Linux系统架构
UNIX有Solaris、AIX、HP-UNIX、Free BSD等不同特色的UNIX操作系统类型,在技术原理和系统设计结构上是相同的
Linux是一种开放源代码的操作系统,它类似于UNIX系统,目前广泛应用在互联网上
一般的UNIX/Linux 操作系统分为三层:硬件层、系统内核和应用层
UNIX/Linux 系统结构示意图
1.2 UNIX/Linux安全机制
UNIX/Linux是一种多用户、多任务的操作系统,因而,UNIX/Linux操作系统基本的安全功能需求就是不同用户之间避免相互干扰,禁止非授权访问系统资源。包括:
1. UNIX/Linux认证
目前,UNIX/Linux常用的认证方式有
- 基于口令的认证方式:最常用,用户只要给系统提供正确的用户名和口令就可以进入系统
- 终端认证:在UNIX/Linux系统中,还提供一个限制超级用户从远程登录的终端认证
- 主机信任机制:UNIX/Linux系统提供不同主机之间的相互信任机制,这样使得不同主机用户之间无须系统认证就可以登录
- 第三方认证:是指非UNIX/Linux系统自身带有的认证机制,而是由第三方提供认证。在UNIX/Linux中,系统支持第三方认证,例如一次一密口令认证S/Key、Kerberos认证系统、插入式身份认证PAM
2. UNIX/Linux访问控制
普通的UNIX/Linux系统一般通过文件访问控制列表ACL来实现系统资源的控制,也就是常说的通过“9bit"位来实现
3. UNIX/Linux审计机制
不同版本的UNIX/Linux日志文件的目录是不同的
- 早期版本UNIX的审计日志目录放在/usr/adm
- 较新版本的在/var/adm
- Solaris、Linux和BSD在UNIX/var/log
常见日志文件如下
|
|
1.3 UNIX/Linux系统安全分析
- UNIX/Linux口令/账号安全:口令信息保存在passwd和shadow文件中, 目录是/etc
- UNIX/Linux可信主机文件安全:为了便于主机之间的互操作,系统提供两个文件$HOME/.rhost或/etc/hosts.equiv来配置实现可信主机的添加
- UNIX/Linux应用软件漏洞:隐患有常用的应用软件包,这些安全隐患常常导致系统被非授权访问、非法滥用等
- UNIX/Linux的SUID文件安全:在UNIX/Linux中,SUID文件是指被设置成可以带有文件拥有者的身份和权限被执行的可执行文件
- UNIX/Linux的恶意代码:计算机病毒危害
- UNIX/Linux文件系统安全:文件系统是UNIX/Linux系统安全的核心,在UNIX/Linux中,所有的资源都被看作文件。UNIX/Linux文件安全是通过“9 bit"值控制的,每个文件有三组权限
- 一组是文件的拥有者
- 一组是文件所属组的成员
- 一组是其他所有用户
- 文件的权限有: r (读)、w (写)、x(执行)
- UNIX/Linux网络服务安全:如通过 finger 服务可以获取远程 UNIX/Linux 主机的信息
- UNIX/Linux系统程序漏洞:入侵者一般通过普通账号进入UNIX/Linux系统,然后再利用系统的程序漏洞提升权限
1.4 UNIX/Linux系统安全增强方法和流程
1. UNIX/Linux系统安全增强方法
同Windows系统的安全增强一样
目前,常见的UNIX/Linux系统的安全增强方法有
- 给安全漏洞打补丁
- 停止不必要的服务
- 升级或更换软件包
- 修改系统配置
- 安装专用的安全工具软件
2. UNIX/Linux系统安全增强基本流程
同Windows系统安全增强类似,其安全增强基本流程如图所示
1.5 UNIX/Linux 系统安全增强技术
1.安装系统补丁软件包
及时从应急响应安全站点获取UNIX/Linux系统漏洞公布信息,并根据漏洞危害情况,给系统安装补丁包
同时,在安装操作系统补丁前,必须确认补丁软件包的数字签名,检查其完整性,保证补丁软件包是可信的,以防止特洛伊木马或恶意代码攻击
在Linux中,可以用MD5Sum检查工具来判断补丁软件包的完整性
2.最小化系统网络服务
是指在满足业务的前提条件下,尽量关闭不需要的服务和网络端口,以减少系统潜在的安全危害
实现UNIX/Linux网络服务的最小化,具体安全要求如下:
- inetd.conf 的文件权限设置为600
- inetd.conf 的文件属主为root
- services 的文件权限设置为644
- services 的文件属主为root
- 在inetd.conf 中,注销不必要的服务,比如 finger、echo、chargen、rsh、rlogin、tftp 服务
- 只开放与系统业务运行有关的网络通信端口
3.设置系统开机保护口令
在UNIX/Linux系统中,用户可以通过特殊的组合键而无须提供用户名和口令,就能以单用户身份进入系统
因此,针对这种威胁
- 一方面要尽量避免入侵者物理临近系统
- 另一方面要设置系统开机保护口令,阻止入侵者开机,从而达到保护系统的目的
开机保护口令由BIOS程序设置实现,这样当系统启动时,BlOS程序将提示用户输入密码
4.弱口令检查
系统管理员通过口令破解工具来检查系统中的弱口令,常用的口令检查工具是John the Ripper
5.禁用默认账号
一些 UNIX/Linux 系统带有默认账号,这些默认账号的口令又是为大多数人所知的,极可能成为攻击者进入系统的后门,对这些默认账号最好的安全处理方式是禁用或更改口令
6.用SSH增强网络服务安全
目前,针对TeInet、FTP的安全,一般采用SSH(Secure Shell)来增强
SSH:提供认证、加密等安全服务,可以在两台或多台主机之间构造一条加密通道,保证通信安全
7.利用tcp_wrapper增强访问控制
tcp_wrapper是Wietse Venema 开发的一个可用于各种 UNIX 平台的免费软件
通过tcp_ wrapper,管理员可以设置对inetd提供的各种服务进行监控和过滤
8.构筑UNIX/Linux主机防火墙
目前,支持UNIX/Linux系统的防火墙软件包有ipchains、iptables以及netfilter
利用这些防火墙软件包,UNIX/Linux 系统可以过滤掉不需要的通信,而且可以从网络上限制远程访问主机,从而减少系统受到的侵害
9.使用Tripwire或MD5Sum完整性检测工具
当建立新的UNIX/Linux系统后,应记录所有系统文件的硬件和软件信息,并形成一个系统文件基准信息库,以便日后检查系统文件的完整性变化,避免恶意程序的植入和修改
利用Tripwire或MD5Sum软件安全工具可以发现被篡改的文件
- Tripwire:是最为常用的开放源码的完整性检查工具,它能生成目标文件的完整性标签,并周期性地检查文件是否被更改
- MD5Sum:是文件完整性检查的有力工具,利用它可以方便地创建长度为128位的文件指纹信息,也可以利用它检查文件是否被修改过
10.检测LKM后门
针对LKM后门危害,除了利用完整性检查工具外,还可利用专用安全检查工具,例如Kstat、Chkrootkit、Rootkit Hunter
11.系统安全监测
UNIX/Linux系统的安全是动态的,对运行的系统进行实时监控有利于及时发现安全问题,做出安全应急响应
针对UNIX/Linux 系统的安全监测,常用的安全工具有Netstat、Isof、Snort等
1.6 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权限执行某个程序,因此应严格控制系统中的此类程序
3.为LILO增加开机口令
在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性
由于在LILO中口令是以明码方式存放的,所以还需要将lilo.conf的文件属性设置为只有root可以读写:# chmod 600 /etc/lilo.conf
4.设置口令最小长度和最短使用时间
口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度至少为8
- 为此,需修改文件/etc/login.defs中的参数PASS_MIN_LEN
- 同时应限制口令的使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS
5.限制远程访问
在Linux中可通过/etc/hosts.allow和/etc/hosts.deny这两个文件允许和禁止远程主机对本地服务的访问
1.编辑hosts.deny文件,加入下列行:
ALL:ALL@ALL
则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许
2.编辑hosts.allow文件,可加入下列行:
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/.bash_history文件,增加相同的一行即可
1.7 UNIX/Linux安全模块应用参考
Linux安全模块(LSM)为Linux内核提供了一个轻量级的、通用目的的访问控制框架,使得很多不同的访问控制模型可以作为可加载模块来实现
LSM采用了在内核源代码中放置钩子的方法,对内核内部对象的访问讲行控制。当用户级进程执行系统调用时,首先查找索引节点,进行错误检查和自主访问控制(DAC),在对索引节点进行访问之前,LSM钩子调用LSM安全模块策略引擎进行安全策略检查,给出是否通过判断
LSM 安全工作过程
通过LSM,相关安全组织可以根据安全需要开发特定的安全模块,挂接到Linux操作系统
目前,采取这种方式来增强Linux安全的主要有
1. 插件式身份验证模块框架(PAM)
通过“插件”增加UNIX/Linux新的身份验证服务,而无须更改原有的系统登录服务,例如
Login、FTP和Telnet
同时,可以使用PAM将UNIX/Linux登录与其他安全机制(例如Kerberos) 集成在一起
2. SELinux
是Security Enhanced Linux 的缩写,采用Flask体系增强Linux访问控制
SELinux安全体系组成
- 策略:封装在安全服务器中
- 实施:由对象管理器具体执行
SELinux的安全服务器采取混合的安全策略,主要包括类型实施、基于角色的访问控制和可选的多级别安全性
SELinux通过设置标记和安全策略规则实施Linux系统的强制访问控制。其中,SELinux系统定义用户对应相应角色,每个主体都有一个域(domain),每个客体都有一个类型(type)
1.8 UNIX/Linux系统典型安全工具与参考规范
UNIX/Linux系统常应用于服务器,常见的典型安全工具如下:
- 远程安全登录管理开源工具OpenSSH
- 系统身份认证增强开源工具Kerberos
- 系统访问控制增强开源工具SELinux、iptables、TCP Wrappers等
- 恶意代码查杀工具ClamAV、Chkrootkit、Rootkit Hunter等
- 系统安全检查工具Nmap、John the Ripper、OpenVAS等系统安全监测工具Isof、Netstat、Snort等
UNIX/Linux安全基准线参考标准规范有CIS (Center for Intemet Security)、SANS等
二、国产操作系统安全分析与防护
2.1 国产操作系统概况
国产操作系统:一般是指由国家自主研发力量研制的操作系统,具有较强的可控性和安全性。国产操作系统厂商在开源操作系统Linux等的基础上,经过长期研发,能够对开源操作系统进行深度分析以及安全增强,具有安全漏洞挖掘分析和修补能力
目前,国内初步形成了操作系统系列产品,包括桌面操作系统、通用操作系统、高级操作系统、安全操作系统、增强安全操作系统以及面向移动设备操作系统
操作系统厂商:中科方德、中标麒麟、北京凝思科技、普华、深度 Linux 等为代表
新型的国产操作系统:华为鸿蒙操作系统、阿里飞天云操作系统
2.2 国产操作系统安全分析
国产操作系统基于开源软件Linux进行研制开发,其安全性与Linux紧密相关。同时,由于国产操作系统配套的相关软件包或硬件不可避免地存在安全隐患,这也对国产化操作系统构成了安全威胁
国产操作系统面临的安全风险如下
- Linux内核的安全风险:内核漏洞类型主要有输入验证错误、缓冲区溢出错误、边界条件错误、访问验证错误、异常条件处理错误、环境错误、配置错误、条件竞争错误、设计错误等
- 自主研发系统组件的安全:因为软件的复杂性,国产操作系统自主研发系统组件可能存在安全漏洞,导致操作系统面临安全风险
- 依赖第三方系统组件的安全:国产操作系统所依赖的第三方系统组件存在安全漏洞,引发操作系统安全风险问题
- 系统安全配置的安全:对国产操作系统的安全配置不当,构成系统安全威胁。常见的安全配置不当包括未启用系统安全功能、设置弱口令、开放过多的服务端口、使用非安全远程登录工具等
- 硬件的安全:国产操作系统受制于硬件而产生的安全问题
2.3 国产操作系统安全增强措施
国产操作系统在自主可控、安全可信方面,对开源操作系统Linux进行安全增强,从多个方面对Linux操作系统提供安全保障,包括管理员分权、最小特权、结合角色的基于类型的访问控制、细粒度的自主访问控制、多级安全(即禁止上读下写)等多项安全功能,从内核到应用提供全方位的安全保护
典型的安全操作系统分析实例
1.中科方德方舟安全操作系统
以安全性为主要特征,通过了公安部信息安全产品检测中心的检测,满足第四级结构化保护级的要求,其安全特点主要如下
- 基于三权分立的管理机制:将普通操作系统中超级管理员的权限分配给系统管理员、安全管理员、审计管理员,形成相互制约关系,防止管理员的恶意或偶然操作引起系统安全问题
- 强化的身份标识与认证机制:为系统中的所有用户提供身份标识和认证机制,用户的身份标识在系统的整个生命周期内可以唯一地标识用户的身份,采用强化的口令管理及基于数字证书认证机制,实现对用户身份的真实性鉴别
- 综合应用多种安全策略,提高系统的安全性:系统通过数据所有者自身定义的访问控制策略与主客体集中控制和授权机制相结合的方式,实现“最小特权”,防止数据访问范围扩大,保证系统数据的机密性和完整性,从而有效提供系统的安全性
- 基于内核层的安全审计:用户所有的操作和各种应用程序(包括恶意的)的操作,都一定要通过操作系统的内核才能作用,因此,在系统内核层进行的审计,是不可能被绕过的
- 支持各类通用软件,具有良好的软硬件兼容性:与国内外主流中间件厂商、数据库厂商、服务器整机厂商进行测试适配与兼容性互认证,保证良好的软硬件兼容性
2.中标麒麟安全操作系统
基于LSM机制的SELinux安全子系统框架,提供三权分立机制权限集管理功能和统一的安全管理中心SMC,支持安全管理模式切换,针对特定应用的安全策略定制
- 提供核心数据加密存储、双因子认证、高强度访问控制、进程级最小权限、网络安全防护、细粒度的安全审计、安全删除、可信路径、TCM支持等多项安全功能
- 提供可持续性的安全保障,兼容主流的软硬件
- 为用户提供全方位的操作系统和应用安全保护,防止关键数据被篡改、被窃取,系统免受攻击,保障关键应用安全、可控和稳定地对外提供服务
3.中标麒麟可信操作系统
结合可信计算技术和操作系统安全技术,通过信任链的建立及传递实现对平台软硬件的完整性度量
主要功能如下:
- 提供基于三权分立机制的多项安全功能(身份鉴别、访问控制、数据保护、安全标记、可信路径、安全审计等)和统一的安全控制中心
- 支持国内外可信计算规范(TCM/TPCM、TPM2.0)
- 支持国家密码管理部门发布的SM2、SM3、SM4等国密算法,兼容主流的软硬件和自主CPU平台
- 提供可持续性的安全保障,防止软硬件被篡改和信息被窃取,系统免受攻击