理解TCP/IP防范黑客攻击

时间:2022-09-01 10:01:22

今年春天,一个网吧的老板找到笔者,说他架设的传奇私服遭受到攻击,影响了全网的正常运行。笔者详细了解的经过,大致是这样的,他的传奇程序是网上下载的,这个程序里面包括了如何申请传奇账号的web程序,游戏的服务器端、客户端、后台数据库。游戏服务器是网吧老板自己架设的,用的是windows2000 server。开始时候没事,都比较正常,据说在线用户200多人呢。他后来说有人在qq上跟他说,要他掏2万块钱,不然就攻击他,网吧老板哪里肯干,严辞拒绝了。不久网吧遭到攻击,不光传奇私服完了,在线用户也全部掉线,网吧其他机器上网都特别慢。老板急坏了,只好打电话叫他的互联网接入提供商帮他想办法,提供宽带的接入商只好重新给他换了lP地址,可是没过多久,攻击他的人又找到他的lP地址,继续攻击……。

黑客是用什么方法攻击他的服务器呢?又是如何知道网络管理员的联系方式呢?笔者们不由自主想到了网络安全。事实上网吧遇到的网络问题不仅仅是上面提到的这一个问题,还有比如网速变慢、病毒、木马、信息被监听等等问题。这些问题着实让网吧管理员头疼。本文第一部分主要介绍网吧网速变慢的原因和解决方法。希望通过本文来让大家了解网络安全,也对网吧安全起到一些作用。

其实要了解网络存在的安全隐患,网络管理员就必须知道网络通讯的一些基本原理,这些对预防网络上出现攻击和广播风暴会有很大的帮助。

我们首先来学习一下网络通讯的协议。

其实通讯协议就是主机和主机之间进行数据交换的一种语言,目前因特网和局域网在传输层有两种主要的协议:一种是面向连接的协议,一种是无连接的协议。面向连接的协议主要目的是为了传输的信息可靠到达,通讯双方要对数据的完整性、可靠性校验。这种协议用来做一些关键、准确的传输。而无连接的协议就是对发送出去的数据包不需要确认,发出去就不管了。由于无连接的协议没有验证完整性和可靠性的过程,所以效率会稍微高一些,比如一些视频会议都是用的这种协议,反正丢掉几帧也不会有什么影响。多数的网络通讯都采用TCP/IP协议,其中TCP是传输控制协议,lP是寻址协议。

既然说TCP是一个可靠的协议,他用什么方式来确保可靠性呢,那就是著名的三次握手。笔者们可以用实际生活中打电话来说明TCP的三次握手。下图是一个TCP数据的结构

第一次握手:建立连接时,客户端发送syn包(syn=X)到服务器,并进入SYN_SEND状态,等待服务器确认。举例来说,相当于李四(客户端)给张三(服务器端)拨电话,张三拿起了电话,按了接听键,李四问:“是张三吗?”

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=X+1),同时自己也发送一个SYN包(syn=Y),即SYN+ACK包,此时服务器进入SYN_RECV状态:相当于张三说:我是张三,你是谁?

第三次握手客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=Y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。相当于李四说:“我是李四,我跟你说个事啊……”

完成三次握手,客户端与服务器开始传送数据,就会在上图的顺序号、确认号的位置按照双方约定好的方法进行传输。双方传输结束后,断掉连接,这些也会在标志位有体现。当然这只是最简单的雏形,真正的传输还涉及到很多问题。在上述过程中,还有一些重要的概念需要网吧网管员了解

未连接队列 在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=X)开设一个条目,就比如说张三(服务器)手机多,给他打电话人也多。该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

Backlog参数:表示未连接队列的最大容纳数目。

SYN―ACK重传次数:服务器发送完SYN―ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。

半连接存活时间 是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时笔者们也称半连接存活时间为TImeout时间、SYN_RECV存活时间。

