跳至正文
网络安全

如何调查一个 IP 地址:3 个真实 IP,3 种判定

用 12 个被动步骤调查 IP 地址,并在三个真实 IP 上实际运行:一个 Mullvad 出口判定为 block,一个被 Spamhaus 列入的 AhrefsBot 判定为 step up,一台服务器判定为 allow。

作者GeoIPHub 团队发布于阅读时长阅读约 23 分钟
放大镜下一个发光的节点,五条线连向排成一行的标记,象征调查 IP 地址的各个步骤

2026 年 10 月 19 日 05:34 UTC,我们把三个地址送入同一条流程,得到了三种不同的判定。一个 Mullvad VPN 出口评分为 100,判定为 block。一个经过验证的 AhrefsBot 地址评分为 59,判定为 step_up,因为 Spamhaus 收录了它。一台 DigitalOcean 服务器评分为 12,判定为 allow。而在十一天前,同一个 AhrefsBot 地址的评分是 23,判定为 allow。

下面按顺序介绍这十二项检查、每一步要读取的字段、我们据以行动的阈值、在哪里报告滥用,以及任何 IP 调查的法律边界。

三束光进入同一组过滤器,然后以三条颜色不同的独立路径离开,象征三个 IP 地址分别走向 block、step up 和 allow
一条流程,三个地址,三种判定:block、step up 和 allow。

如何调查一个 IP 地址:三个地址,三种判定

同样的十二个问题把三个地址引向了三种不同的处理方式,而在每种情况下,起决定作用的都是一个信号。以下是来自我们 API 的免密钥查询结果,按所示时间保存,数值未经编辑:

IP它是什么保存时间(UTC)fraud_score、recommended_action起决定作用的信号
185.213.155.73Mullvad 服务器 de-fra-wg-001,法兰克福05:34:30100,block位于 Mullvad 自己的服务器列表中,wireguard_open 触发
5.39.1.230AhrefsBot,位于巴黎的 OVH05:34:3259,step_up经过验证的爬虫,但被列入 Spamhaus ZEN
104.248.50.21DigitalOcean droplet,新泽西州北伯根05:34:3512,allow只是托管,没有滥用或匿名化工具标记

我们的分档是:25 及以下为 allow,50 及以下为 review,75 及以下为 step_up,75 以上为 block。检查的顺序是:可路由性、所有者、网络类型、主机名、匿名化工具、爬虫或扫描器、黑名单、评分、决策、报告、有效期以及法律边界。

中间那一行就是教训所在。经过验证的爬虫仍然可能出现在黑名单上,而我们评分中的爬虫减分并没能让它保持在 allow。

开始之前:保持被动,并记录 IP 出现在哪里

在查询任何内容之前,先记下告警的上下文:带时区的时间戳、它访问的端口或路径,以及它做了什么,例如探测 /wp-admin 或 /.env,或者一连串失败的登录。这些上下文对判定的影响,不亚于任何一次查询。

保持被动:使用查询、注册管理机构和信誉网站,绝不反向扫描该地址。端口扫描可能会惊动主机的运营者,而未经许可扫描某个网络可能违法,或违反您的服务商条款。

第 1 步:它是可路由的公网地址吗?

首先确认该地址究竟能否通过互联网到达您。读取 threat.is_bogon 和 threat.is_cgnat。bogon 是绝不应出现在公共互联网上的地址,例如私有或保留地址段。如果它作为源地址出现在您的互联网边界上,那么您看到的是内部流量、配置错误的代理或伪造的数据包,本流程的其余部分就不适用了。

运营商级 NAT(CGNAT)地址是可路由的,但它是共享的。一个移动或宽带地址可以同时承载数百名用户,因此您对它做出的任何决定都会落到所有这些人身上。

我们的三个地址都返回 is_bogon 为 false、is_cgnat 为 false,因此它们继续进入流程的下一步。

第 2 步:它归谁所有?ASN 与 RDAP

所有者信息来自两条记录:宣告该地址的自治系统(AS),以及该地址块的注册记录。读取 asn.asn、asn.org 和 asn.rpki 了解路由,再读取 whois.org、whois.netname、whois.registered 和 network.abuse_contact 了解注册信息。

