特定の国からのアクセスを拒否するIPアドレス一覧の作成方法

日付 2018.09.18
タイトル 特定の国からのアクセスを拒否するIPアドレス一覧の作成方法
本文
アドレス一覧取得元はAPNICの
ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
です。フォーマットのRIR statistics exchange formatについては以下を参照
https://www.apnic.net/about-apnic/corporate-documents/documents/resource-guidelines/rir-statistics-exchange-format/

こちらを以下のコマンドで ipv4の IPaddr/subnet の.htaccess CIDR形式拒否一覧に変換します。
※ 以下の例では中国($cc ne "CN")を対象にしています。

wget http://ftp.apnic.net/stats/apnic/delegated-apnic-latest -O - | perl -ne '
  ($reg, $cc, $typ, $addr, $rng, $date, $stat, $ext) = split(/\|/);
  next if ($cc ne "CN");
  next if ($typ ne "ipv4" || ($rng & ($rng - 1)) != 0);
  print "deny from ${addr}/".(32 - length(sprintf("%b", ($rng - 1))))."\n";
'


# 以下補足
日本のアドレスを許可、の場合、以下のサイトからアドレスを抽出、なのですが、「歴史的経緯で管轄外のアドレスについて」という部分がどうにも引っかかります。

JPNIC管理アドレスについて
https://www.nic.ad.jp/ja/basics/terms/rir.html

JPNICの日本アドレス
https://www.nic.ad.jp/ja/dns/jp-addr-block.html
APNICの日本アドレス
https://www.nic.ad.jp/ja/dns/ap-addr-block.html
上記以外に以下のようなアドレスがあるようです
歴史的経緯で管轄外のアドレスについて
https://www.nic.ad.jp/ja/ip/hr/
※ 実質プロバイダにつながっていないので、一般的な人が利用することはあまりないので概ね考えなくてよいという意見もあるようですがどうにもスッキリしません。


#.htaccess
#apache設定
#セキュリティ