インターネットの通信は、単にIPアドレスだけで動いているわけではありません。
その裏側には ASN(Autonomous System Number) という仕組みがあり、これが世界中のネットワークをつないでいます。

本記事では、

  1. ASNとは何か
  2. なぜ存在するのか
  3. セキュリティ運用でどう役立つのか

を順番に解説します。

ASNとは何か

ASNは:

インターネット上の「組織単位の番号」

です。

もう少し正確に言うと:

独立したネットワークを運用する組織に割り当てられる識別番号

です。

例えば:

組織ASN
Amazon AWSAS14618
GoogleAS15169
MicrosoftAS8075
NTTAS2914

IPアドレスが「端末の住所」だとすると、ASNは「プロバイダや企業の名前札」

のようなものです。

なぜASNが必要なのか

インターネットは巨大なネットワークですが、実態は無数のネットワーク同士の集合体です。

各プロバイダ、クラウド事業者、大学、企業はそれぞれ独立したネットワークを持っています。

この独立した単位をAutonomous System(AS)

と呼びます。そしてその識別番号が ASNです。

郵便で例えると

  • IPアドレス = 家の住所
  • ASN = 市区町村

と考えていただくと分かりやすいでしょう。

郵便物はまず「市区町村」に届き、そこから各家庭へ配送されます。

インターネットでも:

  1. まずAS単位でルーティング
  2. その中でIP単位に配送

という仕組みになっています。

BGPとASN

ASNが本領を発揮するのは:

  • BGP(Border Gateway Protocol)

というルーティングプロトコルです。

BGPは「どのネットワークがどのIPを持っているか」

を世界中で共有する仕組みです。

例えば:

このIPレンジはAS14618(Amazon)が持っています

という情報を各AS同士が交換しています。

これによって世界中のルータが最適な経路を選べる

ようになります。言い換えるなら、ASNとBGPがなければ、現在の規模のインターネットは成立しません。

セキュリティ運用でのASNの意味

サーバーログを見ると攻撃IPがどこから来ているかを知りたくなりました。

そこで、ASN単位でみることにしました。

なぜ運用者はASNを見るのか

筆者が運用しているVPSはONE OUTSという独自防御システムを敷いていますが、ここでの防御は

  • IP単体BAN
  • ASN単位防御

なぜなら、多くの攻撃者は海外の規制が緩いプロバイダ/組織を隠れ蓑にしています。

  • 利用の際に厳格な身分証明がなく
  • 当局の規制が緩い(どころかそういう行為を推奨している

(『鬼平犯科帳』で言うなら「盗人宿」の概念です。

実際の例

では、そういったASNをどのように調べるのか?

Linuxでは使いやすいコマンドが存在します。

whois -h whois.cymru.com " -v 8.8.8.8"

と打ってみます。(言わずと知れたGoogleのDNSです

AS      | IP               | BGP Prefix          | CC | Registry | Allocated  | AS Name
15169   | 8.8.8.8          | 8.8.8.0/24          | US | arin     | 2023-12-28 | GOOGLE - Google LLC, US
  • ASN
  • 事業者
  • IPレンジ

が見えてきたという次第。これをサーバのログから調べるのはかなり困難なので、以下のようなワンライナーを組んでみました。

エラーログからIPを抽出し、一意にソートしてWHOIS情報(AS番号、国、事業者名)を取得します。

grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' /var/log/apache2/web_server_error.log \
| sort -u \
| while read ip; do
    whois -h whois.cymru.com " -v $ip" | tail -n1
  done

以下、無害化した解析結果テーブルです。(無害化に関してはAIの力を借りています

AS      | IP               | BGP Prefix          | CC | Registry | Allocated  | Info (Sanitized)
--------|------------------|---------------------|----|----------|------------|-------------------------------------------
58466   | 106.75.x.x       | 106.75.144.0/20     | CN | apnic    | 2011-03-23 | Major ISP / IDC Network (CN)
4837    | 123.139.x.x      | 123.138.0.0/15      | CN | apnic    | 2007-02-28 | China Network Backbone
8075    | 13.86.x.x        | 13.64.0.0/11        | US | arin     | 2015-03-26 | Global Cloud Service Provider (MS)
14061   | 144.126.x.x      | 144.126.208.0/20    | US | arin     | 2020-01-09 | Cloud Hosting / VPS Provider (DO)
212238  | 149.40.x.x       | 149.40.50.0/24      | US | arin     | 1992-01-28 | International Content Delivery Network
396982  | 162.216.x.x      | 162.216.150.0/24    | US | arin     | 2013-07-02 | Global Cloud Infrastructure (G)
51167   | 173.212.x.x      | 173.212.224.0/20    | DE | ripencc  | 2009-10-26 | European VPS/Dedicated Server Provider
211298  | 185.247.x.x      | 185.247.137.0/24    | GB | ripencc  | 2018-03-01 | Cyber Security Research Entity
213412  | 195.184.x.x      | 195.184.76.0/24     | FR | ripencc  | 2022-11-09 | Internet Scanning & Security Platform
398324  | 206.168.x.x      | 206.168.34.0/24     | US | arin     | 2022-10-26 | Global Threat Intelligence Scanner
14618   | 34.224.x.x       | 34.224.0.0/12       | US | arin     | 2016-09-12 | Global Cloud Services (AWS)
132203  | 43.153.x.x       | 43.153.0.0/18       | SG | apnic    | 1989-02-21 | Asia-Pacific Cloud Network (T)
6939    | 65.49.x.x        | 65.49.0.0/17        | US | arin     | 2007-10-04 | International Internet Backbone Provider
200593  | 91.202.x.x       | 91.202.233.0/24     | RU | ripencc  | 2008-03-03 | Eastern European Network Services

注意点

ログが数万行に及ぶ環境ではこの解析は膨大なものになります

head -50 /var/log/apache2/web_server_error.log | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' \
| sort -u \
| while read ip; do
    whois -h whois.cymru.com " -v $ip" | tail -n1
  done

とした方が良いでしょう。

まとめ

こうして、ASNを調べることができれば、先に示した「悪辣な攻撃を行うクローラー/攻撃者が潜む盗人宿」的な事業体/ASNという、「盗人宿」ごとの対策が容易に行えます。

悪を知らぬものが悪を取り締まれるか

という「鬼平」の言葉を元にログを調べていく手法について紹介しました。