IPasn.asn、asn.orgrpkiwhois.orgwhois.netnamewhois.registered
185.213.155.7339351, ESAB-AS - 31173 Services ABvalid31173 Services AB infrastructure in Frankfurt, DE.NET-31173-185-213-155-0-242017-07-19
5.39.1.23016276, OVH - OVH SASvalidFailover IPsOVH-DEDICATED-FO2012-05-15
104.248.50.2114061, DIGITALOCEAN-ASN - DigitalOcean, LLCunknownnonenone2018-08-06

请注意这些记录没有说的内容。Mullvad 服务器的记录中没有任何地方写着"Mullvad":它写的是 31173 Services,也就是运营 Mullvad 网络的公司,而且 whois.has_vpn_keywords 为 false。DigitalOcean 的 whois.org 返回的是"none",因此在这里所有权信息由 ASN 承载。如果您需要背景知识,这里介绍了 ASN 能告诉您关于网络的哪些信息。

当存储的记录信息不足时,就去查源头。注册数据保存在五个区域互联网注册管理机构:ARIN、RIPE NCC、APNIC、LACNIC 和 AFRINIC。IANA 的 RDAP 引导文件会告诉您某个地址段由哪一家管理。RDAP 是 WHOIS 的结构化 JSON 继任者。当我们在 05:43 UTC 打开 RIPE 关于 5.39.1.230 的 RDAP 记录时,它显示的是一个更小的地址块 5.39.1.224/27,其注册组织为 Ahrefs Pte Ltd。我们存储的记录反映的是 OVH 更大的 failover 地址块。以最具体的注册记录为准。

第 3 步:它属于哪类网络?

网络类型为后续的每个信号提供框架,因此要在读取任何信誉数据之前先读取它。相关字段是 asn.asn_type、asn.user_type、asn.connection_type、detection.is_hosting 和 detection.is_mobile。

IPasn_typeuser_typeconnection_typeis_hostingis_mobile
185.213.155.73hostinghostingdatacentertruefalse
5.39.1.230hostingsearch_engine_spiderdatacentertruefalse
104.248.50.21hostinghostingdatacentertruefalse

三个都是托管地址,但只有一个最终判定为 block。托管只是背景,而不是罪证:VPN 出口、爬虫以及您自己的 CI 运行器都位于数据中心。这就是为什么托管 IP 不能证明欺诈。AhrefsBot 的 user_type 为 search_engine_spider,这是第二个地址是爬虫的第一条线索。

第 4 步:它的主机名说明了什么?反向 DNS 与 FCrDNS

反向 DNS 返回地址块所有者设置的主机名,而正向确认的反向 DNS(FCrDNS)会检查该主机名能否解析回同一个 IP。读取 network.ptr_record 和 network.fcrdns_valid,然后自己运行一次检查,因为存储的 PTR 可能落后于实时 DNS。我们在 2026 年 10 月 19 日 05:42 UTC 运行了以下命令:

GeoIPHub API
dig -x 185.213.155.73 +short # no answer dig -x 5.39.1.230 +short # proxy-fr005-cip7.ahrefs.net. dig +short proxy-fr005-cip7.ahrefs.net # 5.39.1.230 dig -x 104.248.50.21 +short # no answer

AhrefsBot 地址在实时检查中通过了 FCrDNS,而 Ahrefs 的机器人说明页面表示,其爬虫主机名总是以 ahrefs.com 或 ahrefs.net 结尾。不过,我们的 API 没有为它存储 PTR,这就是为什么后面会对它触发 no_ptr_datacenter。请以实时运行的结果为准,而不是存储的字段。

DigitalOcean 服务器展示了另一种失败情况。我们的 API 为它存储了一个属于无关第三方的主机名,fcrdns_valid 为 false,并触发了 fcrdns_mismatch 方法。而我们自己运行的 dig -x 根本没有返回 PTR,因此存储的名称已经过时。这样的不匹配是一个弱信号:它是仅有的两个触发方法之一,而该地址的评分仍然只有 12。

第 5 步:它是 VPN、代理、Tor 出口还是中继?

