TCP IP协议的安全性与防范论文Word格式.docx
《TCP IP协议的安全性与防范论文Word格式.docx》由会员分享,可在线阅读,更多相关《TCP IP协议的安全性与防范论文Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
互联网技术屏蔽了底层网络硬件细节,使得异种网络之间可以互相通信。
这就给“黑客”们攻击网络以可乘之机。
由于大量重要的应用程序都以TCP作为它们的传输层协议,因此TCP的安全性问题会给网络带来严重的后果。
网络的开放性,TCP/IP协议完全公开,远程访问使许多攻击者无须到现场就能够得手,连接的主机基于互相信任的原则等性质使网络更加不安全。
因此,目前正在制定安全协议,在互联的基础上考虑了安全的因素,希望能对未来的信息社会中对安全网络环境的形成有所帮助。
第一章
TCP/IP体系结构
Internet上使用的是TCP/IP协议。
IP,“网际互联协议”,即为计算机网络相互连接进行通信而设计的协议。
TCP是传输控制协议。
TCP/IP协议是能使连接到网上的所有计算机网络实现相互通信的一套规则,任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互联互通。
虽然从名字上看TCP/IP包括两个协议,传输控制协议和网际互联协议,但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:
UDP和ICMP等,通常我们叫它TCP/IP协议族,同其它的协议族一样,TCP/IP也是由不同的层次组成,是一套分层的通信协议,但一个系统具体使用何种协议则取决于网络用户的需求和网络设计人员的要求。
从OSI的角度看,TCP/IP协议的层次结构并没有十分明确的划分,通常划分为四个层次,从上到下依次是应用层、传输层、网络层和网络接口层。
1.1应用层
应用层是TCP/IP的最高层,网络在此层向用户提供各种服务,用户则调用相应的程序并通过TCP/IP网络来访问可用的服务,与每个传输层协议交互的应用程序负责接收和发送数据。
Internet在这一层中的协议主要有:
简单电子邮件传输(SMTP)、超文本传输协议(HTTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)、域名服务协议(DNS)等,它们分别向用户提供了电子邮件、网页浏览、文件传输、远程登录、域名解析等服务。
1.2传输层
传输层的基本任务是提供应用程序之间的通信服务,即端到端的通信。
当一个源主机上运行的应用程序要和目的主机联系时,它就向传输层发送消息,并以数据包的形式送达目的主机。
传输层不仅要系统地管理信息的流动,还要提供可靠的端到端的传输服务,有确保数据到达无差错,无乱序。
为了达到这个目的,运输层协议软件要提供确认和重发的功能,同时传输层还处理控制、拥塞控制等事务。
在TCP/IP的传输层有两个极为重要的协议:
传输控制协议TCP和用户数据报协议UDP。
TCP是一个面向连接的协议,它允许从一台主机发出的报文无差错地发往互联网上的其它机器。
UDP是一个不可靠的、无连接协议,用于不需要TCP排序和流量控制而是自己完成这些功能的应用程序。
它也被广泛地应用于只有一次的客户-服务器模式的请求-应答查询,以及快速递交更重要的应用程序,如传输语音或影像。
另外,它还包含分级语音通信协议NVP等。
1.3网络层
网络层是网络互联的关键,它解决了机器之间的通信问题。
它接收传输层的请求,把来自传输层的报文分组封装在一个数据报中,并加上报头。
然后按照路由算法来确定是直接交付数据报,还是先把它发送给某个路由器,再交给相应的网络接口并发送出去。
反过来对于接收到的数据报,网络层要校验其有效性,然后根据路由算法决定数据报应该在本地处理还是转发出去。
如果数据报的目的主机处于本机所在的网络,则网络层软件就会除去报头,再选择适当的传输层协议来处理这个分组,同时网络层还处理局域网络互联和拥塞避免等事务。
网络层有向上面的传输层提供服务、路由选择、流量控制、网络互联等四个主要功能,Internet的网络层协议主要有IP协议、网络控制报文协议ICMP、Internet组管理协议IGMP、地址解析协议ARP和反向地址转换协议RARP等。
1.4网络接口层
网络接口层是TCP/IP协议的最低层,它负责接收来自网络层的IP数据报,并把数据报发送到指定的网络上。
或从网络上接收物理帧,抽出网络层数据报,交给网络层。
网络接口层可能由一个设备驱动程序组成,也可能是一个子系统,且子系统使用自己的链路协议。
从理论上讲,该层并不是TCP/IP之间的接口,是TCP/IP实现的基础,这些通信网络包括局域网(LAN)、城域网(MAN)、广域网(WAN)等。
其体系结构及各层集中的协议如下图所示:
层次结构
各层集中的主要协议
应用层
FTPHTTPTELNETSMTPDNS
传输层
TCPUDP
网络层
IPARPICMPIGMPRARP
网络接口层
LANARPANETSLIP
第二章
TCP/IP协议安全设计缺陷的攻击与防范
分析网络系统的安全威胁主要来自以下几个方面:
(1)操作系统的安全性,目前流行的许多听任系统均存在网络安全漏洞;
(2)防火墙的安全性,防火墙产品自身是否安全,是否设置错误,需要经过认真检验;
(3)来自内部网用户的安全检查威胁;
(4)缺乏有效的手段监视网络系统的安全性;
(5)采用的TCP/IP协议族本身的安全隐患;
但由于TCP/IP协议在网络中的广泛应用及其自身安全性上的缺陷,大多数攻击都是基于TCP/IP协议的,因此我们针对TCP/IP网络的四层结构,从下向上,就常见的攻击与防范手段进行探讨。
2.1网络接口层上的攻击与防范
网络窥探
网络接口层是TCP/IP网络中最复杂的一个层次,常见的攻击是针对组成TCP/IP网络的以太网进行网络窥探。
所谓网络窥探是利用网络上的接口接收不属于本机的数据。
在以太网中,所有的通讯都是广播的,也就是说在同一个网段的所有网络接口都可以访问在物理媒体上传输的所有数据,而每一个网络接口都有一个唯一的硬件地址,这个硬件地址就是网卡的MAC地址,在网络上进行数据通信时,信息以数据报的形式传送,其报头包含了目的主机的硬件地址,只有硬件地址匹配的机器才会接收该数据报,然而网络上也存在一些能接收所有数据报的机器(或接口),称为杂错节点。
一般情况下,用户的帐号和口令等信息都是以明文的形式在网络上传输的,所以一旦被黑客在杂错节点上窥探到,用户就可能遭到攻击,从而遭受难以弥补的损失。
针对这一类攻击,通常可采取以下几种防范措施:
(1)网络分段:
这是防止窥探最有效的手段。
在网络中使用交换机、动态集线器和网桥等设备,可以对数据流进行限制,最理想的情况应使每一台机器都拥有自己的网络段,当然这会相应地增加很多网络建设费用。
但可以尽量使相互信任的机器属于同一个网段,并在网段与网段间进行硬件屏障,最大限度地防止窥探的产生。
(2)一次性口令技术:
口令并不在网络上传输而是在两端进行字符串的匹配,客户端利用从服务器上得到的Challenge和字符串只使用一次,我们就从一定程度上限制了网络窥探。
(3)加密:
对在网络中传送的敏感数据进行加密时,如用户ID或口令等,大多采用SSH、FSSH等加密手段。
(4)禁用杂错节点:
安装不支持杂错的网卡,通常可以有效地防止IBM兼容机进行窥探。
2.2网络层上的攻击与防范
1.路由欺骗
每一个IP数据报都是在主机的网络层被检查,用以决定是转发同一子网中的主机还是下一个路由器。
路由欺骗有多种方法,但都有是采用伪造路由表,错误引导非本地的数据报而实现的。
(1)基于源路由的攻击
一般情况下,IP路由过程中是由路由器来动态决定下一个驿站的。
但是在TCP/IP协议中,IP数据报为进行测试而直接设置了一个选项,通过IP欺骗的方式,构造一个通往服务器的直接路径,从而对服务器展开攻击。
防止源路由欺骗方法:
1.通过检测本机的常驻数据,查看此信息是否来自于合法的路由器,防止路由欺骗;
2.通过在服务器的网络中禁用相关的路由来防止这种攻击。
(2)基于RIP攻击
现代计算机网络通常使用动态路由算法,RIP协议是为了对局域网中的节点提供一致路由选择和可达性信息而设计的。
但TCP/IP协议并未要求各节点检查收到信息的真实性,因此,攻击者可能使用RIP特权主机的520端口广播假的路由信息来达到欺骗的目的。
防止RIP攻击的方法是:
禁止路由器被动使用RIP和限制被动使用RIP的范围。
2.IP拒绝服务攻击(Smurf攻击)
基于互联网控制信息包(ICMP)的Smurf攻击是一种强力的拒绝服务攻击方法,主要利用的是IP协议的直接广播特性。
Smurf攻击对被攻击的网络,以及被利用来做扩散器的网络都具有破坏性。
在这种拒绝服务攻击中,主要的角色有:
攻击者、中间代理(也就是所说的扩散器)牺牲品(目标主机)
Smurf攻击仅仅是利用IP路由漏洞的攻击方法。
攻击通常分为以下五步:
(1)锁定一个被攻击的主机(通常是一些Web服务);
(2)寻找可作为中间代理的站点,用来对攻击实施放大;
(3)黑客给中间代理站点的广播地址发送大量的ICMP包(主要是指Pingecho包)。
这些数据包全都以被攻击的主机的IP地址作为IP包的源地址;
(4)中间代理向其所在的子网上的所有主机发送源IP地址欺骗的数据包;
(5)中间代理主机对被攻击的网络进行响应。
防止网络遭受Smurf攻击:
1.千万不能让网络里的人发起这样的攻击。
在Smurf攻击中,有大量的源欺骗的IP数据包离开了第一个网络。
通过在路由器上使用输出过滤,就可以滤掉这样的包,从而阻止从网络中发起的Smurf攻击。
在路由器上增加这类过滤规则的命令是:
Access-list100permitIP{网络号}{网络子网掩码}anyAccess-list100denyIPanyany;
在局域网的边界路由器上使用这一访问列表的过滤规则,就可以阻止网络上的任何人向局域网外发送这种源欺骗的IP数据包。
2.停止网络作为中间代理。
如果没有必须要向外发送广播数据包的情况,就可以在路由器的每个接口上设置禁止直接广播,命令如下:
noipdirected-broadcast;
3.如果网络比较大,具有多个路由器,那么可以在边界路由器上使用以下命令:
ipverifyunicastreverse-path;
让路由器对具有相反路径的ICMP欺骗数据包进行校验,丢弃那些没有路径存在的包。
最好是运行Cisco快速转发(CEF),或者其它相应的软件。
这是因为在路由器的CEF表中,列出了该数据包所到达网络接口的所有路由项,如果没有该数据包源IP地址的路由,路由器将丢弃该数据包。
例如,路由器接收到一个源IP地址为1.2.3.4的数据包,如果CEF路由表中没有为IP地址1.2.3.4提供任何路由(即反向数据包传输时所需的路由),则路由器会丢弃它。
3.ARP欺骗
TCP/IP中使用的地址转换协议ARP,主要解决32位的IP地址和物理地址的互相转换问题。
在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在国际范围内唯一标识主机的一种逻辑地址。
为了让报文在物理网上传送,还必须知道相应的物理地址,我们就存在把互联网地址变换为物理地址的地址转换问题。
以以太网为例,在进行报文发送时,如果源网络层给的报文只有IP地址,而没有对应的以太网地址,则网络层广播ARP请求以获取目的站信息,而目的站必须回答该ARP请求。
这样源站点可以收到以太网48位地址,并将地址放入相应的高速缓存(cache)。
下一次源站点对同一目的站点的地址转换可直接引用高速缓存中的地址内容。
地址转换协议ARP使主机只需给出目的主机的IP地址就可以找出同一物理网络中任一个物理主机的物理地址。
由于cache中的数据通常几分钟后就会过期,攻击者就可以伪造IP-物理地址联系,并且可以使用不工作主机的IP地址。
一旦cache中的数据过期,攻击者便可入侵信任服务器。
ARP欺骗防范:
1、在winxp下输入命令:
arp-s
gate-way-ip
gate-way-mac固化arp表,阻止arp欺骗。
2、通过查询IP--MAC对应表
(1)不要把网络安全信任关系建立在IP基础上或MAC基础上,理想的关系应该建立在IP+MAC基础上。
(2)设置静态的MAC-->
IP对应表,不要让主机刷新设定好的转换表。
(3)除非很有必要,否则停止使用ARP,将ARP作为永久条目保存在对应表中。
(4)使用ARP服务器。
通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。
确保这台ARP服务器不被黑。
(5)使用"
proxy"
代理IP的传输。
(6)使用硬件屏蔽主机。
设置好的路由,确保IP地址能到达合法的路径。
(7)管理员定期用响应的IP包中获得一个rarp请求,然后检查ARP响应的真实性
(8)管理员定期轮询,检查主机上的ARP缓存。
(9)使用防火墙连续监控网络。
注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。
4.网际控制报文协议攻击(PingofDeath攻击)
ICMP即Internet控制消息协议。
用于在IP主机、路由器之间传递控制消息。
控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
Ping就是最常用的基于ICMP的服务。
ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。
比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“PingofDeath”攻击。
“PingofDeath”攻击的原理是:
利用IP广播发送伪造的ICMP回应请求包,向目标主机长时间、连续、大量地发送ICMP数据包,使得目标主机耗费大量的CPU资源处理。
如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
对于“PingofDeath”攻击,可以采取两种方法进行防范:
(1)路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内。
这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;
(2)在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。
2.3传输层上的攻击与防范
1.TCP连接欺骗(IP欺骗)
IP协议在互联网络之间提供无连接的数据包传输。
IP协议根据IP头中的目的地址项来发送IP数据包。
也就是说,IP路由IP包时,对IP头中提供的源地址不作任何检查,并且认为IP头中的源地址即为发送该包的机器的IP地址。
这样,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
其中最重要的就是利用IP欺骗引起的各种攻击。
以防火墙为例,一些网络的防火墙只允许网络信任的IP数据包通过。
但是由于IP地址不检测IP数据包中的IP源地址是否为发送该包的源主机的真实地址,攻击者可以采用IP源地址欺骗的方法来绕过这种防火墙。
另外有一些以IP地址作为安全权限分配依据的网络应用,攻击者很容易使用IP源地址欺骗的方法获得特权,从而给被攻击者造成严重的损失。
事实上,每一个攻击者都可以利用IP不检验IP头源地址的特点,自己填入伪造的IP地址来进行攻击,使自己不被发现。
基于IP欺骗的防范方法有:
(1)抛弃基于地址的信任策略;
(2)进行包过滤。
如果网络是通过路由器接入Internet的,那么可以利用路由器来进行包过滤。
确认只有内部LAN可以使用信任关系,而内部LAN上的主机对于LAN以外的主机要慎重处理。
路由器可以过滤掉所有来自于外部而希望与内部建立连接的请求;
(3)使用加密技术。
阻止IP欺骗的一种简单的方法是在通信时要求加密传输和验证。
当有多种手段并存时,加密方法可能最为适用。
2.SYNFlood攻击
TCP是基于连接的。
为了在主机A和B之间传送TCP数据,必须先通过3次握手机制建立一条TCP连接。
若A为连接方、B为响应方,则连接建立过程如下:
首先,连接方A发送一个包含SYN标志的TCP报文(即同步报文)给B,SYN报文会指明连接方A使用的端口以及TCP连接的初始序号X;
随后,响应方B在收到连接方A的SYN报文后,返回一个SYN+ACK的报文(其中SYN是自己的初始序号Y,ACK为确认号X+1,表示客户端的请求被接受,正在等待下一个报文)。
最后,连接方A也返回一个确认报文ACK(序列号y+1)给响应方B。
到此一个TCP连接完成。
在连接过程中,可能受到的威胁如下:
攻击者监听B方发出的SYN+ACK报文,然后向B方发送RST包。
接着发送SYN包,假冒A方发起新的连接。
B方响应新连接,并发送连接响应报文SYN+ACK。
攻击者再假冒A方对B方发送ACK包。
这样攻击者便达到了破坏连接的作用。
若攻击者再趁机插入有害数据包,则后果更严重。
例如,在TCP的3次握手中,假设1个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(即第3次握手无法完成),这种情况下服务器端一般会再次发送SYN+ACK给客户端,并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYNTimeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);
1个用户出现异常导致服务器的一个线程等待1分钟并不是什么大问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。
服务器端将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求,此时从正常客户的角度看来,服务器失去响应,这种情况我们称作服务器端受到了SYNFlood攻击。
如下图所示
SYN-Flooding攻击示意图
对于SYNFlood攻击,可以从以下几个方面加以防范:
(1)对系统设定相应的内核参数,使得系统强制对超时的SYN请求连接数据包复位,同时通过缩短超时常数和加长等候队列使得系统能迅速处理无效的SYN请求数据包;
(2)建议在该网段的路由器上做些配置的调整,这些调整包括限制SYN半开数据包的流量和个数;
(3)建议在路由器的前端做必要的TCP拦截,使得只有完成TCP三次握手过程的数据包才可进入该网段,这样可以有效的保护本网段内的服务器不受此类攻击。
2.4应用层上的攻击与防范
DNS欺骗
当主机需要将一个域名转化为IP地址时,它会向某DNS服务器发送一个查询请求。
同样道理,将IP地址转化为域名时,可发送一个反查询请求。
这样,一旦DNS服务器中的数据被修改破坏,DNS欺骗就会产生。
因为网络上的主机都信任DNS服务器,所以一个被破坏的DNS服务器就可以将客户引导到非法的服务器,从而就可以使某个IP地址产生IP欺骗。
防范方法有:
1.直接用IP访问重要的服务,这样至少可以避开DNS欺骗攻击,这种方式简单,但有时不现实;
2.在主机上保留一个域名和相应IP地址的数据库,至少要保留信任主机的相关信息,同时使用交叉查询的方法来杜绝攻击的发生;
3.加密所有对外的数据流,对服务器来说就是使用SSH之类的有加密支持的协议,对一般用户应该用PGP之类的软件加密所有发到网络上的数据。
第三章
测试TCP/IP协议
安装网络硬件和网络协议之后,一般要进行TCP/IP协议的测试工作,应从局域网和互联网两个方面测试,以下是利用命令行测试TCP/IP配置的步骤:
1、单击“开始”/“运行”,输入CMD按回车,打开命令提示符窗口。
2、首先检查IP地址、子网掩码、默认网关、DNS服务器地址是否正确,输入命令ipconfig/all,按回车。
此时显示了网络配置,观查是否正确。
3、输入ping127.0.0.1,观查网卡是否能转发数据,如果出现“Requesttimedout”,表明配置差错或网络有问题。
界面不通有两种情况,一是该计算机不存在或没接网线,二是该计算机安装了防火墙并设置为不允许ping。
4、Ping一个互联网地址,如ping202.102.128.68,看是否有数据包传回,以验证与互联网的连接性。
5、Ping一个局域网地址,观查与它的连通性。
6、用nslookup测试DNS解析是否正确,输入如nslookup,查看是否能解析。
如果计算机通过