频道栏目
首页 > 资讯 > 网站安全 > 正文

如何实时监测分析X-Forwarded-For伪造-简__的博客-51CTO博客

19-05-09        来源:[db:作者]  
收藏   我要投稿

什么是X-Forwarded-For
如果要问当下最走红的应用层协议,当HTTP莫属,一个无状态维护协议,其连接基于TCP,在HTTP协议头部没有IP地址字段。所以,如果要在应用层保存IP地址信息(应用服务器统计访问者信息的主要来源之一),只能通过X-Forwarded-For头部字段来实现。
X-Forwarded-For位于HTTP协议的请求头部,属于HTTP的头部扩展。在HTTP/1.1(RFC 2616)协议规范中并没有对X-Forwarded-For有明确的定义。最开始由著名的代理软件Squid(见https://blog.51cto.com/14267414/www.squid-cache.org)引入,用来传递HTTP请求端的真实IP地址。如今,X-Forwarded-For已成为事实上的标准,各大HTTP代理、负载均衡等转发服务都在广泛使用它,并在RFC 7239(Forwarded HTTP Extension)标准中收录。
下图是X-Forwarded-For格式,越靠近左边的地址距离服务器越远,每经过一层代理就在后面加上该代理地址。X-Forwarded-For信息除了在真实代理环境中被正常使用外,其信息也可以通过伪造形成。
如何实时监测分析X-Forwarded-For伪造
如何获取真实的客户端IP地址
X-Forwarded-For地址可以伪造,那该如何获取客户端真实IP地址呢?
开发层面,在开发语言中能够获取Remote Address,该地址就是真实的客户端IP地址,用来与应用服务器建立TCP连接,该地址无法伪造,如果伪造则连接无法成功建立,继而不会后面的HTTP访问存在。
运维层面,全流量分析系统实时采集和分析TCP五元组,对所有访问服务器的客户端地址统计和记录,并按需显示访问行为特征。
真实的客户端IP地址就是我们常说的TCP三步握手中发起连接请求的IP地址。
X-Forwarded-For伪造访问有什么危害
前面已说过,X-Forwarded-For中IP可以伪造。那么,这种伪造会带来什么危害呢,下面列举几种:

  1. 通过伪造IP地址,绕过后台访问地址限制;
  2. 当前端服务器通过X-Forwarded-For信息判断来访地址时,通过修改X-Forwarded-For信息可实现撞库和爆破;
  3. 恶意爬虫X-Forwarded-For伪造,造成服务器负荷过重,甚至无法正常提供服务;
  4. X-Forwarded-For伪造也可用于某些CTF题目作弊;
  5. 某些点赞投票系统,如果是基于访问者IP地址统计投票数量,那么通过修改X-Forwarded-For地址,可进行刷票行为;
  6. 还有更多…
    如何实时分析X-Forwarded-For伪造访问
    既然X-Forwarded-For伪造危害如此之大,在系统运维和安全防御中该如何实时分析和发现呢就显得尤为重要。
    对于X-Forwarded-For伪造行为的监测分析主要从2个层面进行。
    首先,获知IP与应用系统之间的连接信息,这里的IP地址为上文中提及的Remote Address,即真实IP地址,伪造地址的客户端连接服务器的数量会明显高于其它地址的对象。
    下图显示服务器在一段时间内的运行状况,其中连接的IP地址信息部分,显示连接服务器最多的IP地址信息。
    如何实时监测分析X-Forwarded-For伪造
    其次,查看该地址访问系统的应用信息,网深科技全流量分析系统可自动发现该地址伪造的IP地址及这些伪造地址访问的应用内容信息。
    如何实时监测分析X-Forwarded-For伪造
    随机打开上图中任意一个应用访问数据包,即可查看真实的访问信息。
    如何实时监测分析X-Forwarded-For伪造
    或者使用一键导出内容功能,在文本编辑工具打开查看。
    下图为另一个X-Forwarded-For伪造访问例子。
    如何实时监测分析X-Forwarded-For伪造
    如何防御
    鉴于X-Forwarded-For伪造存在诸多危害,其防御工作绝对不可轻视。以下是X-Forwarded-For伪造行为的主流防御方法,供参考。
    ● 直接对外提供服务的 Web 应用,为了安全起见,只能通过 Remote Address 获取 IP,不能相信任何HTTP请求头部信息;
    ● 使用了 Nginx 等 Web服务器反向代理的 Web 应用,在配置正确的前提下,要用 X-Forwarded-For 最后一节 或 X-Real-IP 来获取 IP(因为 Remote Address 得到的是 Nginx 所在服务器的内网 IP);同时还应该禁止 Web 应用直接对外提供服务;
    ● 在某些特定应用场景,例如通过IP地址显示所在区域天气等,可从 X-Forwarded-For 靠前的位置获取 IP,但必须需要校验 IP 格式合法性。
    目前很多Web 应用(例如获取用户所在地区,基于 IP 做访问频率控制,禁止某些IP访问等等),为了获取用户真正的 IP,如果从 HTTP 请求头中获取 IP地址。这些情况下,必须确保获取到的IP地址是真实可靠的。
    文中使用的工具除Wireshark外,还有网深科技全流量分析系统,该系统通过旁路采集网络流量,实时解码2-7层协议信息,智能分析所有应用系统访问情况,精确发现异常X-Forwarded-For伪造行为。
    获取更多信息咨询,请关注微信公众号“数字化性能管理”。
    关于网深科技,请点击查看www.netinside.com.cn
相关TAG标签
上一篇:解决nginx无法下载大文件问题-124dsf的博客-51CTO博客
下一篇:MYSQL-服务器选项和服务器变量-wx5c05455f3fc32的博客-51CTO博客
相关文章
热门专题推荐 vmware win7激活工具 win10激活工具 excel word office激活 小马激活工具 重装系统 数据恢复 u盘启动工具
图文推荐
文章
推荐
热门新闻

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站