《网络安全》相关知识点总结
第一章 安全现状及趋势
第二章 网络安全概述
2.1 信息保障阶段
信息保障技术框架IATF: 由美国国家安全局制定,提出“纵深防御策略” DiD(Defense-in-Depth Strategy)
在信息保障的概念下,信息安全保障的PDRR模型的内涵已经超出了传统的信息安全保密,而是保护(Protection)、检测(Detection)、响应(Reaction)和恢复(Restore)的有机结合。信息保障阶段不仅包含安全防护的概念,更重要的是增加了主动和积极的防御观念。
2.2 网络攻击类型及分类
从安全属性来看,攻击类型可分为4类:阻断攻击、截取攻击、篡改攻击、伪造攻击;
-
阻断攻击:阻断攻击使系统的资产被破坏, 无法提供用户使用, 这是一种针对可用性的攻击。例如,破坏硬盘之类的硬件,切断通信线路,使文件管理系统失效等;
-
截取攻击:截取攻击可使非授权者得到资产的访问, 这是一种针对机密性的攻击。非授权者可以是一个人、 一个程序或一台计算机,例如,通过窃昕获取网上数据以及非授权的复制文件和程序;
-
篡改攻击:篡改攻击是非授权者不仅访问资产,而且能修改信息,这是一种针对完整性的攻击。例如,改变数据文件的值,修改程序以及在网上正在传送的报文内容;
-
伪造攻击:伪造攻击是非授权者在系统中插入伪造的信息,这是一种针对真实性的攻击。例如:在网上插入伪造的报文,或在文件中加入一些记录;
从攻击方式来看,攻击类型可分为被动攻击和主动攻击
-
被动攻击:目的是获取正在传输的信息。 被动攻击包括传输报文内容的泄露和通信流量分析。报文内容的泄露易于理解,一次电话通信、一份电子邮件报文、正在传送的文件都可能包含敏感信息或秘密信息;
<!--对被动攻击的检测十分困难, 因为攻击并不涉及数据的任何改变。 然而阻止这些攻击的成功是可行的, 因此, 对被动攻击强调的是阻止而不是检测;-->
-
主动攻击:包含对数据流的某些修改, 或者生成一个假的数据流。 它可分成4类:
-
伪装:伪装是一个实体假装成另一个实体。 伪装攻击往往连同另一类主动攻击一起进行。例如, 身份鉴别的序列被捕获,并在有效的身份鉴别发生时作出回答,有可能使具有很少特权的实体得到额外的特权, 这样不具有这些特权的人获得了这些特权
-
回答:回答攻击包含数据单元的被动捕获,随之再重传这些数据,从而产生一个非授权的效果。
-
修改报文:修改报文攻击意味着合法报文的某些部分已被修改, 或者报文的延迟和重新排序, 从 而产生非授权的效果。
-
拒绝服务:拒绝服务攻击是阻止或禁止通信设施的正常使用和管理。这种攻击可能针对专门的目标(如安全审计服务) ,抑制所有报文直接送到目的站;也可能破坏整个网络,使网络不可用或网络超负荷,从而降低网络性能。
-
<!--主动攻击和被动攻击具有相反的特性。被动攻击难以检测出来,然而有阻止其成功的方法。而主动攻击难以绝对地阻止,因为要做到这些,就要对所有通信设施、通路在任何时间进行完全的保护。因此对主动攻击采取检测的方法,并从破坏中恢复 -->
2.3 网络安全信息服务
-
机密性服务:提供信息的保密。
-
文件机密性
-
信息传输机密性
-
通信流机密性
-
-
完整性服务:提供信息的正确性。
-
文件完整性
-
信息传输完整性
-
-
可用性服务:提供的信息是可用的。可用性是用来对拒绝服务攻击的系统恢复。可用性并不能阻止DoS,但可用性服务可用来减少这类攻击的影响。
-
可审性服务:本身不针对攻击提供保护,需与其它服务结合。
-
身份标识与身份鉴别
有两个目的:其一是对试图执行一个功能的每个人的身份进行标识;其二是验证这些人声称的身份。
-
身份认证技术
-
身份认证协议
身份认证协议一般有两个通信方,可能还会有一个双方都信任的第三方参与进行。 其中一个通信方按照协议的规定向另一方或者第三方发出认证请求,对方按照协议的规定作出响应或者其他规定的动作,当协议顺利执行完毕时双方应该确信对方的身份
-
审计功能
计算机系统提供日志,以记录用户ID的行动。假如身份标识与身份鉴别功能的作用合适,这些事件就能跟踪用户的行为。同样,必须保护好计算机系统上的审 计记录,防止非授权者对其进行修改,事实上,审计记录要防止任何人的修改
-
第三章 网络攻击
3.1 恶意代码
恶意代码是指一切旨在破坏计算机或者网络资源的可用性、机密性和完整性的程序 。
利用CreateRemoteThread()
函数注入
步骤
代码注入的方式很多,最著名的当属CreateRemoteThread()
这个API函数,它可以在其它进程的地址空间中开启远程线程。它的原型如下:
lasso
HANDLE CreateRemoteThread( HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId );
-
如果要注入的代码是一个DLL文件,即将一个DLL注入到其他进程中,需要考虑的一个问题就是怎样运行DLL中的代码。只开启了远程线程还不够,还需要将DLL加载到目标进程中,这时需要在已开启的远程线程中调用
LoadLibrary()
函数。 -
一旦
LoadLibrary()
函数调用成功, DLL中的入口函数DllMain()
就会获得执行机会,剩下的所有工作都可以交给DLL实现,因此远程线程中需要执行的代码只是一个简单的LoadLibrary ()
调用CreateRemoteThread()
函数的第四个参数lpStartAddress
,即线程函数起始地址直接设置为LoadLibraryA()
(也可以使用LoadLibraryW
函数)的地址即可。 获取LoadLibrary()
的地址很简单,此函数由Kernel32.dll导出, Windows总是将Kernel32.dll映射到相同的地址,也就是说,不同的进程中Kernel32.dll的加载地址总是相同的,所以只要在自身的进程中获取到LoadLibrary()
的地址就可以了。-
具体方法是首先调用
GetModuleHandle()
函数获取Kernel32.dll的句柄,再调用GetProcAddress()
函数获得LoadLibrary()
的地址。
-
-
CreateRemoteThread()
函数还有一个参数比较重要,即lpParameter
,它是线程函数的参数,也就是LoadLibrary()
的参数,即DLL的文件名。一般情况下,我们只要先定义一个常量字符串,然后将字符串指针作为参数即可。但是在远程线程中却不可以这么做,原因很简单,我们调用的LoadLibrary()
函数是在目标进程的地址空间中的,而我们自己定义的字符串却在自身进程的地址空间中,由于两个不同的地址空间互相隔离,所以LoadLibrary()
函数将不能获得我们提供的参数。 -
解决的办法也比较简单, 那就是将字符串参数也放入目标进程的地址空间中。 完成这个功能,需要用到两个函数:
VirtualAllocEx()
和WriteProcessMemory()
,它们的作用分别是在指定进程空间中分配内存和在指定进程空间中写入数据 -
注入DLL的关键步骤已基本介绍完,但是还有一个值得注意的问题,我们要注入一个进程,前提条件是要操作该进程的权限。
-
通过简单实验就可以发现,很多系统进程的是无法用函数
OpenProcess()
获得ID的,即使Administrator用户也没有权限操作这些被操作系统所保护的进程。因此必须将自身的权限提升,使其具有SeDebugPrivilege
权限
-
提升进程权限的方法是获取进程的访问令牌,然后修改该令牌。获取进程访问令牌的API函数是
OpenProcessToken()
,其原型为
arduino
BOOL OpenProcessToken( HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle );
-
其中
TokenHandle
为获得的令牌句柄。
要修改访问令牌需要另一个API:AdjustTokenPrivileges()
,原型如下:
mipsasm
BOOL AdjustTokenPrivileges( HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength );
其中第三个参数NewState
是一个指向TOKEN_PRIVILEGES
结构体的指针,这个结构体定义了令牌权限的信息,其定义如下
gauss
Typedef struct _TOKEN_PRIVILEGES { DWORD PrivilegeCount;//数组元素的个数 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
LUID_AND_ATTRIBUTES
的定义如下
elm
typedef struct _LUID_AND_ATTRIBUTES { LUID Luid;// Luid为权限类型 DWORD Attributes;// Attributes为操作的类型 } LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
由于Luid
是一个64bit数值,所以我们需要知道SeDebugPrivilege
权限对应的Luid
值。另一个API提供了这个功能,就是LookupPrivilegeValue()
。
gcode
LookupPrivilegeValue()的原型为: BOOL LookupPrivilegeValue( LPCTSTR lpSystemName, LPCTSTR lpName, PLUID lpLuid );
我们通过指定参数lpName
来确定权限类型,Winnt.h
中已经预定义了一些权限的宏定义,SeDebugPrivilege
对应的宏为SE_DEBUG_NAME
。
总结
远线程注入DLL的流程:
-
提升自身进程的权限为
SeDebugPrivilege
(如果不注入系统进程,此步骤可省略)。 -
OpenProcess()
获取目标进程的句柄。 -
VirtualAllocEx()
在目标进程中分配一块内存。 -
WriteProcessMemory()
将要注入的DLL路径写入步骤3分配的内存。 -
GetProcAddress()
获得LoadLibraryA ()
函数的地址。 -
CreateRemoteThread()
创建远程线程,线程起始地址设为LoadLibraryA()
函数的地址,线程的参数为步骤4中DLL路径在目标进程中的地址。 -
等待远程线程结束后退出。
3.2 ARP攻击
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议
ARP欺骗
ARP欺骗利用修改主机ARP缓存表的方法达到嗅探的目的,是一种中间人攻击。主机C为了达到嗅探的目的,会向主机A和主机B分别发送ARP应答包,告诉它们IP地址为IPB的主机MAC地址为MACC, IP地址为IPA的主机MAC地址为MACC 。
这样,主机A和主机B的ARP缓存中就会有IPB—MACC和IPA—MACC的记录。这样,主机A和主机B的通信数据都流向了主机C,主机C只要再发送到其真正的目的地就可以了。当然ARP缓存表项是动态更新的(一般为两分钟),如果没有更新信息, ARP映射项会自动删除。所以,主机C在监听过程中,还要不断地向主机A和主机B发送伪造的ARP应答包。
3.3 拒绝服务攻击
典型的拒绝服务攻击
Ping of Death
Ping operates by sending Internet Control Message Protocol (ICMP/ICMP6) Echo Request packets to the target host and waiting for an ICMP Echo Reply. The program reports errors, packet loss, and a statistical summary of the results, typically including the minimum, maximum, the mean round-trip times, and standard deviation of the mean.
The echo request ("ping") is an ICMP/ICMP6 message
The echo reply is an ICMP message generated in response to an echo request.
Teardrop
-
MTU( maximum transfer unit,最大传送单位)限制传输数据的包大小,大数据包需要分段。 Teardrop攻击就是利用这种分割重组间的漏洞而产生的攻击方式。
-
Teardrop指的是向目标机器发送损坏的IP包,诸如重叠的包或过大的包载荷,该攻击通过TCP/IP协议栈中分片重组代码中的bug来瘫痪各种不同的操作系统。
-
Teardrop攻击使接收数据方重组数据包时,出现数据包长度超大(如负值), 导致溢出。 (假设数据包中第二片IP包的偏移量小于第一片结束的位移,而且算上第二片IP包的Data,也未超过第一片的尾部,这就是重叠现象)
Land
-
Land攻击:利用特殊的TCP封包传送至目标主机,使其因无法判别而当机或被迫重新启动。
-
攻击原理是:用一个特别打造的SYN包,它的源地址和目标地址都被设置成某一个服务器地址。此举将导致接受服务器向它自己的地址发送SYN一ACK消息,结果这个地址又发回ACK消息并创建一个空连接。被攻击的服务器每接收一个这样的连接都将保留,直到超时。
SYN Flood
原理:
-
每个机器都需要为半开连接分配一定的资源
-
这种半开连接的数量是有限制
-
共计方利用TCP连接三次握手过程,打开大量的半开TCP连接
-
目标机器不能进一步接受TCP连接。机器就不再接受进来的连接请求。
受影响的系统:大多数操作系统
攻击细节
-
连接请求是正常的,但是,源IP地址往往是伪造的,并且是一台不可达的机器的IP地址,否则,被伪造地址的机器会重置这些半开连接
-
一般,半开连接超时之后,会自动被清除,所以,攻击者的系统发出SYN包的速度要比目标机器清除半开连接的速度要快
-
任何连接到Internet上并提供基于TCP的网络服务,都有可能成为攻击的目标
-
这样的攻击很难跟踪,因为源地址往往不可信,而且不在线
Smurf
原理:
-
攻击者向一个广播地址发送ICMP Echo请求,并且用受害者的IP地址作为源地址
-
广播地址网络上的每台机器响应这些Echo请求,同时向受害者主机发送ICMP Echo-Reply应答
-
受害者主机会被这些大量的应答包淹没
受影响的系统:大多数操作系统和路由器
HTTP Flood
这类攻击会占用大量的HTTP进程,从而耗费大量的系统资源。最终,会导致系统因不堪重负而崩溃掉。 以最典型的HTTP GET FLOOD攻击为例。
-
HTTP GET FLOOD是针对应用服务器上的某个文件,对其进行快速的反复的重复读取操作,从而造成服务器的资源减少直至崩溃。
-
HTTP GET FLOOD针对的不仅仅是WEB服务器,还有数据库服务器。大量的HTTP请求产生了大量的数据库查询,可以在几秒之内使数据库停止响应,系统负载升高,最终导致服务器宕机。
3.4 DNS安全
域名系统(Domain Name System,DNS)在Internet上具有举足轻重的作用,负责在域名和IP地址之间进行转换。
DNS工作流程
查询方式
-
递归查询: 一般客户机和服务器之间是递归查询, DNS服务器如果未能在本地找到相应的信息,就代替用户向其它服务器进行查询,这时它是代替用户扮演了解析器(resolver)的角色,直到最后把结果找到,也可能根本没有结果,那就返回错误,并返回给用户为止。
-
反复查询(迭代查询): 一般服务器之间属于反复查询。 DNS服务器返回的要么是本地存在的结果信息,要么是一个错误码,告诉查询者你要的信息这里没有,然后再返回一个可能会有查询结果的DNS服务器地址,让查询者到那里去查。
DNS安全威胁
DNS应答包被客户端接受需要满足以下五个条件
-
应答包question域和请求包question域的域名信息一致。
-
应答包的Transaction ID和请求包中的Transaction ID一致。
-
应答包的源IP地址与请求包的目的IP地址一致。
-
应答包的目的IP地址和端口与请求包的源IP地址和端口一致。
-
第一个到达的符合以上四个条件的应答包。
从以上五个条件可以看出,最初设计DNS时没有考虑它的安全问题,这导致DNS协议存在很多漏洞,这使得DNS很容易受到攻击。
DNS的安全漏洞主要体现在以下三个方面。
-
DNS报文只使用序列号来进行有效性鉴别,序列号由客户程序设置并由服务器返回结果,客户程序通过它来确定响应与查询是否匹配,这就引入了序列号攻击的危险。
-
从协议定义上来看,在DNS应答报文中可以附加信息,该信息可以和所请求的信息没有直接关系,这样,攻击者就可以在应答中随意添加某些信息,如:指示某域的权威域名服务器的域名及IP,导致在被影响的域名服务器上查询该域的请求都会被转向攻击者所指定的域名服务器上去,从而对网络的完整性构成威胁。
-
DNS的缓存机制,当一个客户端/DNS服务器, 收到有关域名和IP的映射信息时,它会将该信息存放在缓存中,当再次遇到对此域名的查询请求时就直接使用缓存中的结果而无需重新查询。可以通过
ipconfig /displaydns
命令查看本地DNS缓存信息。
第四章 网络安全扫描
4.1 端口扫描技术
第五章 防火墙
5.1 访问控制
访问控制包括三个要素:主体、客体和控制策略。
-
主体S(Subject) 。是指提出访问资源具体请求。是某一操作动作的发起者,但不一定是动作的执行者,可能是某一用户,也可以是用户启动的进程、服务和设备等。
-
客体O(Object) 。是指被访问资源的实体。所有可以被操作的信息、资源、对象都可以是客体。客体可以是信息、文件、记录等集合体,也可以是网络上硬件设施、无限通信中的终端,甚至可以包含另外一个客体。
-
控制策略A(Attribution) 。是主体对客体的相关访问规则集合,即属性集合。访问策略体现了一种授权行为,也是客体对主体某些操作行为的默认。
访问控制策略
安全策略的实施原则:安全策略的制定实施也是围绕主体、客体和安全控制规则集三者之间的关系展开的。
-
最小特权原则:最小特权原则是指主体执行操作时,按照主体所需权利的最小化原则分配给主体权力。最小特权原则的优点是最大限度地限制了主体实施授权行为,可以避免来自突发事件、错误和未授权用主体的危险。也就是说,为了达到一定目的,主体必须执行一定操作,但他只能做他所被允许做的,其它除外。
-
最小泄漏原则:最小泄漏原则是指主体执行任务时,按照主体所需要知道的信息最小化的原则分配给主体权力。
-
多级安全策略:多级安全策略是指主体和客体间的数据流向和权限控制按照安全级别的绝密(TS)、秘密(S)、机密(C)、限制(RS)和无级别(U)五级来划分。多级安全策略的优点是避免敏感信息的扩散。具有安全级别的信息资源,只有安全级别比他高的主体才能够访问。
自主访问控制模型(DAC)
自主访问控制模型(DAC Model, Discretionary Access Control Model)是根据自主访问控制策略建立的一种模型,允许合法用户以用户或用户组的身份访问策略规定的客体,同时阻止非授权用户访问客体,某些用户还可以自主地把自己所拥有的客体的访问权限授予其它用户。
-
自主访问控制又称为任意访问控制。 LINUX, UNIX、 Windows NT或是SERVER版本的操作系统都提供自主访问控制的功能。
-
在实现上,首先要对用户的身份进行鉴别,然后就可以按照访问控制列表所赋予用户的权限允许和限制用户使用客体的资源。主体控制权限的修改通常由特权用户或是特权用户(管理员)组实现。
-
任意访问控制对用户提供的这种灵活的数据访问方式,使得DAC广泛应用在商业和工业环境中;由于用户可以任意传递权限,那么,没有访问文件File1权限的用户A就能够从有访问权限的用户B那里得到访问权限或是直接获得文件File1;因此, DAC模型提供的安全防护还是相对比较低的,不能给系统提供充分的数据保护。
-
自主访问控制模型的特点是授权的实施主体(1、可以授权的主体; 2、管理授权的客体; 3、授权组)自主负责赋予和回收其他主体对客体资源的访问权限。 DAC模型一般采用访问控制矩阵和访问控制列表来存放不同主体的访问控制信息,从而达到对主体访问权限的限制目的。
强制访问控制模型(MAC)
强制访问控制模型(MAC Model: Mandatory Access Control Model)一种多级访问控制策略。
-
系统对访问主体和受控对象实行强制访问控制,系统事先给访问主体和受控对象分配不同的安全级别属性,实施访问控制时,系统先对访问主体和受控对象的安全级别属性进行比较,再决定访问主体能否访问该受控对象。
-
MAC对访问主体和受控对象标识两个安全标记:一个是具有偏序关系的安全等级标记;另一个是非等级分类标记。当主体s的安全类别为TS,而客体o的安全类别为S时,用偏序关系可以表述为SC(s)≥SC(o)
考虑到偏序关系,主体对客体的访问主要有四种方式:
-
向下读(rd, read down):主体安全级别高于客体信息资源的安全级别时允许查阅的读操作;
-
向上读(ru, read up):主体安全级别低于客体信息资源的安全级别时允许的读操作;
-
向下写(wd, write down):主体安全级别高于客体信息资源的安全级别时允许执行的动作或是写操作;
-
向上写(wu, write up):主体安全级别低于客体信息资源的安全级别时允许执行的动作或是写操作。
MAC模型中的几种主要模型: Lattice模型, Bell-LaPadula模型(BLP Model)和Biba模型(Biba Model)。
Lattice模型 在Lattices模型中,每个资源和用户都服从于一个安全类别。这些安全类别我们称为安全级别,也就是我们在本章开始所描述的五个安全级别, TS, S, C, R, U。在整个安全模型中,信息资源对应一个安全类别,用户所对应的安全级别必须比可以使用的客体资源高才能进行访问。 Lattices模型是实现安全分级的系统,这种方案非常适用于需要对信息资源进行明显分类的系统。
Bell-LaPadula模型 BLP [Bell and LaPadula, 1976] 模型是典型的信息保密性多级安全模型,主要应用于军事系统。
-
无上读、无下写
-
Bell-LaPadula模型通常是处理多级安全信息系统的设计基础,客体在处理绝密级数据和秘密级数据时,要防止处理绝密级数据的程序把信息泄露给处理秘密级数据的程序。
-
BLP模型的出发点是维护系统的保密性,有效地防止信息泄露,忽略了完整性指标,使非法、越权篡改成为可能
Biba模型 Biba模型 [Biba,1977] 在研究BLP模型的特性时发现, BLP模型只解决了信息的保密问题,其在完整性定义存在方面有一定缺陷。
-
禁止向上写,没有向下读
-
Biba模型模仿BLP模型的信息保密性级别,定义了信息完整性级别,在信息流向的定义方面不允许从级别低的进程到级别高的进程,也就是说用户只能向比自己安全级别低的客体写入信息,从而防止非法用户创建安全级别高的客体信息,避免越权、篡改等行为的产生。
-
Biba模型可同时针对有层次的安全级别和无层次的安全种类。
5.2 防火墙
防火墙是位于两个(或多个)网络间实施网间访问控制的一组组件的集合。它满足以下条件:
-
所有进出被保护网络的通信必须通过防火墙
-
所有通过防火墙的通信必须经过安全策略的过滤或者防火墙的授权
-
防火墙自身应对渗透(peneration)免疫
防火墙访问控制方法
-
服务控制:确定可以访问的服务类型;
-
方向控制:确定特定的服务请求可以发起并允许通过防火墙;
-
用户控制:不同的用户具有不同服务访问的权限;
-
行为控制:控制怎样使用特定服务。如过滤垃圾邮件
防火墙分类
包过滤防火墙
-
包过滤防火墙对所接收的每个数据包做允许、拒绝的决定。
-
防火墙审查每个数据报以便确定其是否与某一条包过滤规则匹配。
-
过滤规则基于可以提供给IP转发过程的包头信息。
-
分为静态包过滤与动态包过滤两类。
-
动态包过滤对外出数据包的身份做一个标记,对相同连接的进入的数据包也被允许通过,也就是说,它捕获了一个“连接”,而不是单个数据包头中的信息
-
优点:
-
逻辑简单,价格便宜,成本低;
-
对网络性能的影响较小,有较强的透明性。
-
易于匹配绝大多数网络层、传输层数据包,定制策略灵活。
-
并且它的工作与应用层无关,无须改动任何客户机和主机上的应用程序,易于安装和使用。
缺点:
-
需要对IP、 TCP、 UDP、 ICMP等协议有深入了解,否则容易出现因配置不当带来的问题;
-
据以过滤判别的只有网络层和传输层的有限信息,因而各种安全要求不能得到充分满足;
-
由于数据包的地址及端口号都在数据包的头部,不能彻底防止IP地址欺骗;
-
允许外部客户和内部主机的直接连接;
-
不提供用户的鉴别机制;
-
仅工作在网络层,提供较低水平的安全性。
应用网关防火墙
应用网关防火墙(AGF,Application Gateway Firewall),又称代理防火墙或简称应用网关。
-
应用网关在应用层处理信息
-
AGF可以支持多个应用,如E-mail, Web, DNS,Telnet, FTP等
-
应用网关代理服务器的工作过程为:
-
首先,它对该用户的身份进行验证。
-
若为合法用户,则把请求转发给真正的某个内部网络的主机,同时监控用户的操作,拒绝不合法的访问(访问权限)。
-
当内部网络向外部网络申请服务时,代理服务器的工作过程刚好相反。(认证输入、输出两个方向的连接)
-
优点:
-
不允许内外网主机的直接连接;
-
可以提供比包过滤更详细的日志记录(应用层信息);
-
可以隐藏内部IP地址;
-
认证用户而非设备;
-
可以为用户提供透明的加密机制;
-
可以与认证、授权等安全手段方便的集成;
-
监控、过滤应用层信息
缺点:
-
代理速度比包过滤慢;
-
代理对用户不透明,给用户的使用带来不便,灵活性不够;
-
这种代理技术需要针对每种协议设置一个不同的代理服务器;
-
有时要求特定的客户端软件。
状态检测防火墙
状态检测防火墙是在动态包过滤防火墙基础上,增加了状态检测机制而形成的,具有连接的跟踪能力 。
-
以TCP协议为例:所谓的状态检测机制关注的主要问题不再仅是SYN和ACK标志位,或者是来源端口和目标端口,还包括了序号、窗口大小等其它TCP协议信息。
优点:
-
具备动态包过滤的所有优点,同时具有更高的安全性。
缺点:
-
检测的层次仅限于网络层与传输层,无法对应用层内容进行检测,从而无法抵抗应用层的攻击;
-
性能比动态包过滤稍差:因为检测更多的内容。
5.3 网络地址翻译(NAT)
目的
-
解决IP地址空间不足问题
-
向外界隐藏内部网结构
方式
-
M-1 多个内部网地址翻译到1个IP地址
-
1-1 简单的地址翻译
-
M-N 多个内部网地址翻译到N个IP地址池
地址翻译NAT(Network Address Translation)就是将一个IP地址用另一个IP地址代替。地址翻译主要用在两个方面:
-
网络管理员希望隐藏内部网络的IP地址。这样互联网上的主机无法判断内部网络的情况。
-
内部网络的IP地址是无效的IP地址。 这种情况主要是因为现在的IP地址不够用,要申请到足够多的合法IP地址很难办到,因此需要翻译IP地址。
NAT的三种类型
-
静态NAT
-
内部网络每个主机都永久映射成外部合法的地址
-
-
NAT池
-
在外部网络中定义了一系列合法地址,采用动态分配的方法映射到内部网络
-
-
端口NAT(PNAT)
-
把内部地址映射到外部网络的一个IP地址的不同端口上
-
第六章 IDS
IDS, Intrusion Detection System,入侵检测系统
入侵检测是从计算机网络或计算机系统中的若干关键点搜集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和遭到袭击的迹象的一种机制。
-
一种主动保护自己的网络和系统免遭非法攻击的网络安全技术。
-
它从计算机系统或者网络中收集、分析信息,检测任何企图破坏计算机资源的完整性、机密性和可用性的行为,即查看是否有违反安全策略的行为和遭到攻击的迹象,并做出相应的反应。
-
安全审计中的核心技术之一
6.1 IDS分类
根据原始数据的来源
-
基于主机的入侵检测系统:监控粒度更细、配置灵活、可用于加密的以及交换的环境
-
基于网络的入侵检测系统:视野更宽 、隐蔽性好 、攻击者不易转移证据
根据检测原理
-
异常入侵检测:根据异常行为和使用计算机资源的情况检测出来的入侵。
-
误用入侵检测:利用已知系统和应用软件的弱点攻击模式来检测入侵。
根据体系结构
-
集中式:多个分布于不同主机上的审计程序,一个入侵检测服务器
-
等级式:定义了若干个分等级的监控区域,每个IDS负责一个区域,然后将当地的分析结果传送给上一级IDS
-
协作式:将中央检测服务器的任务分配给多个基于主机的IDS,这些IDS不分等级,各司其职,负责监控当地主机的某些活动。
根据工作方式分类
-
离线检测:非实时工作系统,在事件发生后分析审计事件,从中检查入侵事件。
-
在线检测:对网络数据包或主机的审计事件进行实时分析,可以快速反应,保护系统的安全;但系统规模较大时,难以保证实时性。
6.2 基于主机系统结构
HIDS: Host-Based IDS
检测的目标主要是主机系统和系统本地用户。检测原理是根据主机的审计数据和系统的日志发现可疑事件,检测系统可以运行在被检测的主机或单独的主机上。
优点
-
性能价格比高
-
细腻性,审计内容全面
-
视野集中
-
适用于加密及交换环境
缺点
-
IDS的运行影响服务器的性能
-
HIDS依赖性强,依赖于审计数据或系统日志准确性和完整性,以及安全事件的定义。
-
若主机数目多,则代价过大
-
不能监控网络上的情况
6.3 基于网络系统结构
NIDS: Network-Based IDS
根据网络流量、协议分析、单台或多台主机的审计数据检测入侵
优点
-
服务器平台独立性:监视通信流量而不影响服务器的平台的变化和更新;
-
配置简单:只需要一个普通的网络访问接口即可;
-
众多的攻击标识:探测器可以监视多种多样的攻击包括协议攻击和特定 环境的攻击。
缺点
-
不能检测不同网段的网络包
-
很难检测复杂的需要大量计算的攻击
-
协同工作能力弱
-
难以处理加密的会话
6.4 入侵检测结构
CIDF(Common Intrusion Detection Framework)
事件产生器
-
事件产生器的目的是从整个计算环境中获得事件,并向系统的其他部分提供此事件。
-
入侵检测的第一步
-
采集内容包括系统日志、应用程序日志、系统调用、网络数据、用户行为、其他IDS的信息
事件分析器
-
事件分析器分析得到的数据,并产生分析结果。
-
分析是核心,效率高低直接决定整个IDS性能
响应单元 响应单元是对分析结果作出作出反应的功能单元,功能包括:
-
告警和事件报告
-
终止进程,强制用户退出
-
切断网络连接,修改防火墙设置
-
灾难评估,自动恢复
-
查找定位攻击者
事件数据库
-
事件数据库是存放各种中间和最终数据的地方的统称,它可以是复杂的数据库,也可以是简单的文本文件。
原文地址:https://blog.csdn.net/2401_88326655/article/details/144187298
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!