本文目录一览:
- 1、服务器遭受大量ACK攻击如何解决
- 2、http抓包工具能模拟目标地址服务器向请求方发送响应么?
- 3、你的服务器被人攻击了黑客把他的程序伪装成服务器上正常的工具程序如何找到这
- 4、ARP欺骗包是怎么回事?该如何解决?
服务器遭受大量ACK攻击如何解决
拒绝服务攻击(Denial of Service,DoS)是目前比较有效而又非常难于防御的一种网络攻击方式,它的目的就是使服务器不能够为正常访问的用户提供服务。所以,DoS对一些紧密依靠互联网开展业务的企业和组织带来了致命的威胁。
SYN Flood是最为有效和流行的一种DoS攻击形式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的资源,从而不能够为正常用户提供服务。
1.1 TCP连接建立的过程
要掌握SYN Flood攻击的基本原理,必须先介绍TCP的三次握手机制。
TCP三次握手过程如下:
1)客户端向服务器端发送一个SYN置位的TCP报文,包含客户端使用的端口号和初始序列号x;
2)服务器端收到客户端发送来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号为x+1和服务器的初始序列号y;
3)
TCP客户端
客户端端口
(1024-65535)
TCP服务器端
服务器端口
(1-1023)
SYN
SYN/ACK
ACK
客户端收到服务器返回的SYN+ACK报文后,向服务器返回一个确认号为y+1序号为x+1的ACK报文,一个标准的TCP连接完成。如图1所示:
1.2 攻击原理
在SYN Flood攻击中,黑客机器向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYN+ACK包,并等待源端返回ACK包,如图2所示。由于源地址是伪造的,所以源端永远都不会返回ACK报文,受害主机继续发送SYN+ACK包,并将半连接放入端口的积压队列中,虽然一般的主机都有超时机制和默认的重传次数,但是由于端口的半连接队列的长度是有限的,如果不断的向受害主机发送大量的TCP SYN报文,半连接队列就会很快填满,服务器拒绝新的连接,将导致该端口无法响应其他机器进行的连接请求,最终使受害主机的资源耗尽。
TCP客户端
客户端端口
(1024-65535)
TCP服务器端
服务器端口
(1-1023)
SYN
SYN/ACK
伪造源地址
2 几种防御技术
SYN Flood攻击给互联网造成重大影响后,针对如何防御SYN Flood攻击出现了几种比较有效的技术。
2.1 SYN-cookie技术
一般情况下,当服务器收到一个TCP SYN报文后,马上为该连接请求分配缓冲区,然后返回一个SYN+ACK报文,这时形成一个半连接。SYN Flood正是利用了这一点,发送大量的伪造源地址的SYN连接请求,而不完成连接。这样就大量的消耗的服务器的资源。
SYN-cookie技术针对标准TCP连接建立过程资源分配上的这一缺陷,改变了资源分配的策略。当服务器收到一个SYN报文后,不立即分配缓冲区,而是利用连接的信息生成一个cookie,并将这个cookie作为将要返回的SYN+ACK报文的初始序列号。当客户端返回一个ACK报文时,根据包头信息计算cookie,与返回的确认序列号(初始的序列号+1)的前24位进行对比,如果相同,则是一个正常连接,然后,分配资源,建立连接。
该技术的巧妙之点在于避免了在连接信息未完全到达前进行资源分配,使SYN Flood攻击的资源消耗失效。实现的关键之处在于cookie的计算。cookie的计算应该做到包含本次连接的状态信息,使攻击者不能伪造cookie。cookie的计算过程如下:
1)服务器收到一个SYN包后,计算一个消息摘要mac:
mac = MAC(A,k);
MAC是密码学中的一个消息认证码函数,也就是满足某种安全性质的带密钥的hash函数,它能够提供cookie计算中需要的安全性。
A为客户和服务器双方的IP地址和端口号以及参数t的串联组合:
A = SOURCE_IP || SOURCE_PORT || DST_IP || DST_PORT || t
K为服务器独有的密钥;
时间参数t为32比特长的时间计数器,每64秒加1;
2)生成cookie:
cookie = mac(0:24):表示取mac值的第0到24比特位;
3)设置将要返回的SYN+ACK报文的初始序列号,设置过程如下:
i. 高24位用cookie代替;
ii. 接下来的3比特位用客户要求的最大报文长度MMS代替;
iii. 最后5比特位为t mod 32。
客户端收到来自服务器SYN+ACK报文后,返回一个ACK报文,这个ACK报文将带一个cookie(确认号为服务器发送过来的SYN ACK报文的初始序列号加1,所以不影响高24位),在服务器端重新计算cookie,与确认号的前24位比较,如果相同,则说明未被修改,连接合法,然后,服务器完成连接的建立过程。
SYN-cookie技术由于在连接建立过程中不需要在服务器端保存任何信息,实现了无状态的三次握手,从而有效的防御了SYN Flood攻击。但是该方法也存在一些弱点。由于cookie的计算只涉及了包头的部分信心,在连接建立过程中不在服务器端保存任何信息,所以失去了协议的许多功能,比如,超时重传。此外,由于计算cookie有一定的运算量,增加了连接建立的延迟时间,因此,SYN-cookie技术不能作为高性能服务器的防御手段。通常采用动态资源分配机制,当分配了一定的资源后再采用cookie技术,Linux就是这样实现的。还有一个问题是,当我们避免了SYN Flood攻击的同时,同时也提供了另一种拒绝服务攻击方式,攻击者发送大量的ACK报文,使服务器忙于计算验证。尽管如此,在预防SYN Flood攻击方面,SYN-cookie技术仍然是一种有效的技术。
2.2 地址状态监控的解决方法
地址状态监控的解决方法是利用监控工具对网络中的有关TCP连接的数据包进行监控,并对监听到的数据包进行处理。处理的主要依据是连接请求的源地址。
每个源地址都有一个状态与之对应,总共有四种状态:
初态:任何源地址刚开始的状态;
NEW状态:第一次出现或出现多次也不能断定存在的源地址的状态;
GOOD状态:断定存在的源地址所处的状态;
BAD状态:源地址不存在或不可达时所处的状态。
具体的动作和状态转换根据TCP头中的位码值决定:
1)监听到SYN包,如果源地址是第一次出现,则置该源地址的状态为NEW状态;如果是NEW状态或BAD状态;则将该包的RST位置1然后重新发出去,如果是GOOD状态不作任何处理。
2)监听到ACK或RST包,如果源地址的状态为NEW状态,则转为GOOD状态;如果是GOOD状态则不变;如果是BAD状态则转为NEW状态;如果是BAD状态则转为NEW状态。
3)监听到从服务器来的SYN ACK报文(目的地址为addr),表明服务器已经为从addr发来的连接请求建立了一个半连接,为防止建立的半连接过多,向服务器发送一个ACK包,建立连接,同时,开始计时,如果超时,还未收到ACK报文,证明addr不可达,如果此时addr的状态为GOOD则转为NEW状态;如果addr的状态为NEW状态则转为BAD状态;如果为addr的状态为BAD状态则不变。
状态的转换图如图3所示:
初态
GOOD
NEW
BAD
ACK/RST
SYN
ACK/RST
ACK包确认超时
ACK/RST
ACK包确认超时
下面分析一下基于地址状态监控的方法如何能够防御SYN Flood攻击。
1)对于一个伪造源地址的SYN报文,若源地址第一次出现,则源地址的状态为NEW状态,当监听到服务器的SYN+ACK报文,表明服务器已经为该源地址的连接请求建立了半连接。此时,监控程序代源地址发送一个ACK报文完成连接。这样,半连接队列中的半连接数不是很多。计时器开始计时,由于源地址是伪造的,所以不会收到ACK报文,超时后,监控程序发送RST数据包,服务器释放该连接,该源地址的状态转为BAD状态。之后,对于每一个来自该源地址的SYN报文,监控程序都会主动发送一个RST报文。
2)对于一个合法的SYN报文,若源地址第一次出现,则源地址的状态为NEW状态,服务器响应请求,发送SYN+ACK报文,监控程序发送ACK报文,连接建立完毕。之后,来自客户端的ACK很快会到达,该源地址的状态转为GOOD状态。服务器可以很好的处理重复到达的ACK包。
从以上分析可以看出,基于监控的方法可以很好的防御SYN Flood攻击,而不影响正常用户的连接。
3 小结
本文介绍了SYN Flood攻击的基本原理,然后详细描述了两种比较有效和方便实施的防御方法:SYN-cookie技术和基于监控的源地址状态技术。SYN-cookie技术实现了无状态的握手,避免了SYN Flood的资源消耗。基于监控的源地址状态技术能够对每一个连接服务器的IP地址的状态进行监控,主动采取措施避免SYN Flood攻击的影响。这两种技术是目前所有的防御SYN Flood攻击的最为成熟和可行的技术。
http抓包工具能模拟目标地址服务器向请求方发送响应么?
应时间是一个计算机,显示器成像等多个领域的概念,在网络上,指从空载到负载发生一个步进值的变化时,传感器的响应时间。通常定义为测试量变化一个步进值后,传感器达到最终
你的服务器被人攻击了黑客把他的程序伪装成服务器上正常的工具程序如何找到这
如果服务器被入侵的话可以查询系统日志看下最近时间的登录日志。
当服务器遭到攻击时,可能会导致服务器被攻击者远程控制,服务器的带宽向外发包,服务器被DDoS/CC攻击,系统中木马病毒,服务器管理员账号密码被改等。还有可能导致网站被劫持,首页被篡改,网页被植入脚本木马等。
ARP欺骗包是怎么回事?该如何解决?
补充下
IP欺骗攻击
IP欺骗技术就是通过伪造某台主机的IP地址骗取特权从而进行攻击的技术。许多应用程序认为如果数据包能够使其自身沿着路由到达目的地,而且应答包也可以回到源地,那么源IP地址一定是有效的,而这正是使源IP地址欺骗攻击成为可能的前提。
假设同一网段内有两台主机A、B,另一网段内有主机X。B 授予A某些特权。X 为获得与A相同的特权,所做欺骗攻击如下:首先,X冒充A,向主机 B发送一个带有随机序列号的SYN包。主机B响应,回送一个应答包给A,该应答号等于原序 列号加1。然而,此时主机A已被主机X利用拒绝服务攻击 “淹没”了,导致主机A服务失效。结果,主机A将B发来的包丢弃。为了完成三次握手,X还需要向B回送一个应答包,其应答号等于B向A发送数据 包的序列号加1。此时主机X 并不能检测到主机B的数据包(因为不在同一网段),只有利用TCP顺序号估算法来预测应答包的顺序号并将其发送给目标机B。如果猜测正确,B则认为收到的ACK是来自内部主机A。此时,X即获得了主机A在主机B上所享有的特权,并开始对这些服务实施攻击。
要防止源IP地址欺骗行为,可以采取以下措施来尽可能地保护系统免受这类攻击:
·抛弃基于地址的信任策略: 阻止这类攻击的一种非常容易的办法就是放弃以地址为基础的验证。不允许r类远程调用命令的使用;删除.rhosts 文件;清空/etc/hosts.equiv 文件。这将迫使所有用户使用其它远程通信手段,如telnet、ssh、skey等等。
·使用加密方法: 在包发送到 网络上之前,我们可以对它进行加密。虽然加密过程要求适当改变目前的网络环境,但它将保证数据的完整性和真实性。
·进行包过滤:可以配置路由器使其能够拒绝网络外部与本网内具有相同IP地址的连接请求。而且,当包的IP地址不在本网内时,路由器不应该把本网主机的包发送出去。
有一点要注意,路由器虽然可以封锁试图到达内部网络的特定类型的包。但它们也是通过分析测试源地址来实现操作的。因此,它们仅能对声称是来自于内部网络的外来包进行过滤,若你的网络存在外部可信任主机,那么路由器将无法防止别人冒充这些主机进行IP欺骗。
ARP欺骗攻击
在局域网中,通信前必须通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)。ARP协议对网络安全具有重要的意义,但是当初ARP方式的设计没有考虑到过多的安全问题,给ARP留下很多的隐患,ARP欺骗就是其中一个例子。而ARP欺骗攻击就是利用该协议漏洞,通过伪造IP地址和MAC地址实现ARP欺骗的攻击技术。
我们假设有三台主机A,B,C位于同一个交换式局域网中,监听者处于主机A,而主机B,C正在通信。现在A希望能嗅探到B-C的数据, 于是A就可以伪装成C对B做ARP欺骗——向B发送伪造的ARP应答包,应答包中IP地址为C的IP地址而MAC地址为A的MAC地址。 这个应答包会刷新B的ARP缓存,让B认为A就是C,说详细点,就是让B认为C的IP地址映射到的MAC地址为主机A的MAC地址。 这样,B想要发送给C的数据实际上却发送给了A,就达到了嗅探的目的。我们在嗅探到数据后,还必须将此数据转发给C, 这样就可以保证B,C的通信不被中断。
以上就是基于ARP欺骗的嗅探基本原理,在这种嗅探方法中,嗅探者A实际上是插入到了B-C中, B的数据先发送给了A,然后再由A转发给C,其数据传输关系如下所示:
B--A--C
B--A--C
于是A就成功于截获到了它B发给C的数据。上面这就是一个简单的ARP欺骗的例子。
ARP欺骗攻击有两种可能,一种是对路由器ARP表的欺骗;另一种是对内网电脑ARP表的欺骗,当然也可能两种攻击同时进行。但不管怎么样,欺骗发送后,电脑和路由器之间发送的数据可能就被送到错误的MAC地址上。
防范ARP欺骗攻击可以采取如下措施:
·在客户端使用arp命令绑定网关的真实MAC地址命令
·在交换机上做端口与MAC地址的静态绑定。
·在路由器上做IP地址与MAC地址的静态绑定
·使用“ARP SERVER”按一定的时间间隔广播网段内所有主机的正确IP-MAC映射表。
DNS欺骗攻击
DNS欺骗即域名信息欺骗是最常见的DNS安全问题。当一个DNS服务器掉入陷阱,使用了来自一个恶意DNS服务器的错误信息,那么该DNS服务器就被欺骗了。DNS欺骗会使那些易受攻击的DNS服务器产生许多安全问题,例如:将用户引导到错误的互联网站点,或者发送一个电子邮件到一个未经授权的邮件服务器。网络攻击者通常通过以下几种方法进行DNS欺骗。
(1)缓存感染
黑客会熟练的使用DNS请求,将数据放入一个没有设防的DNS服务器的缓存当中。这些缓存信息会在客户进行DNS访问时返回给客户,从而将客户引导到入侵者所设置的运行木马的Web服务器或邮件服务器上,然后黑客从这些服务器上获取用户信息。
(2)DNS信息劫持
入侵者通过监听客户端和DNS服务器的对话,通过猜测服务器响应给客户端的DNS查询ID。每个DNS报文包括一个相关联的16位ID号,DNS服务器根据这个ID号获取请求源位置。黑客在DNS服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站。
(3)DNS重定向
攻击者能够将DNS名称查询重定向到恶意DNS服务器。这样攻击者可以获得DNS服务器的写权限。
防范DNS欺骗攻击可采取如下措施:
·直接用IP访问重要的服务,这样至少可以避开DNS欺骗攻击。但这需要你记住要访问的IP地址。
·加密所有对外的数据流,对服务器来说就是尽量使用SSH之类的有加密支持的协议,对一般用户应该用PGP之类的软件加密所有发到网络上的数据。这也并不是怎么容易的事情。
源路由欺骗攻击
通过指定路由,以假冒身份与其他主机进行合法通信或发送假报文,使受攻击主机出现错误动作,这就是源路由攻击。在通常情况下,信息包从起点到终点走过的路径是由位于此两点间的路由器决定的,数据包本身只知道去往何处,但不知道该如何去。源路由可使信息包的发送者将此数据包要经过的路径写在数据包里,使数据包循着一个对方不可预料的路径到达目的主机。下面仍以上述源IP欺骗中的例子给出这种攻击的形式:
主机A享有主机B的某些特权,主机X想冒充主机A从主机B(假设IP为aaa.bbb.ccc.ddd)获得某些服务。首先,攻击者修改距离X最近的路由器,使得到达此路由器且包含目的地址aaa.bbb.ccc.ddd的数据包以主机X所在的网络为目的地;然后,攻击者X利用IP欺骗向主机B发送源路由(指定最近的路由器)数据包。当B回送数据包时,就传送到被更改过的路由器。这就使一个入侵者可以假冒一个主机的名义通过一个特殊的路径来获得某些被保护数据。
为了防范源路由欺骗攻击,一般采用下面两种措施:
·对付这种攻击最好的办法是配置好路由器,使它抛弃那些由外部网进来的却声称是内部主机的报文。
·在路由器上关闭源路由。用命令no ip source-route。