网络系统安全性设计原则有哪些

发布网友

我来回答

2个回答

热心网友

根据防范安全攻击的安全需求、需要达到的安全目标、对应安全机制所需的安全服务等因素,参照SSE-CMM("系统安全工程能力成熟模型")和ISO17799(信息安全管理标准)等国际标准,综合考虑可实施性、可管理性、可扩展性、综合完备性、系统均衡性等方面,网络安全防范体系在整体设计过程中应遵循以下9项原则:

1.网络信息安全的木桶原则

网络信息安全的木桶原则是指对信息均衡、全面的进行保护。“木桶的最大容积取决于最短的一块木板”。网络信息系统是一个复杂的计算机系统,它本身在物理上、操作上和管理上的种种漏洞构成了系统的安全脆弱性,尤其是多用户网络系统自身的复杂性、资源共享性使单纯的技术保护防不胜防。攻击者使用的“最易渗透原则”,必然在系统中最薄弱的地方进行攻击。因此,充分、全面、完整地对系统的安全漏洞和安全威胁进行分析,评估和检测(包括模拟攻击)是设计信息安全系统的必要前提条件。安全机制和安全服务设计的首要目的是防止最常用的攻击手段,根本目的是提高整个系统的"安全最低点"的安全性能。

2.网络信息安全的整体性原则

要求在网络发生被攻击、破坏事件的情况下,必须尽可能地快速恢复网络信息中心的服务,减少损失。因此,信息安全系统应该包括安全防护机制、安全检测机制和安全恢复机制。安全防护机制是根据具体系统存在的各种安全威胁采取的相应的防护措施,避免非法攻击的进行。安全检测机制是检测系统的运行情况,及时发现和制止对系统进行的各种攻击。安全恢复机制是在安全防护机制失效的情况下,进行应急处理和尽量、及时地恢复信息,减少供给的破坏程度。

3.安全性评价与平衡原则

对任何网络,绝对安全难以达到,也不一定是必要的,所以需要建立合理的实用安全性与用户需求评价与平衡体系。安全体系设计要正确处理需求、风险与代价的关系,做到安全性与可用性相容,做到组织上可执行。评价信息是否安全,没有绝对的评判标准和衡量指标,只能决定于系统的用户需求和具体的应用环境,具体取决于系统的规模和范围,系统的性质和信息的重要程度。

4.标准化与一致性原则

系统是一个庞大的系统工程,其安全体系的设计必须遵循一系列的标准,这样才能确保各个分系统的一致性,使整个系统安全地互联互通、信息共享。

5.技术与管理相结合原则

安全体系是一个复杂的系统工程,涉及人、技术、操作等要素,单靠技术或单靠管理都不可能实现。因此,必须将各种安全技术与运行管理机制、人员思想教育与技术培训、安全规章制度建设相结合。

6.统筹规划,分步实施原则

由于*规定、服务需求的不明朗,环境、条件、时间的变化,攻击手段的进步,安全防护不可能一步到位,可在一个比较全面的安全规划下,根据网络的实际需要,先建立基本的安全体系,保证基本的、必须的安全性。随着今后随着网络规模的扩大及应用的增加,网络应用和复杂程度的变化,网络脆弱性也会不断增加,调整或增强安全防护力度,保证整个网络最根本的安全需求。

7.等级性原则

等级性原则是指安全层次和安全级别。良好的信息安全系统必然是分为不同等级的,包括对信息保密程度分级,对用户操作权限分级,对网络安全程度分级(安全子网和安全区域),对系统实现结构的分级(应用层、网络层、链路层等),从而针对不同级别的安全对象,提供全面、可选的安全算法和安全*,以满足网络中不同层次的各种实际需求。

8.动态发展原则

要根据网络安全的变化不断调整安全措施,适应新的网络环境,满足新的网络安全需求。

9.易操作性原则

首先,安全措施需要人为去完成,如果措施过于复杂,对人的要求过高,本身就降低了安全性。其次,措施的采用不能影响系统的正常运行。

热心网友

付费内容限时免费查看回答原则1:最小化攻击面:

系统每增加一个功能特性就有可能会引入新的风险,通过安全开发可以减少攻击面进而达到控制系统整体风险的目的。

