APP下载

利用X-Forwarded-For伪造客户端IP漏洞成因及防护

2020-06-11李治城

电子技术与软件工程 2020年3期
关键词:代理服务器服务端IP地址

李治城

(山西农业大学软件学院 山西省太谷县 030800)

随着科学技术的不断发展,互联网技术也得到了飞速发展,但因此,逐渐暴露出传统互联网技术相关问题,最为突出的就是IP地址伪造。随着互联网的广泛使用,每一种设备均能使用IP地址伪造技术,最终实现自身的目标,为使得互联网安全得到有效的保证,如今对IP地址伪造、防御机制的相关研究就显得较为重要。在Web应用开发中,经常会需要获取客户端IP地址。一个典型的例子就是投票系统,为了防止刷票,需要限制每个IP地址只能投票一次。伪造IP的作用只局限于想象力,简单的能刷投票,复杂包括黑服务器,绕过IP限制抓取后端数据,或者模拟测试看服务端承压能力如何。

1 伪造IP地址的网络攻击

对于各种IP地址伪造行为,并不是均可以对互联网发起进攻,从对互联网的危害程度来看,具有危害相对较小的就是单纯的IP地址伪造行为,相反,对互联网带来严重影响的就是基于对IP地址伪造的基础上进行的网络攻击。

1.1 拒绝服务攻击

在链接初始化的阶段,需要一次三次握手来建立链接,之后客户端和服务端会依据初始的这个IP地址来通信。从这个角度上来说,想真正的伪装一个IP地址是不可能的。因为即使从链路层把IP地址改了,后续发出去的请求也回不来,除非你只是想用来作为DOS攻击,这一模式中的攻击者会对被攻击目标资源进行消耗,且是经过了伪造IP地址的消耗,由此在很大程度上限制了攻击者实际服务能力,通常来讲就造成被攻击者不能完成其任务。然而,在互联网防御技术的快速发展中,仅仅通过DOS攻击,不会对受攻击者造成较为严重的影响,只有当攻击目标信息代价非常的大,不然的话对于DOS攻击所占据的资源量而言,占据比例相对较小,不会对受害者造成大的威胁。目前来看,SYN flooding攻击为此类攻击中最为常见的一种。然而,这不等于每一种DOS攻击均不对受攻击对象带了严重的打击,DDOS是DOS攻击之一,具有相对较高的攻击性。但是两者具有相同的攻击模式,对于DDOS来讲,其可以基于互联网基础上,实现对大量计算机的有效控制,同时,计算机对受攻击者进行信息的发送,由此造成受攻击目标的通信链路得以占领,最后造成受攻击者不能将自己的服务得以完成。在IP地址伪造的DDOS攻击中,受害者不能将供给准确位置得以发现,不能从来源角度上,实现对周围网关通信链路的关闭,攻击始终存在。

1.2 IP欺骗攻击

图1:IP欺骗攻击

图2:中间层代理服务器的环境

如图1所示,欺骗攻击通过IP 地址的伪装使得特定主机能够伪装另外的主机,而这台主机往往具有某种特权或者被其他主机所信任。假设现在有一个合法用户(1.1.1.1)已经同服务器建立正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP 为1.1.1.1,并向服务器发送一个带有RSI位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。虽然IP地址欺骗攻击有着相当难度,但我们应该清醒地意识到,这种攻击非常广泛,入侵往往从这种攻击开始。IP地址被用来在网络和计算机之间发送及接收信息,因此,每个信息包里都包含了IP地址,这样双方才能发送到正确的对方,对方也才能知道来源是正确的。当IP欺骗被使用的时候,信息包里面的就不再是真实的IP,取而代之的是伪造的IP地址,这样,看上去包就是由那个IP发出的,如果对方回复这个信息,那么数据将会被发送到伪造的IP上,除非黑客重定向该信息到一个真实的IP上。

2 获取客户端IP及防护手段

对于整个互联网通讯来讲,为了达到双向传播的目的,信息发送发要对网络所分配的IP地址进行如实的填写,在这一情况下,方可确定信息发送方具体位置,从未进行信息反馈。网络攻击就会随意的修改IP地址,我们将这一现象称之为IP地址伪造。从我国当下的互联网了解到,不具备自动过滤伪造IP的功能,所以,通常而言要想使得发送的地址达到目的地,那么可以进行伪造IP 地址。IP地址伪造经常存在于网络攻击中,因此无法得到攻击行为真正起源,且不可以进行有效防护,与此同时,在攻击之后不能快速的确定攻击者。因此,为了保证网络安全性,就必须将IP地址伪造问题得到解决。

图3:利用burp伪造IP

图4:获取伪造后的IP

2.1 获取客户端IP

