数据库安全
关系数据库包括以下三个部分:数据结构—表、关系,完整性规则和操作符
--我的理解是,cissp中谈到的数据库是更加抽象意义上的database,不是实际操作上的(oracle, mysql,ms-sql)这些database系统应该是database的具体实现!
一般采用Schema来对数据库进行描述,schema采用Data Description Language (DDL)来描述。在数据库中,表的一行叫tuple,列叫Attribute,其中,每个表中的行数叫cardinality,列数叫Degree。每个表都有Primary Key。Primary Key是可以唯一代表一行的列名,其他也可以唯一标示(标识)一行的列叫candidate key。如果一个表中的列和另外的一个表中主键相同并且有关联,那么这个列就叫Foreign Key。主键和外键的匹配是非常重要的,因为他们建立了两个表数据之间的参考关系,这就是Referential Integrity。
数据库有以下操作:
✦ Select (primitive)
✦ Project (primitive)
✦ Union (primitive)
✦ Difference (primitive)
✦ Product (primitive)
✦ Join
✦ Intersection
✦ Divide
✦ Views
View是采用Join, Project和Select操作生成的虚拟表,可以看作是Least Privilege的一个实现,用来隐藏某些对用户不可见的数据。
数据库查询优化过程首先建立query plan,然后从中选择一个最好的。所谓Query Plan就是包含有一行一行的底层操作语句,最优的Query Plan就是CPU和硬盘访问使用最少的。为了防止信息的inferencing,采用最小查询集限制(minimum query set size)来实现,既不允许查询整个的表或者只查询其中的一个记录。
Bind绑定是SQL查询语句中用来存储查询返回值的一个占位符号。
Object-Oriented Databases (OODB)是近几年出现的非常适合存储多媒体信息的数据库系统。OODB提高了代码的重用性,减少了代码维护。
数据库中的数据一般都经过Normalization(范式)处理。Normalization就是
消除重复的组:把重复的组存储在另外的表中
删除重复的数据;
消除不依赖于主键的数据列
如果数据没有Normalization,一般都是出于效率的考虑。
Structural Query Language (SQL)
SQL是IBM开发的,用于与数据库进行交互的工具。SQL 语句包括Select, Update, Delete, Insert, Grant和Revoke.六种。SQL语句的安全性主要在于访问控制的粒度和同一个查询语句不同的执行方法。
入侵监测系统Intrusion Detective System(IDS)
入侵监测就是发现非法访问或者攻击网络或者资源行为的过程。主要是用来1.减少或者2.转移由于入侵而带来的破坏。IDS一般由sensors, analyzers, and administrator interfaces三部分组成,其中Sensors收集网络和用户行为信息,并发送到Analyzers;Analyzers分析这些信息,如果发现有可疑的行为,则发送到Administrator Interfaces通知管理员。IDS可以用来发现可疑行为并中止可疑行为的访问。IDS按照功能可以分为Network-Based和Host-Based两种,也可以按照IDS的实现方法分为Knowledge- or Signature-Based IDS和Statistical Anomaly–Based IDS和Rule-Based IDS三种。其中Statistical Anomaly–Based IDS又可以分为Protocol anomaly based和Traffic anomaly based两种。Rule-Based IDS又可以分为State-Based和Model-Based两种。
Network-Based IDS(NIDS)
这种类型的IDS一般由安装了必须的软件的计算机或者专有设备组成。安装了这些软件的设备或者计算机的网卡被置为混杂promiscuous模式。在这种模式下,网卡会把所有收到的信息上传给操作系统来处理,而不是丢弃那些目的地址不是自己的信息。
Host-Based IDS(HIDS)
这种类型的IDS一般安装在重要的服务器上,主要是用来发现对本计算机(自己)的攻击或者可疑行为。
Knowledge- or Signature-Based IDS
这是目前应用最广泛的一种IDS。他的特点是基于已经发现的攻击或者可疑行为的特征来进行入侵监测,因此可以非常准确地监测出攻击或者可疑行为,但却不能发现未知的可疑行为和攻击。他的有效性依赖于攻击特征的实时更新。
Statistical Anomaly–Based IDS
又叫behavioral-based IDS。首先系统被置为学习模式,以便收集正常情况下的系统使用情况。因此,这种系统的准确度依赖于学习时候建立起来的系统的base line或者profile。在使用时,凡是不符合base line的行为都会被认为是攻击,由于使用者的行为很难准确的预测,因此,会产生很多的漏报和误报。但这种类型的IDS的优点在于,它可以发现新的攻击。
Protocol anomaly based IDS
虽然通过操作系统或者应用程序的漏洞可以攻击系统,但大部分的攻击还是发现协议本身的弱点。因此就出现了Protocol anomaly based IDS。这种类型的IDS首先按照RFC和实际实现情况建立起每种协议的正常的使用特征,然后比较每种协议的使用情况。只要是不符合正常某个协议使用特征的行为九会被认为是攻击。
Traffic anomaly based
这种类型的IDS是通过网络流量的变化来发现攻击。
Rule-Based IDS
这种类型的IDS一般基于专家系统Expert System。专家系统由知识库、推理机组成。其中知识库是按照如果X,那么Y的方式构成。在使用中,Sensors收集来的信息经过推理机根据知识库进行推理,从而发现攻击行为。
State-Based IDS
每种攻击发生前,都会有一些前提条件发生,因此,这种类型的IDS是监测行为序列以决定是否发生了攻击行为。也就是说这种类型的IDS只能发现已知的入侵。(又是一个!在这方面类似knownldge-based)
Model-Based IDS
系统通过与入侵行为模型进行对比来发现入侵。因此,只能发现已知的入侵。
Honeypot蜜罐
蜜罐是网络中的一台计算机,这台计算机上面运行了一些服务,并且不受保护。主要是吸引攻击者攻击。管理员可以分析蜜罐日志来发现和跟踪入侵者,还可以发现入侵者的入侵方法。Enticement是合法的手段,它是系统看起来好像是一个真正的服务器,以吸引入侵者入侵这个不受保护的蜜罐系统。而Entrapment是非法的,它是通过一种欺骗的手段引诱入侵者到达蜜罐系统。
渗透测试Penetration Testing
系统通过与入侵行为模型进行对比来发现入侵。因此,只能发现已知的入侵。
Honeypot蜜罐
蜜罐是网络中的一台计算机,这台计算机上面运行了一些服务,并且不受保护。主要是吸引攻击者攻击。管理员可以分析蜜罐日志来发现和跟踪入侵者,还可以发现入侵者的入侵方法。Enticement是合法的手段,它是系统看起来好像是一个真正的服务器,以吸引入侵者入侵这个不受保护的蜜罐系统。而Entrapment是非法的,它是通过一种欺骗的手段引诱入侵者到达蜜罐系统。
渗透测试Penetration Testing
渗透测试也叫Ethical Hacking,是为了测试系统抵抗攻击的能力,使用攻击者采用的工具和方法来对系统进行测试,尝试绕过系统的安全机制而访问系统。由于这种测试会对系统产生一定的影响,因此,在做此项测试之前,必须得到管理层的授权,并且不能超出要测试的范围,不能对系统或者数据造成破坏。通过渗透测试,可以得知系统得弱点,系统在受到攻击时的反应,系统的安全防护是否可以以及如何被攻破,攻击者可以得到什么信息等等。渗透测试的结果要报告给管理层。
渗透测试有三个要求:
一是每个测试都必须有明确的目的。目的越明确,越容易确定测试时候成功。
二是渗透测试必须在一定的时限内完成。即使是攻击者也会在一定的攻击尝试后放弃,因此,设定一定时间是有必要的。
三是渗透测试必须得到管理层的授权。
渗透测试有三个方面。
1. 物理测试physical test
测试物理防护机制。比如测试机密地点的出入口。员工出入是否带有公司设备?是否有非授权员工进入不应该进入的地方等。
2. 运营测试operational testing
测试公司的工作流程是否有效。
3. 电子测试Electronic testing
测试网络,计算机,通信线路等等。
渗透测试有两种分类方法,一类分为以下3种:
1、Full knowledge test.
渗透测试组对尽可能多的了解被测试信息系统得(的)信息。这种测试主要的模拟一个对测试系统非常了解的攻击者所要进行的行为。
2、Partial knowledge test
渗透测试组对了解某种攻击所需要的被测试系统的信息。
3、Zero knowledge test
渗透测试组对所要测试的系统一无所知,这种测试模拟一个外部的攻击者所进行的攻击行为。
渗透测试组对所要测试的系统一无所知,这种测试模拟一个外部的攻击者所进行的攻击行为。
另外一类分为Open-Box和Closed-Box。
在Open-Box测试中,测试人员可以访问系统内部代码,这类测试适合测试一般意义的系统,比如操作系统。
Closed-Box测试中,测试人员不能访问系统内部代码,适合测试专用系统。
在进行渗透测试之前,必须要有测试计划。明确测试的目的和目标,详细的测试流程及参数,测试组的目标等等。
渗透测试包括以下几个步骤:
1. Discovery phase/reconnaissance phase
通过各种渠道,包括公司网站,电子邮件,黄页等,使用mapping和surveillance工具来收集公司和被测试系统的信息。
2. Enumeration
收集测试系统所处的网络环境,运行的应用程序,用户名和密码等信息
3. Vulnerability mapping
通过分析收集到的信息,识别出被测试系统所具有的弱点。
通过分析收集到的信息,识别出被测试系统所具有的弱点。
4. Exploitation
通过各种工具,利用前面得到的信息来对系统进行攻击,测试是否可以进入系统或获得更高级别的权限。
5. Occupation
测试人员已经进入系统内部。
渗透测试报告只允许需要知道的人员看,比如管理层。报告包括以下的内容:
渗透测试的过程回放以及结果,
渗透测试的方法,
以及如何补救这些弱点或漏洞的对策和对应的性价比等。
没有评论:
发表评论