在配置WAF(Web Application Firewall)以获取访问者的真实源IP时,可以采用多种方法,以下是一些常见的方法及其详细实现方式:
通过HTTP头部字段获取真实源IP
1、X-Forwarded-For
介绍:这是最常见的方法之一,通常由代理服务器或负载均衡器在HTTP头部中添加X-Forwarded-For字段,记录客户端的真实IP。
格式:X-Forwarded-For: client_ip, proxy1_ip, proxy2_ip, ...
实现:
ASP:Request.ServerVariables("HTTP_X_FORWARDED_FOR")
**C# (ASP.NET)**:Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
PHP:$_SERVER["HTTP_X_FORWARDED_FOR"]
JSP:request.getHeader("HTTP_X_FORWARDED_FOR")
Tomcat:可以在server.xml文件中的AccessLogValve日志记录功能部分增加“%{X-Forwarded-IP}i”来记录真实IP。
2、X-Real-IP
介绍:某些WAF服务提供X-Real-IP变量来获取客户端的真实IP,考虑了多层反向代理对该变量的修改。
实现:
ASP:Request.ServerVariables("HTTP_X_REAL_IP")
**C# (ASP.NET)**:Request.ServerVariables["HTTP_X_REAL_IP"]
PHP:$_SERVER["HTTP_X_REAL_IP"]
JSP:request.getHeader("HTTP_X_REAL_IP")
通过负载均衡器和高防系统获取真实源IP
1、L3层一次连接模式
介绍:负载均衡器不对源IP进行修改,直接将数据包转发给后端,后端接收到的数据包中的源IP即为真实IP。
实现:LVS-DR、LVS-NAT、LVS-TUNNEL模式,其中LVS-TUNNEL模式在数据包前封装了IP头,解封装后即可获得真实IP。
2、L3层二次连接模式
介绍:负载均衡器与后端重新进行三次握手,但保持数据包的源IP为真实IP。
实现:需要haproxy(开启tproxy透明代理模式)+ iptables(fwmark打标记)+ 策略路由组合使用。
3、L4层的toa模式
介绍:在TCP/UDP的option字段里增加源IP信息。
实现:负载均衡器配置lvs-fullnat或iqiyi/dpvs,后端加载toa/uoa模块。
4、L4层的proxy protocol模式
介绍:在L7层开头增加proxy protocol数据,该协议有v1和v2版本。
实现:负载均衡器和后端同时开启proxy protocol,如haproxy和nginx。
5、华为高防提供的TOA模块
介绍:华为高防通过TOA模块获取高防转发后流量的真实源IP。
实现:安装并配置TOA模块,编译安装后即可获取真实源IP。
通过CDN绕过获取真实源IP
1、利用邮件和网站漏洞
介绍:通过注册时发送的邮件查看源代码或标头,或者利用网站漏洞使服务器主动访问预设的web服务器,从而获取真实IP。
实现:查看邮件源代码或利用SSRF等漏洞。
2、查询DNS历史记录
介绍:通过DNS缓存查询查看域名解析的历史记录,可能会找到未使用CDN前的原始服务器IP。
实现:使用DNS缓存查询工具,如dnsdb.io、threatbook.cn等。
3、扫描子域名和特定页面内容
介绍:通过扫描子域名或特定页面内容,查找与目标网站匹配的独特代码片段,从而获取真实IP。
实现:使用空间搜索引擎如钟馗之眼、Shodan、fofa等。
4、全网扫描特定端口的IP
介绍:通过Zmap等工具扫描全网开放特定端口的IP,并与目标网站的特定页面内容进行对比,匹配上则可能是真实IP。
实现:使用Zmap等工具进行全网扫描。
通过上述方法,可以有效地获取经过WAF、CDN、高防等多层代理后的真实源IP,具体选择哪种方法取决于实际的网络架构和需求。
以上就是关于“配置waf获取真实ip_如何获取真实源IP”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/71255.html