这一步要回答的是:是否有人藏在这个地址背后。读取 detection.is_vpn、is_proxy、is_tor、is_relay、vpn_provider、relay_provider 和 last_seen。

IPis_vpnis_proxyis_toris_relayvpn_providerlast_seen
185.213.155.73truefalsefalsefalseMullvad2026-10-17T20:32:18.000Z
5.39.1.230falsefalsefalsefalsenone2026-10-18T21:40:52.000Z
104.248.50.21falsefalsefalsefalsenone2026-10-18T10:14:47.000Z

Mullvad 服务器被标注了名称,vpn_confidence 为 95,因为它位于 Mullvad 为自家应用公布的服务器列表中。这就是 VPN IP 如何与其服务商对应,而这种方式有其局限:未被列出的 VPN 仍可能被探测捕获,但不会被标注名称。对于 Tor,请将该地址与 Tor Project 的批量出口列表进行比对,或阅读我们关于检测 Tor 出口流量的指南。iCloud Private Relay 等中继不是 VPN:它们承载的是普通浏览器用户,因此我们的评分把中继地址的上限设为 60,它永远不会达到 block。

第 6 步:它是经过验证的爬虫还是已知的扫描器?

经过验证的爬虫是指位于其运营者公布的地址段列表中的地址,而扫描器则是探测整个互联网的基础设施。读取 threat.crawler.verified、name、operator 和 verification_method,然后读取 threat.is_scanner 和 threat_types。

IPcrawler.verifiedcrawler.name、operatorverification_methodis_scannerthreat_types
185.213.155.73falsenonenonefalse["vpn"]
5.39.1.230trueAhrefsBot, Ahrefsip_range_listfalse["spammer","abusive"]
104.248.50.21falsenonenonefalse[]
162.142.125.10falsenonenonetrue["scanner"]

AhrefsBot 与 Ahrefs 公布的地址段匹配,因此它的运营者是确定的。任何 User-Agent 自称 Googlebot 的流量都应受到同样的对待:在信任之前,先验证自称 Googlebot 的 IP。更全面的介绍请参阅通过 IP 地址检测 bot。

第四行是位于安娜堡的一个 Censys 扫描器,于 05:34 UTC 查询。它返回 is_scanner 为 true,评分为 0,判定为 allow,detection_methods 列表为空。扫描器标记不会影响我们的评分,因此请直接读取它。

第 7 步:它是否在黑名单上,从什么时候开始?

黑名单记录的是曾经观察到来自某个地址的滥用,而收录日期比是否收录更重要。读取 threat.is_abusive、is_spammer、is_botnet 和 dnsbl_sources。

IPis_abusiveis_spammeris_botnetdnsbl_sources
185.213.155.73falsefalsefalse[]
5.39.1.230truetruefalse["zen.spamhaus.org"]
104.248.50.21falsefalsefalse[]

然后以被动方式检查外部来源:

  • Spamhaus。 ZEN 整合了 Spamhaus 的各个免费 IP 黑名单,其页面会引导您使用 Spamhaus 的 IP 和域名信誉检查工具查看收录详情。
  • AbuseIPDB。 AbuseIPDB 展示用户提交的滥用报告。请查看它的置信度评分和最近几份报告的日期,而不是报告总数。
  • VirusTotal。 VirusTotal 显示有多少安全厂商标记了该地址,以及与之关联的任何文件或 URL。
  • Shodan 和 Censys。 Shodan 和 Censys 显示它们的扫描已经发现该主机上运行着什么,因此您无需触碰主机就能看到开放的服务。

时效胜过是否收录。上周的收录很重要,而六个月前的干净结果几乎无法说明今天的任何情况。

第 8 步:读取评分及触发的方法

评分是对上述所有内容的带日期汇总,而 scoring.detection_methods 会告诉您它为什么落在这个位置。下面是 AhrefsBot 的查询结果,精简到本手册用到的字段组,数值未经编辑:

