日本国内で運用している Web サーバーへの DDoS 攻撃や不正アクセスを防ぐため、日本以外の IP アドレスからのアクセスを制限する際に役立つサンプル設定ファイルと、日本に割り当てられている IP アドレスの CIDR 一覧をまとめたリポジトリです。
- 日本国内からのアクセスのみ許可したいケース
- 例:日本向けサービスや管理画面での不正アクセス防止
- 大規模 DDoS 攻撃などの被害を低減
- 日本に割り当てられている IP アドレスは 約 1 億 8,916 万 4,800 個 あり、そのすべてを CIDR 最小単位で表現すると 3104 行 になります。
- 大量の CIDR を手動で管理するのは困難なため、CIDR 一覧ファイルと各種サーバー向けの設定サンプルを用意しました。
-
JPAPN-IP-CIDR.txt
- 日本国内に割り当てられている IP アドレスを CIDR 形式でまとめたテキストファイル
- 約 3104 行にわたる CIDR ルールが記載されています
-
nginx.conf
- Nginx サーバーにおいて、日本以外の IP アドレスからのアクセスを拒否する設定例
include
ディレクティブなどでJPAPN-IP-CIDR.txt
を参照するようにしてご利用ください
-
.htaccess
- Apache サーバー(※.htaccess をサポートしている環境) で、日本以外の IP アドレスを拒否する設定例
- バーチャルホストごとや特定ディレクトリごとに簡易的に制限をかけたい場合に便利です
-
000-default.conf
- Apache サーバー(※
conf
設定ファイル方式) で、日本以外の IP アドレスを拒否する設定例 VirtualHost
ディレクティブ内に CIDR を直接記述して利用します
- Apache サーバー(※
- リポジトリから
JPAPN-IP-CIDR.txt
をダウンロードし、サーバー上の任意の場所に配置します。 - ファイル内に記載の CIDR 群を、必要に応じて設定ファイルに組み込みます。
nginx.conf
を参考にしながら、Nginx の設定を編集してください。geo
ディレクティブやmap
を利用して、JPAPN-IP-CIDR.txt
から情報を読み込み、日本国内の IP かどうかを判定してアクセスを許可・拒否できます。- 設定変更後は必ず
nginx -t
などで構文チェックを行い、問題がなければ再起動またはリロードします。
# 例: 構文チェック
sudo nginx -t
# 例: 再起動
sudo systemctl restart nginx
.htaccess
が有効なディレクトリにJPAPN-IP-CIDR.txt
の CIDR 情報をコピペ、または外部ファイルとして参照する形で記述します。- 基本的には
Require ip <CIDR>
の形式で許可リストを設定し、最後にRequire all denied
を書くことで日本以外からのアクセスを拒否します。 - サーバー全体で
.htaccess
による設定を反映できるように、Apache の設定 (AllowOverride All
など) が正しく設定されていることを確認してください。
000-default.conf
のサンプルは、/etc/apache2/sites-available/
などに配置し、バーチャルホスト単位で CIDR 制限を行う形になっています。Require ip
ディレクティブで日本国内の CIDR リストを許可し、そのほかを拒否する形で設定します。- 設定を行ったあと、
apache2ctl configtest
などで構文チェックし、問題がなければ再起動またはリロードします。
# 例: 構文チェック
sudo apache2ctl configtest
# 例: 再起動
sudo systemctl restart apache2
- 完全な防御ではありません
- すべての DDoS 攻撃や不正アクセスを 100% 防ぐことは難しく、他のセキュリティ対策との組み合わせが重要です。
- CIDR リストの更新
- IP アドレスの割り振り状況は変化する可能性があります。定期的な更新を推奨します。
- CDN やプロキシの利用
- クラウドサービスや CDN を通してアクセスが来る場合は、実 IP が変わってしまうことがあります。その場合は本設定と整合性が取れるように注意してください。
本リポジトリの内容は MIT License を適用しています。詳細は LICENSE ファイルをご確認ください。
- softjapan - GitHub Profile
- コントリビューションは大歓迎です。Pull Request や Issue でご連絡ください。
今後も日本の IP アドレス情報を更新しつつ、各種 Web サーバーでのアクセス制限方法を追加していく予定です。
ご利用の際はぜひ Star やフォーク等よろしくお願いいたします。