##第四章 系统安全
###4.1 系统安全概述
####4.1.1 系统安全的演变
科学技术#
本世纪50年代以后,科学技术进步的一个显著特征是设备、工艺及产品越来越复杂。战略武器研制、宇宙开发及核电站建设等使得作为现代科学技术标志的大规模复杂系统相继问世。
理论和方法#
这些复杂的系统往往由数以千万计的元素组成,元素之间的非常复杂的关系相连接,在被研究制造或使用过程中往往涉及到高能量,系统中微小的差错就会导致灾难性的事故。大规模复杂系统安全性问题受到了人们的关注,于是,出现了系统安全理论和方法。
安全的观点#
按照系统安全的观点,世界上不存在绝对安全的事物,任何人类活动中都潜伏着危险因素。能够造成事故的潜在危险因素称做危险源,它们是一些物的故障、人的失误、不良的环境因素等。某种危险源造成人员伤害或物质损失的可能性称做危险性,它可以用危险度来度量。
####4.1.2 系统与系统安全#
系统一词创成于英文system的音译,对应外文内涵加以丰富。系统是指将零散的东西进行有序的整理、编排形成的具有整体性的整体。
在数字信号处理的理论中,人们把能加工、变换数字信号的实体称作系统。由于处理数字信号的系统是在指定的时刻或时序对信号进行加工运算,所以这种系统被看作是离散时间的,也可以用基于时间的语言、表格、公式、波形等四种方法来描述。
从抽象的意义来说,系统和信号都可以看作是序列。但是,系统是加工信号的机构,这点与信号是不同的。人们研究系统还要设计系统,利用系统加工信号、服务人类,系统还需要其它方法进一步描述。描述系统的方法还有符号、单位脉冲响应、差分方程和图形。
中国学者钱学森认为:系统是由相互作用相互依赖的若干组成部分结合而成的,具有特定功能的有机整体,而且这个有机整体又是它从属的更大系统的组成部分。
系统安全是指在系统生命周期内应用系统安全工程和系统安全管理方法,辨识系统中的隐患,并采取有效的控制措施使其危险性最小,从而使系统在规定的性能、时间和成本范围内达到最佳的安全程度。系统安全是人们为解决复杂系统的安全性问题而开发、研究出来的安全理论、方法体系,是系统工程与安全工程结合的完美体现。系统安全的基本原则就是在一个新系统的构思阶段就必须考虑其安全性的问题,制定并执行安全工作规划(系统安全活动),属于事前分析和预先的防护,与传统的事后分析并积累事故经验的思路截然不同。系统安全活动贯穿于生命整个系统生命周期,直到系统报废为止。
####4.1.3 整体论与还原论
整体论:将系统打碎成为它的组成部分的做法是受限制的,对于高度复杂的系统,这种做法就行不通,因此我们应该以整体的系统论观点来考察事物。比如考察一台复杂的机器,还原论者可能会立即拿起螺丝刀和扳手将机器拆散成几千、几万个零部件,并分别进行考察,这显然耗时费力,效果还不一定很理想。整体论者不这么干,他们采取比较简单一些的办法,不拆散机器,而是试图启动运行这台机器,输入一些指令性的操作,观察机器的反应,从而建立起输入──输出之间的联系,这样就能了解整台机器的功能。整体论基本上是功能主义者,他们试图了解的主要是系统的整体功能,但对系统如何实现这些功能并不过分操心。这样做可以将问题简化,但当然也有可能会丢失一些比较重要的信息。
对量子悖论的解决,人们就经常寄希望于所谓混沌理论,以为建立在整体论基础之上的所谓混沌理论能够解决物理学上的时间可逆性难题和决定论难题。我认为这样的想法是没有多少前途的。
混沌理论认为,演化与所谓"动力学混沌"有关,混沌系统的动力不稳定性是导致非平衡态向平衡态趋近的根本原因。由于动力学混沌的存在,复杂系统对初始条件极端敏感,初始条件的极其微小的不确定,哪怕只是"忽略与宇宙边缘的一个电子"的引力作用,都会导致系统随时间的变化迥然不同。这意味着:除非我们能够以无限精度知道初始条件,否则系统的演化就是不可预言的,因此,决定论是行不通的。
还原论:是一种把复杂的系统(或者现象、过程)层层分解为其组成部分的过程。还原论认为,复杂系统可以通过它各个组成部分的行为及其相互作用来加以解释。还原论方法是迄今为止自然科学研究的最基本的方法,人们习惯于以"静止的、孤立的"观点考察组成系统诸要素的行为和性质,然后将这些性质"组装"起来形成对整个系统的描述。例如,为了考察生命,我们首先考察神经系统、消化系统、免疫系统等各个部分的功能和作用,在考察这些系统的时候我们又要了解组成它们的各个器官,要了解器官又必须考察组织,直到最后是对细胞、蛋白质、遗传物质、分子、原子等的考察。现代科学的高度发达表明,还原论是比较合理的研究方法,寻找并研究物质的最基本构件的做法当然是有价值的。
关系:
还原论与整体论之争由来已久,并且激发了脑研究和人工智能领域内的大争论。还原论方法将大脑还原为神经元,然后设法将神经元组装成大脑。人工智能的一个学派认为,通过创造元数字电路,我们能够建造越来越复杂的电路,直到我们创造人工智能。这个学派沿着现代电子计算机这条思路,对"智能"的模仿取得了初步的成功,但深入下去就比较令人失望,因为它甚至连模仿大脑的最简单功能,比如模糊记忆,都无法做到。面对人工智能研究的窘境,一些科学家从研究方法上进行反思,认为还原论方法在人工智能的研究方面没有前途,应设法采取一种更加整体的方法对待大脑,不必纠缠于人脑运作中的一些细小环节,应该建立起把大脑视为整体的模型,将大脑的一些基本功能从一开始就建造在这个模型系统里。神经网络理论基本上就是基于这样一种方法而建立起来的理论模型,这是一种功能主义的整体研究方式。这种方式看来也是困难重重,不过它才刚刚起步,其未来的前途如何尚未可知。
我的观点是,还原论与整体论作为两种不同的研究方法,它们本身无所谓优劣之分,我们具体选择哪种方法,这完全视乎具体情形,并取决于我们个人的喜好。在某种情形下我们采取还原的方法,在另外的情形下我们可能会采取整体论的方法,这都是可以的。但是,在大多数情况下,人们倾向于采用还原论方法,这比较可靠,也比较能够满足我们寻根究底的好奇心,所以只要有可能,人们总是乐于使用它。
####4.1.4 系统安全思维
(1)在事故致因理论方面,改变了人们只注重操作人员的不安全行为而忽略硬件的故障在事故致因中作用的传统观念,开始考虑如何通过改善物的系统的可靠性来提高复杂系统的安全性,从而避免事故。
(2)没有任何一种事物是绝对安全的,任何事物中都潜伏着危险因素。通常所说的安全或危险只不过是一种主观的判断。能够造成事故的潜在危险因素称作危险源,来自某种危险源的造成人员伤害或物质损失的可能性叫做危险。危险源是一些可能出问题的事物或环境因素,而危险表征潜在的危险源造成伤害或损失的机会,可以用概率来衡量。
(3)不可能根除一切危险源和危险,可以减少来自现有危险源的危险性,应减少总的危险性而不是只消除几种选定的危险。
(4)由于人的认识能力有限,有时不能完全认识危险源和危险,即使认识了现有的危险源,随着生产技术的发展,新技术、新工艺、新材料和新能源的出现,又会产生新的危险源。由于受技术、资金、劳动力等因素的限制,对于认识了的危险源也不可能完全根除。由于不能全部根除危险源,只能把危险降低到可接受的程度,即可接受的危险。安全工作的目标就是控制危险源,努力把事故发生概率降到最低,万一发生事故,把伤害和损失控制在较轻的程度上。
###4.2 系统安全原理
####4.2.1 基本原则
①最小特权原则: 系统中执行任务的实体(程序或用户)应该只拥有完成该项任务所需特权的最小集合;如果只要拥有n项特权就足以完成所承担的任务,就不应该拥有n+1项或更多的特权。
②失败-保险默认原则:安全机制对访问请求的决定应采取默认拒绝方案,不要采取默认允许方案;也就是说,只要没有明确的授权信息,就不允许访问,而不是,只要没有明确的否定信息,就允许访问。
③完全仲裁原则:安全机制实施的授权检查必须能够覆盖系统中的任何一.个访问操作,避免出现能逃过检查的访问操作。该原则强调访问控制的系统全局观,它除了涉及常规的控制操作之外,还涉及初始化、恢复、关停和维护等操作,它的全面落实是安全机制发挥作用的基础。
④特权分离原则(Separation of Privilege): 对资源访问请求进行授权或执行其他安全相关行动,不要仅凭单一条件做决定,应该增加分离的条件因素;例如,为一把锁设两套不同的钥匙,分开由两人保管,必须两人同时拿出钥匙才可以开锁。
⑤信任最小化原则:系统应该建立在尽量少的信任假设的基础上,减少对不明对象的信任;对于与安全相关的所有行为,其涉及的所有输人和产生的结果,都应该进行检查,而不是假设它们是可信任的。
简单性原则包括机制经济性原则、公共机制最小化原则和最小惊讶原则。
①机制经济性原则:应该把安全机制设计得尽可能简单和短小,因为,任何系统设计与实现都不可能保证完全没有缺陷;为了排查此类缺陷,检测安全漏洞,很有必要对系统代码进行检查;简单、短小的机制比较容易处理,复杂、庞大的机制比较难处理。
②公共机制最小化原则 :如果系统中存在可以由两个以上的用户共用的机制,应该把它们的数量减到最少;每个可共用的机制,特别是涉及共享变量的机制,都代表着一-条信息传递的潜在通道,设计这样的机制要格外小心,以防它们在不经意间破坏系统的安全性,例如信息露。
③最小惊讶原则(Least Astonishment):系统的安全特性和安全机制的设计应该尽可能符合逻辑并简单,与用户的经验、预期和想象相吻合,尽可能少给用户带来意外或惊讶,目的是提升它们传递给用户的易接受程度,以便用户会自觉自愿、习以为常地接受和正确使用它们,并且在使用中少出差错。
方法性原则包括公开设计原则、层次化原则、抽象化原则、模块化原则、完全关联原则和设计迭代原则。
①公开设计原则:不要把系统安全性的希望寄托在保守安全机制设计秘密的基础之上,应该在公开安全机制设计方案的前提下,借助容易保护的特定元素,如密钥、口令或其他特征信息等,增强系统的安全性;公开设计思想有助于使安全机制接受广泛的审查,进而提高安全机制的鲁棒性。
②层次化原则:应该采用分层的方法设计和实现系统,以便某层的模块只与其紧邻的上层和下层模块进行交互,这样,可以通过自顶向下或自底向上的技术对系统进行测试,每次可以只测试一层。
③抽象化原则:在分层的基础上,屏蔽每一层的内部细节,只公布该层的对外接口,这样,每一层内部执行任务的具体方法可以灵活确定,在必要的时候,可以自由地对这些方法进行变更,而不会对其他层次的系统组件产生影响。
④模块化原则:把系统设计成相互协作的组件的集合,用模块实现组件,用相互协作的模块的集合实现系统;每个模块的接口就是一种抽象。
⑤完全关联原则: 把系统的安全设计与实现与该系统的安全规格说明紧密联系起来。
⑥设计迭代原则:对设计进行规划的时候,要考虑到必要时可以改变设计;因系统的规格说明与系统的使用环境不匹配而需要改变设计时,要使这种改变对安全性的影响降到最低。
####4.2.2威胁建模
定义:利用抽象来帮助思考风险
威胁建模是通过识别目标和漏洞来优化系统安全,然后定义防范或减轻系统威胁的对策的过程。
威胁建模是分析应用程序安全性的一种方法。这是一种结构化的方法,使您能够识别,量化和解决与应用程序相关的安全风险。威胁建模不是代码审查方法,但却是对安全代码审查过程的补充。在 SDLC 中包含威胁建模可以帮助确保从一开始就以内置的安全性开发应用程序。这与作为威胁建模过程一部分的文档相结合,可以使审阅者更好地理解系统。这使得审阅者可以看到应用程序的入口点以及每个入口点的相关威胁。威胁建模的概念并不新鲜,但近年来有了明显的思维转变。现代威胁建模从潜在的攻击者的角度来看待系统,而不是防御者的观点。微软在过去的几年里一直是这个过程的强有力的倡导者。他们已经将威胁建模作为其SDLC的核心组件,他们声称这是近年来产品安全性提高的原因之一。
当在SDLC之外执行源代码分析时(例如在现有的应用程序上),威胁建模的结果通过推广深度优先方法与宽度优先方法来帮助降低源代码分析的复杂性。您可以不用同等重点地审查所有源代码,而是将安全代码评估放在优先级上,这些组件的威胁建模已经排在高风险威胁之下。
威胁建模可以在软件设计和在线运行时进行, 按照“需求-设计-开发-测试-部署-运行-结束”的软件开发生命周期,威胁建模在新系统/新功能开发的设计阶段,增加安全需求说明,通过威胁建模满足软件安全设计工作;如果系统已经在上线运行,可以通过威胁建模发现新的风险,作为渗透测试的辅助工作,尽可能的发现所有的漏洞。
方法
####4.2.3安全控制
在我们实际工作中为了防止被黑客攻击,我们往往使用普通用户的权限去安装程序。同时为了避免其他运维的恶意或无意的操作导致的系统问题。我们必须对用户的权限做出限制的同时尽量使用被限制的普通用户去完成日常工作。
PAM安全认证
Linux-PAM,是linux可插拔认证模块,是一套可定制、 可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。
PAM认证原理
PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_ *.so;
PAM认证首先要确定哪一项应用 服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/security/下)进行安全认证。
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。如果想查看某个程序是否支持PAM 认证,可以用ls命令进行查看/etc/pam.d/
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用
PAM的认证构成
每一行都是一个独立的认证过程
每一行可以分为三个字段
认证类型
控制类型
PAM模块及参数
PAM认证类型
认证管理
auth: 对用户身份进行识别,如提示输入密码,判断是否为root。
账户管理
account: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
密码管理
password: 使用用户信息来更新数据,如修改用户密码。
会话管理
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。
PAM控制类型
required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
optional: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
在我们的工作中我们需要尽量避免我们的系统被黑客攻击,这是十分现实的问题,我们需要尽量使用系统自有的功能去对用户的权限进行限制。保证即使我们的用户密码被黑客掌握,也不会导致严重后果,同时也必须保证我们root用户的安全。PAM就是这样一个模块,通过限制su命令避免用户密码被暴力破解。通过sudo提权可以给普通用户root命令的权限来保证日常任务的完成的同时避免root密码的泄露。
####4.2.4安全监测
1、渗透测试
互联网的发展在带给我们便利的同时,也引入了越来越多的安全风险。这些安全风险一方面来源于互联网“所见即所得”的开放特性,这导致攻击面远大于非互联网系统;另一方面来源于良莠不齐的开发人员,由于缺乏安全方面的意识,代码的质量也让人堪忧。渗透测试就是对系统的健康检测,能够发现潜在的安全风险,及早做出修复,减少攻击产生时带来的损失。
2、安全运维检测
随着信息系统运行,其自身存在的脆弱性和面临的威胁都在发生变化,安全运维就是在系统运行期间,不断的发现问题和解决问题,并优化安全策略,建立防护、检测和恢复的安全机制,保证业务系统持续安全。我们将通过安全运维排查的检测方式找到系统和网络中所暴露出的安全漏洞,并且评估目标系统和网络环境是否存在可以被攻击者真实利用的漏洞以及由此引起的风险大小,为制定相应的安全措施与解决方案提供实际的依据。
3、应急响应
随着国家信息化建设进程的加速,计算机信息系统和网络已经成为重要的基础设施,各种潜在的网络信息危险因素与日俱增,所面临的应用安全问题越来越复杂,安全威胁正在飞速增长。尤其是混合威胁的风险,如黑客攻击、蠕虫病毒、勒索病毒,完善的网络安全体系在保护体系之外必须建立相应的应急响应体系。
4、安全运维
在互联网高度普及的当下,通过网络提高企业生产效率无疑成为了企业所关注的重点。在这种大环境下,众多的企业资源资产以分布式或是集中式的形式以网络维护的方式被管理起来,如何科学有效运维这些资产是企业所面临的问题。而自“永恒之蓝”漏洞爆发的勒索病毒浪潮中,企业网络资产也成为了不法分子攻击的重点对象。
5、安全性评测
面向教育,医疗,金融等各类型客户,对其软件产品提供第三方质量测评服务。测试依据《GBT 25000.51-2016 系统与软件工程 系统与软件质量要求和评价》开展工作,同步参照软件产品质量要求与评价国家标准。安全测评将会从九个方面进行安全测评,依据CNAS标准,实施三个阶段:准备阶段,测试阶段和复测阶段,全方位保障系统的安全性。
####4.2.5安全管理
1 身份鉴别
1.1 应用系统采用专用的登录控制模块对登录用户进行身份标识和鉴别,具有用户身份唯一标识和鉴别信息复杂度检查功能,保证应用系统中不存在重复的用户身份标识,身份鉴别信息不易被冒用。
1.2登录失败采取结束会话方式,根据非法登录次数为4次,当网络登录连接超时自动退出等。
1.3系统应有“退出”功能,允许用户终止当前会话。
1.4系统应启用身份鉴别,用户身份唯一性检查、用户身份鉴别信息复杂度检查以及登录失败处理功能,并根据安全策略配置相关参数。
1.5用户身份鉴别信息中的密码信息,应符合以下要求:
1)每半年修改一次密码;
2)不包含全部或部分用户名(任意连续3个字符);
3)长度至少为8个字符;
4)至少包含有英文大写字母、小写字母、数字、特殊字符这四种类型字符中的3种字符。
5)有效期最长为6个月。
1.6应对同一个用户采用2种或2种以上组合鉴别技术实现用户身份鉴别。
2 访问控制
2.1应提供访问控制功能,依据安全策略控制用户对文件、数据库等客体的访问。
2.2访问控制的覆盖范围应包括与资源访问相关的主体、客体及他们之间的操作。
2.3应由授权主体配置访问控制策略,并严格限制默认账号的访问权限。
2.4应授予不同账号为完成各自承担任务所需的最小权限,并在他们之间形成相互制约的关系。
2.5应具有对重要信息资源设置敏感标记的功能。
2.6应依据安全策略严格控制用户对有敏感标记重要信息资源的操作。
3安全审计
应保存业务日志,保证业务操作不被抵赖,并通过日志安全分析操作行为,发现安全问题。安全日志审计应达到以下要求:
1)在服务器端日志记录客户端的IP地址、认证者身份、操作时间、操作类别和操作结果等信息;
2)在服务器端记录程序错误信息日志;
3)对日志信息的访问权限要做访问控制策略;
4)对重要日志进行专门的采集、备份、管理,定期对日志进行安全分析,生成审计报表。
4剩余信息保护
4.1应保护用户鉴别信息所在的存储空间被释放或在分配给其他用户前得到完全清除,无论这些信息是存放在硬盘还是内存上。包括但不限于应用系统内存中的剩余用户信息,FTP剩余用户信息,数据库剩余用户信息,均应该先清除或改写后在进行删除。
4.2应保证系统内的文件、目录、数据库记录等资源所在的存储空间被释放或重新分配给其他用户前得到完全清除,包括但不限于应用系统内产生的剩余文件资源、关联的FTP资源和数据库记录资源、均应该先清除或者改写后在进行安全删除,防止数据恢复工具对其进行恢复。
5通信完整性和保密性
5.1 主要通过VPN或者绑定IP地址来保证通信过程中数据的保密性。WEB程序对于重要数据及指令的传输应进行通信加密和校验。另外用户通过HTTPS访问应用系统,对传输的数据内容进行双向加密。
5.2对于应用系统数据的通信和传输,各系统均应采取如下的方式来确保通信的完整性:
发送端应使用MD5或级别更高的散列算法作为指纹,将数据加密,然后在接收端进行比对。
6抗抵赖性
6.1 对系统用户的每一次登录和其对系统重要模块的操作均记录日志,因此能够实现抗抵赖性。
6.2应具有在请求的情况下为数据原发者或接受者提供数据原发证据的功能。
6.3应具有在请求的情况下为数据原发者或接受者提供数据接收证据的功能。
7软件容错
7.1 对于系统用户错误性操作,系统需能给出提示或提供自动纠正功能,为校验数据输入的准确性,系统需采取代码校验,数据逻辑关系校验等方法。对于系统用户的非法操作,系统需具备自我保护能力,自动处理此类问题,让非法输入不能对系统运行造成任何影响。另外系统需具有对错误类型进行分类的能力,且需要根据不同的错误类型给予用户不同的错误提示信息。
7.2在故障发生时,系统能够继提供一部分功能,并实施必要的措施将故障影响降到最低。应提供自动保护功能,当故障发生时自动保护当前所有的状态,保证系统能够进行恢复。
8资源控制
8.1当系统通信双方中的一方在60s内未作出任何响应,另一方会自动结束会话。可以手工配置参数,对系统的最大并发连接数进行限制,并禁止单个账户的多重并发会话。
8.2限制系统多个最大并发会话数,对一个时间段内可能的并发会话连接数进行限制。
8.3应能够对一个访问账户或一个请求进程占用的资源分配最大限额和最小限额。
8.4应能够对系统服务水平降低到预先规定的最小值进行检测和报警。
8.5应提供服务优先级设定功能,并在安装后根据安全策略设定访问账户或请求进程的优先级,根据优先级分配系统资源。
###4.3系统安全结构
####4.3.1 硬件系统安全
网络空间是个计算环境,它主要由各式各样的计算机通过网络连接起来构成。这里所说的计算机并非只是常见的笔记本电脑、台式机、服务器、平板计算机、手机等,还有很多藏在嵌人式设备或物联网设备等之中不易被看到的东西,它们的关键特征是都有处理器。
计算机由硬件和软件组成,尽管有些软件因为固化在硬件上而被称为固件。计算机提供的丰富多彩的功能,不管是拍照,还是播放音乐,或是别的,都是通过计算实现的。硬件负责计算,软件负责发布计算命令。硬件是软件的载体,软件在硬件之上工作。
在系统安全的背景下观察硬件安全,主要是观察它能给软件提供什么样的安全支持,如何帮助软件实现想要实现的安全功能。同时,也观察它自身可能存在什么安全隐患,会给系统安全带来什么样的影响。
在硬件为软件提供的安全支持功能中,最平凡的一-项是用于保护操作系统的功能。之所以说平凡,是因为这项功能太常用了,以致很多人甚至想不起来能把它和安全挂上钩,那就是用户态/内核态功能。
处理器硬件定义了用户态和内核态两种状态,内核态给操作系统用,用户态给其他程序用,规定用户态的程序不能干扰内核态的程序。这样,在免受其他程序破坏的意义上,操作系统受到了硬件的保护。
以通俗的方式说得更具体一点,硬件把指令和内存地址空间都分成了两大部分,内核态程序可以看到所有的指令和地址空间,用户态程序只能看到其中一个部分的指令和地址空间。
用户态程序看不到的那部分指令称为特权指令,看不到的那部分地址空间称为内核地址空间。
·看不到的意思就是不能使用,就是说,用户态程序不能执行特权指令,不能访问内核地址空间。因为操作系统程序存放在内核地址空间,用户态程序不能往内核地址空间写东西,因此,就无法篡改或破坏操作系统程序.操作系统由此得到保护。
对于用户程序破坏操作系统程序这样的威胁模型,用户态/内核态策略是有效的。可是,实践证明,黑客有办法把恶意程序插到内核地址空间中,让它在内核态运行。这样一来,恶意程序就有了篡改操作系统程序的能力,情况变得糟糕很多。能篡改操作系统程序意味着篡改应用程序就更不在话下,换言之,所有程序都有被篡改的风险。
####4.3.2 操作系统安全
一、物理安全
服务器应当放置在安装了监视器的隔离房间内,并且监视器应当保留15天以内的录像记录。另外,机箱、键盘、抽屉等要上锁,以保证旁人即使在无人值守时也无法使用此计算机,钥匙要放在安全的地方。
二、停止Guest帐号
在[计算机管理]中将Guest帐号停止掉,任何时候不允许Guest帐号登录系统。为了保险起见,最好给Guest帐号加上一个复杂的密码,并且修改Guest帐号属性,设置拒绝远程访问。
三、限制用户数量
去掉所有的测试帐户、共享帐号和普通部门帐号,等等。用户组策略设置相应权限、并且经常检查系统的帐号,删除已经不适用的帐号。
很多帐号不利于管理员管理,而黑客在帐号多的系统中可利用的帐号也就更多,所以合理规划系统中的帐号分配。
四、多个管理员帐号
管理员不应该经常使用管理者帐号登录系统,这样有可能被一些能够察看Winlogon进程中密码的软件所窥探到,应该为自己建立普通帐号来进行日常工作。
同时,为了防止管理员帐号一旦被入侵者得到,管理员拥有备份的管理员帐号还可以有机会得到系统管理员权限,不过因此也带来了多个帐号的潜在安全问题。
五、管理员帐号改名
在Windows 2000系统中管理员Administrator帐号是不能被停用的,这意味着攻击者可以一再尝试猜测此帐户的密码。把管理员帐户改名可以有效防止这一点。
不要将名称改为类似Admin之类,而是尽量将其伪装为普通用户。
六、陷阱帐号
和第五点类似、在更改了管理员的名称后,可以建立一个Administrator的普通用户,将其权限设置为最低,并且加上一个10位以上的复杂密码,借此花费入侵者的大量时间,并且发现其入侵企图。
七、更改文件共享的默认权限
将共享文件的权限从"Everyone"更改为"授权用户","Everyone"意味着任何有权进入网络的用户都能够访问这些共享文件。
八、安全密码
安全密码的定义是:安全期内无法破解出来的密码就是安全密码,也就是说,就算获取到了密码文档,必须花费42天或者更长的时间才能破解出来(Windows安全策略默认42天更改一次密码,如果设置了的话)。
九、屏幕保护 / 屏幕锁定 密码
防止内部人员破坏服务器的一道屏障。在管理员离开时,自动加载。
十、使用NTFS分区
比起FAT文件系统,NTFS文件系统可以提供权限设置、加密等更多的安全功能。
十一、防病毒软件
Windows操作系统没有附带杀毒软件,一个好的杀毒软件不仅能够杀除一些病毒程序,还可以查杀大量的木马和黑客工具。设置了杀毒软件,黑客使用那些著名的木马程序就毫无用武之地了。同时一定要注意经常升级病毒库 !
十二、备份盘的安全
一旦系统资料被黑客破坏,备份盘将是恢复资料的唯一途径。备份完资料后,把备份盘放在安全的地方。不能把备份放置在当前服务器上,那样的话还不如不做备份。(二) Windows Server 2003的安全结构体系 Windows Server 2003是目前最为成熟的网络服务器平台,安全性相对于Windows 2000有很大的提高,本节就从Windows 2003的安全结构体系入手,带领大家学习Windows 2003的安全结构特性。
####4.3.3 数据库系统安全
数据库系统安全的概念
数据库安全(DataBase Security)是指采取各种安全措施对数据库及其相关文件和数据进行保护。数据库系统的重要指标之一是确保系统安全,以各种防范措施防止非授权使用数据库,主要通过DBMS实现的。数据库系统中一般采用用户标识和鉴别、存取控制、视图以及密码存储等技术进行安全控制。
数据库安全的核心和关键是其数据安全。数据安全是指以保护措施确保数据的完整性、保密性、可用性、可控性和可审查性。由于数据库存储着大量的重要信息和机密数据,而且在数据库系统中大量数据集中存放,供多用户共享,因此,必须加强对数据库访问的控制和数据安全防护。
数据库系统安全的内涵
从系统与数据的关系上, 也可将数据库安全分为数据库的系统安全和数据安全。
数据库系统安全主要利用在系统级控制数据库的存取和使用的机制,包含:
(1) 系统的安全设置及管理,包括法律法规、政策制度、实体安全等;
(2) 数据库的访问控制和权限管理;
(3) 用户的资源限制,包括访问、使用、存取、维护与管理等;
(4) 系统运行安全及用户可执行的系统操作;
(5) 数据库审计有效性;
(6) 用户对象可用的磁盘空间及数量。
数据安全是在对象级控制数据库的访问、存取、加密、使用、应急处理和审计等机制,包括用户可存取指定的模式对象及在对象上允许作具体操作类型等。
一般数据库系统安全涉及5个层次。
(1)用户层:侧重用户权限管理及身份认证等,防范非授权用户以各种方式对数据库及数据的非法访问;
(2)物理层:系统最外层最容易受到攻击和破坏,主要侧重保护计算机网络系统、网络链路及其网络节点的实体安全;
(3)网络层:所有网络数据库系统都允许通过网络进行远程访问,网络层安全性和物理层安全性一样极为重要;
(4)操作系统层:操作系统在数据库系统中,与DBMS交互并协助控制管理数据库。操作系统安全漏洞和隐患将成为对数据库进行非授权访问的手段;
(5)数据库系统层:数据库存储着重要程度和敏感程度不同的各种数据,并为拥有不同授权的用户所共享,数据库系统必须采取授权限制、访问控制、加密和审计等安全措施。
为了确保数据库安全,必须在所有层次上进行安全性保护措施。若较低层次上安全性存在缺陷,则严格的高层安全性措施也可能被绕过而出现安全问题。
####4.3.4 应用系统安全
应用系统安全管理的实施主要包括以下方面:建立应用系统的安全需求管理、严格应用系统的安全检测与验收、加强应用系统的操作安全控制、规范变更管理、防止信息泄露、严格访问控制、信息备份、应用系统的使用监视。
1. 系统运行安全的审查目标
系统运行安全的审查目标为:
保证应用系统运行交接过程均有详尽的安排。
精心计划以确保运行资源得到最有效的使用。
对运行日程的变更进行授权。
监控系统运行以确保其符合标准。
监控环境和设施的安全,为设备的正常运行保持适当的条件。
检查操作员日志以识别预定的和实际的活动之间的差异。
监控系统性能和资源情况,以实现计算机资源的最佳使用。
预测设备或应用系统的容量,以保证当前作业流量的最大化并为未来需求制定战略计划。
2. 系统运行安全检查与记录
系统运行的安全检查是安全管理的常用工作方法,也是预防事故、发现隐患、指导整改的必要工作手段。系统运行安全检查要形成制度,对促进系统运行管理、实现信息安全起到积极的推动和保障作用。对检查的内容、检查的方法、检查的计划安排、检查的结果应进行及时的记录、分析和评审。检查可采取普查、抽查、专项检查的方式定期或不定期的进行。
3. 系统运行安全管理制度
系统运行安全管理制度是确保系统按照预定目标运行并充分发挥其效益的一切必要条件、运行机制和保障措施
(1)系统运行的安全管理组织。安全管理组织的任务是根据本单位的实际情况定期做风险分析,提出相应的对策并监督实施。安全管理组织由单位主要领导人领导,不能隶属于计算机运行或应用部门。安全管理组织由管理、系统分析、软件、硬件、保卫、审计、人事、通信等有关方面人员组成。
(2)系统运行的安全管理。制定有关的政策、制度、程序或采用适当的硬件手段、软件程序和技术工具,保证信息系统不被未经授权进入和使用、修改、盗窃,造成损害的各种措施。
(3)系统运行的安全监督。应用系统的使用单位,通过建立应用系统安全保护领导组织或配备专兼职管理人员,落实安全保护责任制度,对管理人员和应用操作人员组织岗位培训;制定防治计算机病毒和其他有害数据的方案,必要时协助公安机关查处危害计算机信息系统安全的违法犯罪案件。
(4)系统运行的安全教育。根据应用系统所设计的业务范围,对管理层、系统管理员、操作人员等用户进行信息安全的教育培训。制定系统运行安全的培训管理程序和安全培训计划,程序规定培训的范围、启动、制定培训计划、培训计划的实施、培训效果的考核、评审和验证等。培训计划的内容包括培训对象、培训内容、日程安排、培训要求、考核方法等要素。
####4.3.5安全生态系统