GeoIPHub API
curl https://api.geoiphub.com/v1/lookup/5.39.1.230 -H "x-api-key: YOUR_API_KEY"
GeoIPHub API
{ "ip": "5.39.1.230", "asn": { "asn": 16276, "org": "OVH - OVH SAS", "asn_type": "hosting", "user_type": "search_engine_spider", "rpki": "valid" }, "whois": { "org": "Failover IPs", "netname": "OVH-DEDICATED-FO", "registered": "2012-05-15T00:00:00.000Z" }, "network": { "abuse_contact": "abuse@ovh.net" }, "detection": { "is_vpn": false, "is_tor": false, "is_hosting": true }, "threat": { "is_abusive": true, "is_spammer": true, "is_scanner": false, "threat_types": ["spammer", "abusive"], "dnsbl_sources": ["zen.spamhaus.org"], "crawler": { "verified": true, "name": "AhrefsBot", "operator": "Ahrefs", "verification_method": "ip_range_list" } }, "scoring": { "fraud_score": 59, "confidence": 0.486, "recommended_action": "step_up", "detection_methods": ["abusive_listed", "datacenter_blocklisted", "no_ptr_datacenter", "verified_crawler", "known_spammer"] }, "meta": { "last_classified_at": "2026-10-19T05:34:32.660Z" } }

三个地址各自触发的方法:

IP评分、处理方式confidencedetection_methods
185.213.155.73100,block0.7075known_vpn_server, wireguard_open, datacenter_with_vpn_proxy, no_ptr_datacenter
5.39.1.23059,step_up0.486abusive_listed, datacenter_blocklisted, no_ptr_datacenter, verified_crawler, known_spammer
104.248.50.2112,allow0.22datacenter_ip, fcrdns_mismatch

verified_crawler 是一个开脱性信号,在我们的评分中价值减 28.5 分(置信度 0.95 时为减 30 分),但它仍不足以抵消两个黑名单方法和一个垃圾邮件收录。信誉是历史,而评分是它的一个快照;这里介绍了 IP 信誉是如何构建的。

第 9 步:决定拦截单个 IP、前缀还是 ASN

把评分档位对应到处理方式,然后选择处理范围有多大。以下是我们会据以行动的判定:

IP我们的决定原因
Mullvad,100在注册、支付和管理流程中拦截;如果您的用户正当使用 VPN,则改为 step up敏感流程中的匿名化工具,没有用户历史可用于权衡
AhrefsBot,59在速率限制下允许抓取;对任何提交表单或登录的行为执行 step up爬虫没有理由登录,而且它的地址段目前被收录
DigitalOcean,12允许并观察仅仅是托管,没有其他方法触发

范围与处理方式同样重要。一次性事件拦截单个 IPv4 地址。对于 IPv6,拦截 IPv6 /64 而不是单个地址,因为一个客户通常控制整个 /64。只有当真实用户从不来自某个托管网络时,才拦截整个 ASN,对移动运营商或 CGNAT 地址段则绝不这样做。

优先使用速率限制和验证挑战,而不是硬性封禁:封禁也会波及下周持有该地址的人。根据日志自动封禁(例如使用 fail2ban)是另一个话题。关于哪种信号能阻止哪种攻击,请参阅哪种 IP 信号能阻止哪种攻击。

第 10 步:向网络的滥用联系人报告滥用 IP

将滥用报告发送到 network.abuse_contact 中的地址,该地址来自注册记录:

IPnetwork.abuse_contact
185.213.155.73abuse-cust-de@31173.se
5.39.1.230abuse@ovh.net
104.248.50.21abuse@digitalocean.com
162.142.125.10scan-abuse@censys.com

发送证据,而不是形容词:带时区的时间戳、日志行、目标主机和端口,以及这些流量做了什么。同时在 AbuseIPDB 上提交,让其他防御者也能看到。

第 11 步:一个 IP 判定能维持多久?

判定只能维持几天,而不是几个月,我们亲眼看到了一次变化。2026 年 10 月 8 日,我们为一篇关于网页抓取的文章查询了 5.39.1.230。它返回 crawler.verified 为 true、is_abusive 为 true,评分为 23,判定为 allow,触发的方法为 abusive_listed、datacenter_blocklisted、no_ptr_datacenter 和 verified_crawler。

