概略
ログ調査などを行っているときに、そのIPアドレスがどこの国のものなのか調べることも多いかと思います。IPアドレスから、その位置情報(国名や地名)を知るためには、どのような方法があるでしょうか。本稿では、IPアドレスの位置情報データベースと、IPアドレスの占有者の情報を得るための仕組みや方法について解説します。
本稿に記載した内容は、個人的な見解を示したものであり、筆者の所属する企業・団体の公式見解ではありません。
IPジオロケーション
接続元IPアドレスを元に国や地域を識別することで、様々な用途に活用することができます。位置情報によって Webサイトコンテンツを最適化させることもできますし、音楽や映画などの配信で所定の国や地域のみに限定するなどの制御も可能です。このようにマーケティングやコンプライアンスの観点での活用もできますし、セキュリティの確保にも位置情報は重要な役割を担っています。
インシデント調査においては、接続元の身元確認のためにどこからアクセスがあったのかを調べることが往々にしてあります。また、通常運用時にオンラインバンキングや様々なサービスで、位置情報を確認することで、なりすましや不正アクセスを発見することも期待できます。短い時間で、地理的に離れた場所からログインすることは、通常の使い方では起こり得ないことでしょう。そうしたユーザーの動向分析による不正検出(Fraud監視)に役立ちます。また、昨今では位置情報を用いたゲームやサービスも増えてきています。場合によってはGPS等で得られた情報とIPアドレスから得られた情報を照合するなどの不正防止にも一役買うことでしょう。
IPアドレスと位置情報の照らし合わせには、独自の位置情報データベースを提供しているサービスを活用する方法と、IPアドレスを管理しているICANNなどが公に提供している情報を用いる方法があります。前者の方が、より細かな地域(市町村など)まで特定することができます。
主要なIPジオロケーションサービス
以下に、主要なジオロケーションサービスを記載します。
サービス名 | 提供会社 | 概要 |
---|---|---|
MaxMind GeoIP / minFraud | MaxMind, Inc. | 高精度なジオロケーションと機械学習を活用した不正リスク評価を提供。無料のGeoLite2もあり、商用向けにはminFraudなど幅広いラインナップ。(ウィキペディア, MaxMind, MaxMind) |
IPGeolocation.io | IPGeolocation.io | IPv4/IPv6のジオロケーションに加え、TOR・Proxy・VPN・脅威・ロボットの検出が可能なAPI。無料枠あり。(Geolocation API, Abstract API) |
Abstract API - IP Geolocation | Abstract API | シンプルで導入が容易なリアルタイムジオロケーションAPI。無料プランあり。2025年には詐欺防止機能(IP Intelligence)も追加。(Abstract API) |
IPStack | ipstack | IPv4/IPv6対応で信頼性が高く、企業にも多く採用。無料プランは月1,000リクエストまで。(Abstract API, WhatIsMyIPAddress) |
IP-API.com | IP-API | 無料プランあり(非商用・HTTPのみ)。有料版は無制限リクエスト可能、複数フォーマット対応。(Abstract API, Medium) |
IPData.co | IPData.co | ジオロケーションに加え、脅威インテリジェンス・ISP情報・多言語対応など豊富なデータを提供。(IPData, Medium) |
IPInfo.io | IPinfo | ASNやProxy/VPN検出などを含む包括的なデータを提供。無料プランあり高リクエスト数対応。(Abstract API, Medium) |
IP2Location | IP2Location | 国・都市・ISP・タイムゾーン・プロキシ検出・脅威スコアなど詳細データを提供し、データは毎日更新。SDKも豊富。(IP2Location) |
DB-IP | DB-IP | IPジオロケーションとネットワークインテリジェンスに強み。データベースとAPIを提供、長年の実績あり。(DB-IP) |
Digital Envoy – NetAcuity | Digital Envoy | 広告業界で使用されるIPジオターゲティング技術のパイオニア。NetAcuityサービスを展開。(ウィキペディア) |
Geobytes | Geobytes | 独自のインフラマップとユーザー提供データに基づくジオロケーション。スパム対策や不正検出にも活用。(ウィキペディア) |
IPジオロケーションのインシデント対応時の注意点
ジオロケーションサービスを使うと、かなり詳細な位置情報を特定することができますが、市町村レベルの位置情報は時期によって変化することがあります。過去のログやアーティファクトに残されたIPアドレスから位置情報を割り出す場合には、できるだけ痕跡が記録された時点の情報と照合することが望ましいです。昨今では、アクセスログに位置情報も同時に記録する製品も増えてきていますので、そうしたリアルタイムで保存された情報は重要な手がかりになるでしょう。
WHOISとRDAP
一方、ジオロケーションデータベースを使わなくとも、国レベルでの位置情報の確認は標準的なプロトコルで調べることもできます。WHOIS情報を参照したことのある方も多いかと思います。しかしながら、WHOISはかなり古いプロトコルであり、多くの問題も抱えていました。現在では後継プロトコルとしてRDAPが徐々に広まっています。
WHOISの概要と経緯
WHOISはARPANETに接続する研究者や管理者の連絡先を提供するための仕組みとして開発され、1982年にRFC812で勧告されました。以降、RFC954 (1985年)、RFC3912 (2004年) と改訂版が勧告され、ドメイン名やIPアドレスの登録情報を公開する目的で広く利用されるようになりましたが、その基本的な仕組みはテキストベースの単純な構造のままであり、インターネットの急速な拡大やセキュリティ要件の高まりに対応できなくなっていきました。
WHOISの問題点
- 共通フォーマットの不在
- 問い合わせや回答の共通フォーマットが規定されていない
- WHOISサーバーによって入出力形式が異なる
- 分散環境における不十分な連携
- DNSのように権威を持つ回答ができるサーバーを見つけ出すための仕組みがない
例えばJPNICで該当するIPアドレスがない場合には、他のRIRのWHOISを一つずつ検索する必要がある
- DNSのように権威を持つ回答ができるサーバーを見つけ出すための仕組みがない
- HTTP未対応
- WHOIS(TCP/43)が使われる
- WebブラウザーでのWHOIS検索はRIR等の独自実装で共通性がない
- 国際化への非対応
- 一部の非英語圏のWHOISでは独自に自国言語に対応
- 他の言語環境では表示が正しく行われないことも
これらの限界から、IETFとICANNを中心に次世代プロトコルの策定が始まり、2015年にRDAPが標準化されたのです。
RDAP
WHOISの問題点を解消するために制定されたのがRDAP(Registration Data Access Protorol)です。(RFC7480, RFC7481, RFC7482 , RFC7483, RFC7484, RFC7485)
RDAPではHTTPリクエストとJSONによるレスポンスの統一が図られている他、RIR間で移管された情報は自動的にリダイレクトする仕組みが備わっています。そのため、以下のどこにリクエストクエリーを送っても同じ結果を得ることができます。IPアドレスの国際的な管理については、「国別のIPレピュテーションを手動で設定する」で解説しています。
RIR | RDAP URL |
---|---|
APNIC | https://rdap.apnic.net/ |
ARIN | https://rdap.arin.net/registry |
RIPE NCC | https://rdap.db.ripe.net/ |
LACNIC | https://rdap.lacnic.net/rdap/ |
AFRINIC | https://rdap.afrinic.net/rdap/ |
RDAPの使い方
RDAPはHTTPリクエストを使って情報を得ることができます。その際に指定するクエリーの書式は RFC7482 で勧告されています。以下に一例を示します。IPアドレスを管理しているRIRが提供しているRDAPサーバーでは、IPアドレスに関する情報のみ検索ができ、ドメイン名検索はできないことに注意が必要です。
クエリー種別 | 構文例(HTTPパス) | 説明 |
---|---|---|
ドメイン名検索 | /domain/example.com |
ドメイン名の登録情報を取得。完全一致が基本。 |
ネームサーバー検索 | /nameserver/ns1.example.com |
名前サーバーに関する情報を取得。 |
IPアドレス検索 |
/ip/192.0.2.0 または /ip/2001:db8::1
|
IPv4またはIPv6アドレスの登録情報を取得。 |
IPネットワーク検索 | /ip/192.0.2.0/24 |
CIDR形式で指定されたIPネットワーク情報を取得。 |
AS番号検索 | /autnum/64496 |
Autonomous System Number (ASN) に関する情報を取得。 |
エンティティ検索 | /entity/xxxx |
レジストラ・管理者・技術担当者などのエンティティ情報を取得。エンティティはハンドルや識別子で指定。 |
HTTPリクエストとレスポンス
APNICで例示されている https://rdap.apnic.net/ip/2001:dc0:2001:11::194 にリクエストを送信すると、次のようなレスポンスが得られます。これによって該当するIPアドレスは "APNIC Pty Ltd - Australia Network" に割り当てられているものだということがわかります。
RDAPのレスポンス例(一部)
{
"rdapConformance": [
"history_version_0",
"nro_rdap_profile_0",
"cidr0",
"rdap_level_0"
],
"notices": [
{
"title": "Source",
"description": [
"Objects returned came from source",
"APNIC"
]
},
{
"title": "Terms and Conditions",
"description": [
"This is the APNIC WHOIS Database query service. The objects are in RDAP format."
],
"links": [
{
"value": "https://rdap.apnic.net/ip/2001:dc0:2001:11::194",
"rel": "terms-of-service",
"href": "http://www.apnic.net/db/dbcopyright.html",
"type": "text/html"
}
]
},
{
"title": "Whois Inaccuracy Reporting",
"description": [
"If you see inaccuracies in the results, please visit: "
],
"links": [
{
"value": "https://rdap.apnic.net/ip/2001:dc0:2001:11::194",
"rel": "inaccuracy-report",
"href": "https://www.apnic.net/manage-ip/using-whois/abuse-and-spamming/invalid-contact-form",
"type": "text/html"
}
]
}
],
"country": "AU",
"events": [
{
"eventAction": "registration",
"eventDate": "2008-09-04T06:49:20Z"
},
{
"eventAction": "last changed",
"eventDate": "2017-12-14T13:02:51Z"
}
],
"name": "APNIC-AP-V6-BNE",
"remarks": [
{
"description": [
"APNIC Pty Ltd - Australia Network",
"6 Cordelia Street",
"South Brisbane",
"QLD 4101"
],
"title": "description"
}
],
以下省略
RDAPクライアント
RDAPはHTTPを用いますので、WebブラウザーやcURLのようなツールでも情報を得ることができますが、いくつかのコマンド実装やライブラリーなどもあります。こうしたものを活用することでより便利になるでしょう。
名称 | 形態 | 特徴・使い方 | 参考 |
---|---|---|---|
OpenRDAP | CLI / Goライブラリ |
rdap example.com のように使える。タイプ指定やブートストラップ対応あり。 |
(GitHub, openrdap.org) |
ICANN RDAP CLI(icann-rdap-cli) | CLI(Rust) | ICANNの公式リポ内にある検証向けCLI。RustクライアントSDKも同梱。 | (GitHub) |
RDAPを使った割り当てレジストリーの確認
IPアドレスがどの組織に割り当てられているかを大まかに確認したいときには IANAが公開しているRDAP bootstrap file for IPv4 address allocationsを活用することもできます。こちらもRDAPのレスポンス同様にJSONデータなので機械処理もしやすいです。
RDAP検索サービス
ICANN職員の Gavin Brown氏が個人的に公開されているRDAP.ORGなど、Webブラウザー向けのフォーム形式での検索ができるものを活用することもできます。
最後に
IPアドレスの位置情報は、セキュリティ調査や不正検知、サービス提供範囲の制御など、多くの場面で重要な手がかりとなります。商用のジオロケーションサービスを使えば市区町村レベルの詳細な情報が得られる一方、正確さは時期や環境によって変動することに注意が必要です。
また、国レベルの情報であれば、従来のWHOISに代わり標準化されたRDAPを利用することで、HTTPとJSONを介した統一的かつ信頼性の高い検索が可能になりました。WHOISの曖昧さや分散管理の課題を克服し、機械処理や自動化にも適した仕組みとなっています。
ジオロケーションデータベースとRDAPを理解することで、ログ解析やセキュリティ運用を効率的に行えると思います。