网吧甚至网络的安全问题多数都和TCP协议相关,网络速度变慢是很多网吧存在的普遍现象,归纳起来有2种,一种是人为攻击造成的,一种是网络的广播风暴。笔者们先说攻击。

一、DOS攻击

TCP/IP协议从1980年诞生至今有20多年的时间,期间无数次对协议进行修改,但是协议本身在设计的时候,并没有考虑到安全性问题。举个例子来说:现实生活中,马路上有警察,如果哪些车辆不按照交通规则行驶,警察会作出相应处理,但是网络中没有类似角色,对于DOS攻击来说,好比一些人把车停在马路上,并且不断按喇叭,造成拥堵。

之所以讲TCP传输的过程,是为了让大家了解DOS(拒绝服务)攻击,目前绝大多数DOS攻击都是利用TCP协议3次握手相互确认的过程。从图上看,一个TCP的数据包会有很多标志位,如ACK、SYN、FIN等等,这些标志位就是控制传输状态的,黑客可以通过软件,来伪造一些假冒的传输状态数据包,当然这项数据包不是正常的通讯产生的,而是为了达到攻击目的。DOS攻击中利用SYN攻击占绝大多数,SYN攻击是利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。从上图可看到,服务器接收到连接请求(syn=X),将此信息加入未连接队列,并发送请求包给客户(syn=Y,ack=X+1),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的lP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断地重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

前面笔者提到的网吧游戏服务器由于直接在互联 网,就遭受到SYN攻击。对于SYN攻击的检测,比较方便,网络管理员可以直接使用windows自带的工具就可以,在命令提示符下输入netstat-n-p TCP即可。一般正常的信息如下:

网吧的网管主要是看State下面的状态,如果有很多SYN_RECV状态,并且计算机网卡处于不断接受数据包而不发送数据包的状态,那就要注意了,下面就是一个被攻击机器的状态

网吧中一旦出现DOS攻击所导致的后果就是网速变慢,前面笔者反复提到,TCP协议是一个可靠的协议,网络上的一个主机或者是硬件设备,只要上面跑的是TCP协议,都会对所有连接请求作出应答,但是这些应答都要靠内存来记录连接状态,一台设备的内存毕竟有限,如果记录的这种连接状态太多,那它处理正常业务就会受到影响,具体的体现就是慢。这种慢。可能不仅仅是一台主机慢,根据拓扑结构不同可能会影响到其他主机,因为目前的网络是采用共享介质的网络,介质上跑的攻击数据包会占用大量带宽。一般情况下,标称100M的网络传输达到30兆以上,通讯的数据包就会发生严重碰撞,造成数据重传,所以一旦遭受DOS攻击后果还是比较严重的。

笔者建议网吧管理员做如下防范措施

1.合理规划网络结构,把上网的客户端和对互联网提供服务的服务器分成不同区域。(笔者前面提到的被攻击网吧共有200多计算机,包括客户端全部都是互联网地址,太狠了。)

2.提供互联网服务的机器建议不要直接绑定外网地址,如果有防火墙,可以通过一对一地址转换或者端口镜像的方式向外服务。如果没用防火墙,可以安装单机版网络防火墙,或者利用windows本身提供的TCP/IP筛选功能,开放必要端口。具体开放的端口管理员应该能够掌握。具体设置方法如下打开所有连接,选择相应连接,选择属性,选择tcp协议属性,选择高级,点击选项,点击TCP/IP筛选,选择属性进入如下界面。

3.可以适当修改操作系统的TCP协议栈,因为虽然TCP协议是通用的协议,但是不同的厂商可以对协议栈进行修改,比如限制半连接状态等等,好比一个水桶,笔者就让水桶装2升水,超过2升的水,多于部分就不装了。Windows的TCP协议就可以修改,笔者们可以通过注册表进行修改(点开始,运行,输入regedit)。建议修改如下对于windows2000

上一篇:3G牌照发放 下一篇:度最佳终端评选结果