打个比方说,某在线web应用向用户提供了一个通过搜索来获取帮助的功能,如果后端代码没有正确实现该功能就有可能导致存在SQL注入漏洞,但是即便如此,我们还是有办法降低或消除风险的,比如:

u 该帮助功能只能被授权的用户使用。

u 后端代码对用户输入的数据进行了校验。

u 帮助功能不支持搜索,只支持查看。

可以看到,以上的第一、二点收缩了攻击面,即增加了攻击条件,减少了可以攻击的人数,而第三点则完全避免了风险,即攻击面完全消除了。其中第三点符合“简化系统设计”的原则,即不增加不必要的功能模块和特性。

另外一个典型的例子是:统一登录认证,所有业务都在认证中心登录,避免反复登录,这样的可以防止同样的安全问题在不同的业务上发生,相当于将攻击从面收缩到一个点上,我们只要把这个点做得足够安全即可。

原则2:Secure default:

在软件领域的含义就是:让默认的配置和策略尽可能的安全。比如,在许多场合,安全和产品体验经常会发生冲突,这时候应当选择安全优先,在安全的前提下,可以允许通过手动关闭安全配置或策略来提升产品体验。

比如,产品应该默认打开密码复杂度策略,即不允许用户使用不符合密码复杂度策略的密码,但产品可能可以允许用户关闭这个策略来提升体验。

注:只有充分了解业务安全需求的前提下,才能更好的使用该原则。

原则3:权限最小化:

事物只拥有可以完成他们任务的最小权限,即不赋予不必要的权限。包括但不限于:用户权限和资源权限(比如可以使用的CPU、内存、网络流量和存储容量等等)。

比如,某中间件服务器只需要访问网络、读取数据库和向日志服务器写日志的权限,那就完全没有必要赋予其更多其它的权限(特别是管理级别的特权)。

再比如,在以下PHP样例中,该业务只需要查询的权限,但却使用了root账户进行连接,如果该业务遭受SQL注入攻击,就会造成很大的影响。

<?php

$host = 'localhost';

$userID = 'root';

$password = 'password';

$db = mysql_connect($host, $userID, $password) or die ('Error connecting to mysql');

$name = 'testdatabase';

mysql_select_db($name);

$sql="SELECT * FROM theTable";

$result=mysql_query($sql);

?>

原则4:纵深防御:

从不同的维度去实施安全保护措施来缓解被攻击的风险。实施纵深防御策略,可以让攻击变得更加难以实施,漏洞变得更加难以利用。

比如,为了防止或减少SQL注入带来的危害,我们可以:

u 在应用外围部署WAF。

u 应用对输入数据进行有效性验证或进行参数化查询。

u 数据库连接账户隔离以及权限最小化。

u 敏感数据加密存储。

u 对数据库进行安全配置或关闭不必要的强大功能。

但是,该原则和原则9—“简化系统设计”在一定程度上是相违背的,即当纵深防御机制设计得过于复杂时,同时也增加了系统的复杂性,导致为了解决某些安全问题而引入了其它的安全问题。比如:设计登录认证时,要求用户必须设置过于复杂的口令,由于用户无法难以记住,可能会将其写在纸条贴在桌面上。

因此,本原则也必须结合业务和实际情况进行分析,综合平衡两者矛盾。

原则5:Fail securely:

即业务系统能够正确安全地处理各种异常和错误。错误样例代码如下:

isAdmin = true;

try {

codeWhichMayFail();

isAdmin = isUserInRole( “Administrator” );

}

catch (Exception ex) {

log.write(ex.toString());

}

当异常发生时,异常处理代码处理不当,可以导致普通用户直接提升为管理员用户。

原则6:不要信任第三方系统

不少产品需要和第三方的业务系统对接,并使用其提供的数据,但是一般情况下,我们是无法掌控这些第三方系统的安全设计和开发过程的,所以它们也可能会存在安全漏洞,进而被人攻击,因此,我们必须充分考虑到当第三方系统被攻击时,如何保障自己的业务系统的安全性。

比如:当我们向第三方系统查询数据时,必须对数据进行有效性验证后才可以使用(比如使用这些数据进行数据库查询或显示到用户浏览器上)。

原则7:业务隔离:

基本思想是将业务系统尽分成尽可能多的单元,但某个单元出现安全缺陷时,可以将损害程度降到最低,通俗地说,就是不要把所有鸡蛋都放在一个篮子里。

比如:将具有

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com