2026 年 10 月 19 日 05:34:32 UTC,同一地址返回的评分为 59,判定为 step_up。同一个爬虫,同一个经过验证的地址段,同一个运营者。方法列表中的变化是 known_spammer 被加入,而今天的查询显示 is_spammer 为 true,且 dnsbl_sources 中包含 zen.spamhaus.org。我们在 10 月 8 日没有记录这两个字段,因此我们只知道垃圾邮件收录是新进入评分的,而不知道 Spamhaus 是哪一天收录它的。经过验证的爬虫减分依然生效,但并不足够。十一天让这个地址跨越了两个档位。

我们的威胁数据源和爬虫地址段文件都每天刷新,因此判定可能在一夜之间改变。规则是:为每个判定保存日期,对于比您的数据源更新周期更旧的判定,在采取行动之前重新运行查询。标记不是判定,而判定会过期。

第 12 步:能找到某个 IP 地址背后的人吗?

不能。IP 地址只能把您引向一个网络,而不是一个人:只有 ISP 或托管商才能把某个地址和某个时间对应到具体用户,而且它只会在法院命令等法律程序下公开这些信息,不会告诉您,也不会告诉我们。

只调查接触过您自己系统的地址,追查到网络这一层就停下,不要试图揭露或扫描任何人。地理定位同样是近似的:我们的三次查询将这些地址定位在法兰克福、巴黎和北伯根,这只能在城市级别定位到一个数据中心,绝不是街道地址。

在下一条告警上运行同样的流程

从您的告警队列中取出下一个地址,把告警上下文放在旁边,用同样的查询来运行它。要自动化这十二项检查,请从查询 API 文档开始。

不带密钥的查询上限为每分钟 30 次,而且这个上限很严格:一分钟内的第 30 次请求就已经会返回 429,并把调用方 IP 锁定两个小时。脚本请使用免费密钥:它每天提供 1,500 次查询,并包含所有字段。对于繁忙的告警队列,下一步是将查询结果大规模接入 SIEM。

常见问题

如何调查一个可疑的 IP 地址?

以被动方式按顺序进行。确认它是可路由的公网地址,查明它归谁所有、属于哪类网络,检查它的主机名、匿名化工具标记和爬虫标记,查看黑名单收录情况及其日期,然后依据评分采取行动,并记下日期。

如何检查一个 IP 地址是否恶意?

没有任何单一检查能证明这一点。查看当前的收录情况(例如 Spamhaus)、AbuseIPDB 上近期的滥用报告以及匿名化工具标记,然后将它们与该地址在您自己系统上的行为进行权衡。一个标记意味着曾经观察到来自该地址的滥用,并不意味着这次请求就是滥用。

能找到某个 IP 地址背后的人吗?

单凭您自己做不到。IP 只能指向一个网络运营商,只有该运营商才能把某个地址和某个时间对应到具体用户,而且它只会在法律程序下披露这些信息,不会告诉您。请改为向该网络的滥用联系人报告。

应该拦截单个 IP、整个前缀还是整个 ASN?

一次性事件拦截单个 IPv4 地址;IPv6 应拦截 /64,而不是单个 IPv6 地址;只有当真实用户从不来自某个托管网络时,才拦截整个 ASN。避免拦截移动网络或 CGNAT 地址段,因为一个地址可能承载许多用户。

经过验证的爬虫就一定可以放行吗?

不一定。AhrefsBot 的 5.39.1.230 在 2026 年 10 月 19 日与 Ahrefs 公布的地址段匹配,但同时也被列入 Spamhaus ZEN,评分为 59,判定为 step_up。验证只能告诉您是谁在运营该地址,并不能说明它的地址段是干净的。

IP 调查结果能保持有效多久?

以天计,而不是以月计。同一个 AhrefsBot 地址在 2026 年 10 月 8 日的评分为 23,判定为 allow;到 10 月 19 日评分为 59,判定为 step_up。在依据旧判定采取行动之前,请重新运行查询,并为每个判定保存日期。

作者

GeoIPHub 团队

GeoIPHub API 背后的团队

由 GeoIPHub 团队撰写,即构建 GeoIPHub IP 情报 API 及其扫描器的团队。草稿在 AI 辅助下完成,并由团队编辑;除非标注为示例,API 示例均为针对线上 API 的真实查询。

分享本文
更多文章

相关 文章