在Java中,获取客户端IP最直接的方式就是获取到连接服务器的客户端IP,在中间没有代理的情况下,的确是最简单有效的方式。但是目前互联网Web应用很少会将应用服务器直接对外提供服务,一般都会有一层Nginx做反向代理和负载均衡,有的甚至可能有多层代理。HTTP协议是基于TCP协议的,上述方法获取到的是TCP层直接连接的客户端的IP,对于Web应用服务器来说直接连接它的客户端实际上是Nginx,也就是TCP层是拿不到真实客户端的IP。当用户请求经过CDN 后到达 Nginx 负载均衡服务器时,其 XFF 头信息应该为“客户端IP,CDN的IP”。如图2所示。

为了解决上面的问题,很多HTTP代理会在HTTP协议头中添加X-Forwarded-For头,用来追踪请求的来源。X-Forwarded-For的格式如下:

X-Forwarded-For:client1,proxy1,proxy2

X-Forwarded-For包含多个IP地址,每个值通过逗号+空格分开,最左边(client1)是最原始客户端的IP地址,中间如果有多层代理,每一层代理会将连接它的客户端IP追加在X-Forwarded-For右边。下面就是一种常用的获取客户端真实IP的方法,首先从HTTP头中获取X-Forwarded-For,如果X-Forwarded-For头存在就按逗号分隔取最左边第一个IP地址。

一般的客户端(例如浏览器)发送HTTP请求是没有X-Forwarded-For头的,当请求到达第一个代理服务器时,代理服务器会加上X-Forwarded-For请求头,并将值设为客户端的IP地址(也就是最左边第一个值),后面如果还有多个代理,会依次将IP追加到X-Forwarded-For头最右边,最终请求到达Web应用服务器,应用通过获取X-Forwarded-For头取左边第一个IP即为客户端真实

IP。

但是如果客户端在发起请求时,请求头上带上一个伪造的X-Forwarded-For,由于后续每层代理只会追加而不会覆盖,那么最终到达应用服务器时,获取的左边第一个IP地址将会是客户端伪造的IP。

2.2 防范手段

在链接初始化的阶段,需要一次三次握手来建立链接,之后客户端和服务端会依据初始的这个IP地址来通信。从这个角度上来说,想真正的伪装一个IP地址是不可能的。因为即使从链路层把IP地址改了,后续发出去的请求也回不来,伪造IP的思路是通过修改 Header 来实现增加 XFF 字段。

2.2.1 在直接对外的Nginx反向代理服务器上配置

proxy_set_header X-Forwarded-For $remote_addr;

这里使用$remote_addr替代上面的$proxy_add_x_forwarded_for。$proxy_add_x_forwarded_for会在原有X-Forwarded-For上追加IP,这就相当于给了伪造X-Forwarded-For的机会。而$remote_addr是获取的是直接TCP连接的客户端IP,这个是无法伪造的,即使客户端伪造也会被覆盖掉,而不是追加。

需要注意的是,如果有多层代理,那么只要在直接对外访问的Nginx上配置X-Forwarded-For为$remote_addr,内部层的Nginx还是要配置为$proxy_add_x_forwarded_for,不然内部层的Nginx又会覆盖掉客户端的真实IP。

2.2.2 遍历X-Forwarded-For头中的IP地址

和上面方法不同的是,不是直接取左边第一个IP,而是从右向左遍历。遍历时可以根据正则表达式剔除掉内网IP和已知的代理服务器本身的IP(例如192.168开头的),那么拿到的第一个非剔除IP就会是一个可信任的客户端IP。这种方法的巧妙之处在于,即时伪造X-Forwarded-For,那么请求到达应用服务器时,伪造的IP也会在X-Forwarded-For值的左边,从右向左遍历就可以避免取到这些伪造的IP地址。

3 结论

目前,使用伪造源地址发起网络攻击的行为普遍存在于互联网当中。且该行为存在发动较易、查找困难的特点,为了尽可能的将攻击造成的危害得到减小,对于攻击的制止、身份的确定就显得非常重要。IP地址伪造严重影响了互联网安全,因此,对IP地质伪造防护技术的进一步研究对增强网络安全性至关重要。从获取IP的基本手段到对外的Nginx反向代理服务器上配置和遍历X-Forwarded-For头中的IP地址两个防范手段进行了说明,旨在促进互联网安全性的进一步提升。

猜你喜欢

代理服务器服务端IP地址
铁路远动系统几种组网方式IP地址的申请和设置
地铁信号系统中代理服务器的设计与实现
云存储中基于相似性的客户-服务端双端数据去重方法
新时期《移动Web服务端开发》课程教学改革的研究
IP地址隐藏器
IP地址切换器(IPCFG)
在Windows Server 2008上创建应用
基于SNMP的IP地址管理系统开发与应用
公安网络中IP地址智能管理的研究与思考
摸清黑客套路防范木马侵入