课堂作业1、图示防火墙应用的典型环境,并作简要文字说明。防火墙典型的应用环境,每个防火墙至少应该具有的三个接口,一个对内部网路的接口,连接内部网路,只有通过了防火墙检测过的数据包才能到达该网路,一个对外的接口,用于连接外部网路,很多情况下,连接一台对外的路由器,以加强内部网路的安全性,当外部路由器受到攻击时,一个DMZ区域接口,该区域主要用于放置一些对外宣传等的服务器。2、什么是NAT技术,有何特点?方法描述优越性不利因素NAT技术把内部网络的IP子网放置在一个或一组外部IP地址之后,把所有的请求都伪装成来自一个地址而不是多个不同地址。可在LAN机器上被透明配置保护在一个或多个外部IP地址之后的许多机器,简化管理任务用户到LAN的出入可以通过打开和关闭NAT防火墙/网关上的端口来限制一旦用户从防火墙外连接了服务,则无法防止其蓄意活动分组过滤防火墙读取每个进出LAN的数据分组,可以根据头信息来读取和处理分组,并根据被防火墙管理员实施的可编排的规则来过滤分组。Linux内核通过Netfilter内核子系统内建了分组过滤功能;路由器内置的防火墙通过访问控制列表定义控制规则来过滤分组。Linux可以通过iptables这个前端工具定制,路由器通过ACL来定制。不需要任何客户方面的定制,因为所有的网络活动都在网路层级别而不是应用程序级别被过滤由于分组没有通过代理来传输,客户和远程主机间是直接连接,因此网络传输速度比较快。无法像代理防火墙一样根据内容过滤分组在协议层处理分组,但是无法在应用程序层处理分组复杂的网络体系可能会使建立分组过滤规则方面比较困难,特别是在和IP伪装或本地子网及DMZ网络一起使用时。代理防火墙过滤所有从LAN客户到代理机器的某种特定协议或类型的请求,然后,它再代表这个本地客户向互联网发送这些请求。代理机器被用来充当企图不良的远程用户和内部网络客户机器之间的一个缓冲。使管理员拥有对LAN之外的应用程序和协议功能的控制权某些代理服务器可以缓存数据,因此当客户存取频繁请求的数据时,这些数据就可以从本地缓存调出而不必使用互联网连接,这有助于减少不必要的带宽用量代理服务可以被密切地监视和记录,从而允许你在网络资源用量方面有更严格的控制代理通常是应用程序特有的(HTTP、Telnet等)或在协议方面有限制的(多数代理只能用于TCP连接的服务)应用程序服务无法在代理后面运行,因此应用程序服务器必须使用另一种网络安全措施代理可能会成为网络的瓶颈,因为所有的请求和传输都要经过一个中介而不是让客户直接连接远程服务。NAT(networkaddresstranslation,网络地址转换)将私用的本地地址区域映射到公用地址区域,使位于不同网络中的服务器、主机和控制台能够通过公用的内部网络相互通信。这种映射可以是静态的,也可以是动态的。准确的讲,NAT技术包括NAT和PAT(portaddresstranslation,PAT)两种,NAT指的是一个内部网路地址被翻译为另外一个网路地址,仅仅是一对一的翻译,这种情况主要用于将一个内部的机器映射为一个外部的机器,不是内部地址不够用而进行的地址翻译,而是为了隐藏内部机器的地址,更好的防范外部网路的攻击。由于目前IP地址的极端匮乏,所以,对大多数网路来说,没有足够的IP地址,这种简单的一对一的地址映射是不够的,还需要进行一对多的映射,这种映射就是PAT。3、泄密的种类有哪些?泄密的防范主要从哪些方面着手?放介质泄密技术有哪些?泄密问题对于国防安全来讲是十分严重的。通常所说的泄密包括以下类别:1、办公自动化泄密计算机电磁辐射引起的泄密传真机、打印机等办公设备引起的电磁辐射泄密用来存储信息的磁介质引起的泄密网络泄密设备和介质在维修过程中引起的泄密2、涉外活动泄密不恰当的接待境外人员参观访问保密意识薄弱造成的泄密不遵守保密规定造成的泄密故意出卖国家机密造成的泄密3、通信泄密使用移动电话、无绳电话(子母机)、对讲机等进行无线通信过程中引起的泄密使用有线通信过程中被窃听等引起的泄密4、文书在起草、印制、传阅、保管和销毁过程中泄密5、其它类别的泄密泄密的防范泄密的防范主要从行政管理、法律监督和技术保障三个方面着手。1、行政管理方面机房的选址要安全可靠、还要考虑防震、防电磁辐射、防火灾、防盗窃等设计。严格执行机房或重要部门的出入管理规定分级使用权限建立文件、磁介质等的复制、打印、借阅、存放、销毁等规定明确工作人员的职责,加强保密培训和教育等2、法律监督方面目前我国已有《保密法》、《计算机信息系统安全保护条例》和《计算机信息网络国际联网管理暂行规定》,依照法律法规,做好计算机的保密防范工作。3、技术保障方面采用低电磁辐射的设备和电磁屏蔽使用身份认证、入侵检测、防火墙、数据加密、数字签名等技术进行访问控制和身份识别等使用防拷贝技术、加密技术、消磁技术、彻底删除文件等方法预防介质泄密3.1.3防介质泄密技术1、防拷贝技术由于版权保护等方面的需求,防拷贝技术已经有了些产品在使用。如DVD影片的数码加密主要是由“CSS(ContentScramblingSystem,数据干扰系统)”加密的。所谓的CSS,就是所有存入DVD影片内容的数据都要经过编码程序,而要播放这些影片数据必须先经过解码才能播放。所以在DVD影片里看的影像必须经过“解码授权”,也就是用合法的解码程序才能播放。当然“道高一尺,魔高一丈”,无论什么防拷贝方法都是有办法破解的。挪威少年JonLechJohansen,就破解了DVD防拷密码。2、加密技术加密技术的使用是防止介质泄密的重要手段之一。由于文件被加密,即使出现泄密状况,要破解经过现代加密技术加密的文件也非易事。如果破解的成本超出文件本身的价值或者破解时间超出文件的有效期,就可以使破解者放弃破解的努力。数据加密算法有很多种,按照发展进程来分,经历了古典密码、对称密钥密码和公开密钥密码阶段,古典密码算法有替代加密、置换加密;对称加密算法包括DES和AES;非对称加密算法包括RSA、背包密码、McEliece密码、Rabin、椭圆曲线、EIGamalD_H等。目前在数据通信中使用最普遍的算法有DES算法、RSA算法和PGP算法等。古典密码大都较简单,一般可用手工破解。对称加密算法密码体制中,加密算法是公开的,但加密密钥和解密密钥相同,必须保密。在公开密钥密码体制中,公开密钥是可以公开的信息,而私有密钥是需要保密的。加密算法E和解密算法D也都是公开的。用公开密钥对明文加密后,仅能用与之对应的私有密钥解密,才能恢复出明文,反之亦然。另外,办公自动化软件如MSWord,Acrobat,WPS等都具有加密功能,在安全强度要求不高的情况下也可以使用。3、消磁技术计算机磁盘属于磁介质,所有磁介质都存在剩磁效应的问题,保存在磁介质中的信息会使磁介质不同程度地永久性磁化,所以磁介质上记载的信息在一定程度上是抹除不净的,使用高灵敏度的磁头和放大器可以将已抹除信息的磁盘上的原有信息提取出来。据一些资料的介绍,即使磁盘已改写了12次,但第一次写入的信息仍有可能复原出来。曾经记载过秘密信息的磁盘在释放作他用之前必须将原记载的信息彻底清除,具体的清除办法和技术有很多种,但实质上可分为直流消磁法和交流消磁法两种。直流消磁法是使用直流磁头将磁盘上原先记录信息的剩余磁通,全部以一种形式的恒定值所代替。通常,我们操作计算机用完全格式化方式格式化磁盘就是这种方法。交流消磁法是使用交流磁头将磁盘上原先所记录信息的剩余磁通变得极小,这种方法的消磁效果比直流消磁法要好得多,消磁后磁盘上的残留信息强度可比消磁前下降90分贝。比如国产的CXB-1型软磁盘信息消除器是一种采用磁抹技术,迅速而彻底地消除软磁盘信息的先进的信息保密安全设备。它无需电源的支持也不需维护,使用简便。软磁盘经过信息消除后,可重复正常使用,对软磁盘无任何损伤。可以完善的解决计算机上对软磁盘文件删除和格式化后,信息仍然保留的问题。废旧软磁盘经过消除后,给彻底免除任何信息泄露的可能。对于一些经消磁后仍达不到保密要求的磁盘,或已损坏需废弃的涉密磁盘以及曾记载过绝密信息的磁盘,必须作销毁处理。磁盘销毁的方法是将磁盘碾碎然后丢进焚化炉熔为灰烬和铝液。4、彻底删除文件硬盘上文件的“删除”实际上只是在文件系统中把文件名称的第一个字母改成一个特殊字符,然后把该文件占用的簇标记为空闲状态,但文件包含的数据仍在磁盘上,下次将新的文件保存到磁盘时,这些簇可能被新的文件使用,从而覆盖原来的数据。因此,只要不保存新的文件,被删除文件的数据实际上仍旧完整无缺地保存在磁盘上。用恢复软件的查找分析功能找出文件头,重写前2个代码,并修改文件分配表中的映射记录,就能够恢复文件。仅仅是删除的文件,恢复起来比较容易,如果整个磁盘被格式化了,恢复的困难就更大些,但是只要恢复软件能搜寻,并分析到它的残存的文件头,就有可能利用文件头中的信息,连接文件原来占用的簇,以恢复被删除的文件。然而,如果一个文件的某些簇被其他数据覆盖,即使恢复软件强行把原来占用各簇的数据连接起来恢复文件,但是因为其中的某些簇已不是该文件自身的数据,所以这个恢复后的文件有可能无法使用。4、简述缓冲区溢出原理,缓冲区溢出的攻击方式。想象一下,一个杯子可以装一升的水,硬要向它倒两升的水,水就会流出来,这就是溢出。对于计算机来说,杯子就是存储空间,水就是数据,如果向一个容量有限的空间里存储过量的数据,这时数据就会溢出存储空间。程序运行时会向计算机申请内存中一段空间来存放动态数据,这个临时存放的空间就被称为缓冲区,它的长度事先已经被程序或者操作系统定义好了(如在数组声明时),如果存入的数据超过了预先定义的长度,这些数据就会溢出到紧接着的内存空间,会覆盖原来存在这个空间中的数据。被故意覆盖掉的数据通常是指引程序下一步操作的返回地址(该地址上放的是本条指令操作结束后要执行的下一步指令),也可能是某个指针(实际上同样是指示某个地址)。如果计算机不能理解修改后数据(覆盖原来合法数据的溢出数据),则将引起程序的运行失败,严重的甚至导致系统崩溃;如果这些溢出数据是精心设计的,则攻击者就可以利用它们是程序跳转到预先设计的攻击代码(通常叫做shellcode)。要实现溢出攻击的三要点是确定溢出点:找到溢出对程序执行开始产生影响的地方;构造攻击代码:shellcode可能自己的编写,也可能是利用了已有代码,无论哪种情况,在溢出时shellcode都应该存在于被攻击的计算机之中;跳转到攻击代码缓冲区溢出产生的根源在于疏忽的编程,c和c++语言编写的程序风格自由而容易出错,出于灵活性考虑并没有提供自动的数组边界检查,还提供了很多非安全的字符串操作(strpy()、sprintf()、get()等),需要程序员自己进行溢出与否的判断,但这个操作通常被大多数人所忽略。具有缓冲区溢出漏洞的程序几乎都是用C和C++语言编写的,也有人直接建议采用更安全的语言,如java,但是操作系统和大量已有的程序都是使用C/C++语言的,而且作为Java程序执行平台的Java虚拟机使用的也是C语言,同样会有缓冲区溢出的危险。3.3.2缓冲区溢出攻击的方式按照缓冲区在内存中地址空间中位置的不同,缓冲区溢出可以分为两类:基于栈的缓冲区溢出和基于堆的缓冲区溢出。1、栈溢出基于栈的缓冲区溢出是最常见的溢出方式,它相比堆溢出更好利用,几乎成了缓冲区溢出的代名词,栈溢出又可细分为:覆盖返回地址、重定向函数指针和长跳转。覆盖返回地址这是最简单最常见的栈溢出攻击方式。栈(stack),也称为堆栈,是一段连续的内存区域,可以简单视为数据结构中的栈的实现。当程序中的函数被调用时,系统先将被调用函数所需的参数以逆序的方式压入栈,然后,将返回地址(EIP)入栈,随系统不同,还可能压入一些其他数据来保护现场,通常是栈基址(EBP,即返回时栈顶指针应恢复的地址)。随后,开始执行被调用的函数,其间,程序在栈中为被调用的函数内的局部变量分配了所需的存储空间,形成如图3-60所示的栈结构。