IPアドレスからWHOISの国コード,組織を一覧するワンライナー

bash,CentOS,Network,Ubuntu

はじめに

  • 今回、とてもシンプルですが、IPアドレスからWHOISの国コード,組織を一覧するワンライナーをご紹介します。
  • 背景は、ALB, API Gateway にIP制限していない環境において、ALB, API Gateway にIP Filter を設定するための資料に使いたいと思います。ALBのアクセスログやAPI Gateway のアクセスログにはソースIP が記録されます。このソースIP からアクセス元の国や組織を調べ、適切なアクセス元かを判断します。
  • ALB のアクセスログは、こちらの記事を参照ください。ALBアクセスログのエントリで、4フィールド目がソースIP になります。
  • API Gateway のアクセスログは、こちらの記事を参照ください。アクセスログの $context.identity.sourceIp がソースIP になります。

 

IPアドレスからWHOISの国コード,組織を一覧するコマンド

概要

  • WHOISは、 インターネットレジストリが管理するインターネット資源の登録情報を提供するサービスです。 ユーザーはWHOIS を利用して、IPアドレスやドメイン名の登録者を検索することができます。
  • WHOISは、cman.jp のドメイン/IP検索JPRS WHOIS のサービスを使用して検索することができます。しかし、多くのIPアドレスを 1つずつ調べることは手間がかかりますので、Linux のwhois コマンドを使用します。

 

whoisコマンドのインストール

  • “yum install whois"“apt install whois" コマンドを使用して、whoisコマンドをインストールします。

niikawa@niikawa1:~$ sudo apt install whois
[sudo] password for niikawa:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
  libfreetype6
Use 'sudo apt autoremove' to remove it.
The following NEW packages will be installed:
  whois
0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 43.7 kB of archives.
After this operation, 262 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic/main amd64 whois amd64 5.3.0 [43.7 kB]
Fetched 43.7 kB in 2s (25.3 kB/s)
Selecting previously unselected package whois.
(Reading database ... 36769 files and directories currently installed.)
Preparing to unpack .../archives/whois_5.3.0_amd64.deb ...
Unpacking whois (5.3.0) ...
Setting up whois (5.3.0) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
niikawa@niikawa1:~$ which whois
/usr/bin/whois

 

WHOISの国コード,組織を1行で表示する

  • 次にwhois コマンドを使って、IPアドレスの登録情報を検索します。今回は、IPアドレス、国コードと組織名を1行で表示したいと思います。echo -n によって、複数のコマンド出力結果が改行されないように工夫します。(今回はテストのため、AWSが公開するIP rangeから1 IPを抜き出しています)

echo -n ${var}:;echo -n `whois $var | grep -i country | head -1 | awk '{print $2}’`:;whois $var | egrep -i “org|desc" | head -1 | awk '{print $2}’


niikawa@niikawa1:/tmp$ var=3.5.140.0
niikawa@niikawa1:/tmp$ echo -n ${var}:;echo -n `whois $var | grep -i country | head -1 | awk '{print $2}'`:;whois $var | egrep -i "org|desc" | head -1 | awk '{print $2}'
52.219.168.0:US:Amazon

 

ワンライナーでWHOISの国コード,組織を一覧表示する

  • /tmp/ipaddr.txtに、IPアドレスの一覧を準備します。(今回はテストのため、AWSが公開するIP rangeから10 IPを抜き出しています)
  • 下記のコマンドをワンライナーで実行して、WHOISの国コード,組織を一覧表示します。

for var in `cat /tmp/ipaddr.txt`; do echo -n ${var}:;echo -n `whois $var | grep -i country | head -1 | awk '{print $2}’`:;whois $var | egrep -i “org|desc" | head -1 | awk '{print $2 $3}’; done


niikawa@niikawa1:/tmp$ for var in `cat /tmp/ipaddr.txt`; do echo -n ${var}:;echo -n `whois $var | grep -i country | head -1 | awk '{print $2}'`:;whois $var | egrep -i "org|desc" | head -1 | awk '{print $2 $3}'; done
3.5.140.0:US:AmazonTechnologies
35.180.0.0:US:AmazonTechnologies
52.93.178.234:US:AmazonTechnologies
52.94.76.0:US:AmazonTechnologies
52.95.36.0:US:AmazonTechnologies
120.52.22.96:CN:CHINAUNICOM
150.222.81.0:AU:Earlyregistration
13.34.24.160:US:AmazonTechnologies
15.230.39.60:US:AmazonTechnologies
52.219.168.0:US:AmazonTechnologies

 

  • これで、どの国のどの組織からアクセスが来ているかを調べることができました。ALB, API Gateway のIP Filter 設定の資料として使いたいと思います。