日本国内IP アドレスCIDRを活用した DDoS攻撃対策 設定サンプルファイル付き

# 日本国内 IP アドレスCIDRを活用した DDoS 攻撃対策
[github](https://github.com/softjapan/japan-ip-cidr)
Web サーバーを日本国内で運用している際に、**DDoS（分散型サービス妨害）攻撃**や不正アクセスなどの脅威を軽減するため、**日本以外の IP アドレスからのアクセスを制限**することは有効な対策の一つです。  
このリポジトリでは、日本に割り当てられている約 1 億 8,916 万 4,800 個の IP アドレスを最小の CIDR で表し、各種 Web サーバー（Nginx / Apache）でアクセス拒否設定を行うサンプルを用意しています。

## なぜ DDoS 攻撃への対策に「日本向け IP 制限」が役立つのか

1. **攻撃元の多くは海外から**  
   - 特に大規模 DDoS 攻撃のトラフィックは海外から発生することが多いとされています。日本以外の IP アドレスを遮断することで、不正アクセスのリスクを大幅に減らすことが可能です。  
2. **日本国内向けサービスなら利便性を損なわない**  
   - 海外からの正規アクセスがほとんど見込まれないサービス（例：国内向け EC サイト、社内システムなど）であれば、海外 IP をブロックしてもサービス品質に影響が出にくいです。  
3. **導入が比較的簡単**  
   - 必要な CIDR（IP アドレス範囲）のリストを用意し、サーバー設定ファイルで「許可／拒否」を記述するだけで始められます。他の高度な DDoS 対策（WAF や CDN、専用セキュリティ機器など）と併用することで多層防御を実現します。

---

## リポジトリ概要

- **JPAPN-IP-CIDR.txt**  
  日本国内に割り当てられた約 3104 行の CIDR（IP アドレス範囲）をまとめたテキストファイルです。海外 IP をブロックする際の「許可リスト」として使用します。  
- **nginx.conf**  
  Nginx において、日本以外の IP アドレスを拒否する設定例。`include` などを活用し、必要に応じて `JPAPN-IP-CIDR.txt` を読み込む形で運用します。  
- **.htaccess**  
  Apache サーバーの `.htaccess` 方式で制限をかけるサンプル設定。バーチャルホストやディレクトリ単位で設定したい場合に便利です。  
- **000-default.conf**  
  Apache のグローバルまたはバーチャルホスト設定 (conf ファイル) 方式で制限をかけるサンプル設定。全体にわたるアクセス制限を簡単に導入できます。

---

## 具体的な導入手順

### 1. CIDR リストを入手・配置

- 本リポジトリから `JPAPN-IP-CIDR.txt` をダウンロードし、サーバー上の分かりやすい場所（例：`/etc/nginx/ip-restriction` や `/etc/apache2/ip-restriction`）に格納します。  
- もし CIDR が更新された場合は、最新ファイルと置き換えてください。（IP 割り当ては変動することがあります）

### 2. Nginx での日本以外ブロック設定 (例)

1. **nginx.conf** を参考に Nginx の設定ファイル（例：`/etc/nginx/conf.d/` 下）を編集します。  
2. サンプルでは `geo` や `map` ディレクティブを使い、`JPAPN-IP-CIDR.txt` を参照して日本国内の IP であれば `1`、そうでなければ `0` と判定し、`if` 文などでアクセス制限を行います。  
3. 設定後は `nginx -t` で構文チェック後、`systemctl reload nginx` や `systemctl restart nginx` を実行して反映させます。

```bash
# 構文チェック
sudo nginx -t

# 再起動
sudo systemctl restart nginx
```

### 3. Apache (.htaccess) での日本以外ブロック設定 (例)

1. `.htaccess` が有効なディレクトリ（例：`/var/www/html`）などにサンプルの `.htaccess` ファイルを配置し、`JPAPN-IP-CIDR.txt` の許可リストを記述します。  
2. `Require ip <CIDR>` を複数記述して許可する範囲を設定し、最後に `Require all denied` で日本以外のアクセスを拒否します。  
3. `.htaccess` を有効にするには、Apache の設定で `AllowOverride All` が必要です。設定変更後は `apache2ctl configtest` などでチェックし、問題なければ再起動します。

```bash
sudo apache2ctl configtest
sudo systemctl restart apache2
```

### 4. Apache (conf 設定) での日本以外ブロック設定 (例)

1. サンプルの `000-default.conf` を参考に、`<VirtualHost *:80>` や `<VirtualHost *:443>` 内で `Require ip <CIDR>` を設定します。  
2. `JPAPN-IP-CIDR.txt` の中身を貼り付けたり、`Include` ディレクティブで読み込む方法も可能です。  
3. 設定を反映させる際は `apache2ctl configtest` 後、`systemctl reload apache2` または `systemctl restart apache2` を実行します。

---

## DDoS 対策としてのポイント

1. **大規模攻撃の入り口を狭める**  
   - 海外 IP をブロックすることで、想定外の大量トラフィック（Bot ネットワークなど）からの被害を軽減できます。  
2. **CDN・WAF 等との併用**  
   - 本設定はあくまで簡易的な「国別ブロック」です。AWS や Cloudflare 等の CDN を使用する場合、接続元 IP が CDN になるケースがあるため注意が必要です。  
   - WAF（Web Application Firewall）のロジックと組み合わせると、国別制限のない高機能な攻撃検知との相乗効果が期待できます。  
3. **定期的なリスト更新**  
   - IP の割り振り状況は変化するので、最新の CIDR に更新しておく必要があります。古いままだとブロックされるべき IP が許可されたり、本来許可すべき IP がブロックされる可能性があります。

---

## 注意事項

1. **完全な防護壁にはならない**  
   - IP 制限は強力ではありますが、VPN やプロキシを利用した攻撃を完全に排除するのは困難です。他のセキュリティ対策と合わせて多層防御を行ってください。  
2. **海外からの正規アクセスをブロックするリスク**  
   - 海外ユーザを対象とするサービスでは利便性が低下します。サービスの用途に応じて導入を検討しましょう。  
3. **オペレーションの煩雑化に注意**  
   - 国別ブロックを導入していることを運用チーム内で周知し、ホワイトリスト登録などの例外対応をどうするか明確にしておくとスムーズです。

---

## まとめ

- **日本以外の IP をまとめてブロック**することで、不正アクセスや DDoS 攻撃のリスクを大幅に低減可能。  
- **Nginx / Apache** などの主要 Web サーバーに対応したサンプルファイルを用意。すぐに導入ができる。  
- **CDN や WAF、他のセキュリティ施策**との組み合わせで多層防御を実現し、**インフラ保守担当として**サービスの安定運用を支援。  

もしこのガイドが役立ちましたら、ぜひスターやフォーク等でご支援ください。問題や改善点などありましたら、Issue や Pull Request での報告をお待ちしています！

---  

<div align="center">
  <strong>安心・安全な日本国内専用サービスを実現し、DDoS 攻撃を断固防御しましょう！</strong>
</div>)

Web サーバーを日本国内で運用している際に、**DDoS（分散型サービス妨害）攻撃**や不正アクセスなどの脅威を軽減するため、**日本以外の IP アドレスからのアクセスを制限**することは有効な対策の一つです。  
このリポジトリでは、日本に割り当てられている約 1 億 8,916 万 4,800 個の IP アドレスを最小の CIDR で表し、各種 Web サーバー（Nginx / Apache）でアクセス拒否設定を行うサンプルを用意しています。

## なぜ DDoS 攻撃への対策に「日本向け IP 制限」が役立つのか

1. **攻撃元の多くは海外から**  
   - 特に大規模 DDoS 攻撃のトラフィックは海外から発生することが多いとされています。日本以外の IP アドレスを遮断することで、不正アクセスのリスクを大幅に減らすことが可能です。  
2. **日本国内向けサービスなら利便性を損なわない**  
   - 海外からの正規アクセスがほとんど見込まれないサービス（例：国内向け EC サイト、社内システムなど）であれば、海外 IP をブロックしてもサービス品質に影響が出にくいです。  
3. **導入が比較的簡単**  
   - 必要な CIDR（IP アドレス範囲）のリストを用意し、サーバー設定ファイルで「許可／拒否」を記述するだけで始められます。他の高度な DDoS 対策（WAF や CDN、専用セキュリティ機器など）と併用することで多層防御を実現します。

---

## リポジトリ概要

- **JPAPN-IP-CIDR.txt**  
  日本国内に割り当てられた約 3104 行の CIDR（IP アドレス範囲）をまとめたテキストファイルです。海外 IP をブロックする際の「許可リスト」として使用します。  
- **nginx.conf**  
  Nginx において、日本以外の IP アドレスを拒否する設定例。`include` などを活用し、必要に応じて `JPAPN-IP-CIDR.txt` を読み込む形で運用します。  
- **.htaccess**  
  Apache サーバーの `.htaccess` 方式で制限をかけるサンプル設定。バーチャルホストやディレクトリ単位で設定したい場合に便利です。  
- **000-default.conf**  
  Apache のグローバルまたはバーチャルホスト設定 (conf ファイル) 方式で制限をかけるサンプル設定。全体にわたるアクセス制限を簡単に導入できます。

---

## 具体的な導入手順

### 1. CIDR リストを入手・配置

- 本リポジトリから `JPAPN-IP-CIDR.txt` をダウンロードし、サーバー上の分かりやすい場所（例：`/etc/nginx/ip-restriction` や `/etc/apache2/ip-restriction`）に格納します。  
- もし CIDR が更新された場合は、最新ファイルと置き換えてください。（IP 割り当ては変動することがあります）

### 2. Nginx での日本以外ブロック設定 (例)

1. **nginx.conf** を参考に Nginx の設定ファイル（例：`/etc/nginx/conf.d/` 下）を編集します。  
2. サンプルでは `geo` や `map` ディレクティブを使い、`JPAPN-IP-CIDR.txt` を参照して日本国内の IP であれば `1`、そうでなければ `0` と判定し、`if` 文などでアクセス制限を行います。  
3. 設定後は `nginx -t` で構文チェック後、`systemctl reload nginx` や `systemctl restart nginx` を実行して反映させます。

```bash
# 構文チェック
sudo nginx -t

# 再起動
sudo systemctl restart nginx
```

### 3. Apache (.htaccess) での日本以外ブロック設定 (例)

1. `.htaccess` が有効なディレクトリ（例：`/var/www/html`）などにサンプルの `.htaccess` ファイルを配置し、`JPAPN-IP-CIDR.txt` の許可リストを記述します。  
2. `Require ip <CIDR>` を複数記述して許可する範囲を設定し、最後に `Require all denied` で日本以外のアクセスを拒否します。  
3. `.htaccess` を有効にするには、Apache の設定で `AllowOverride All` が必要です。設定変更後は `apache2ctl configtest` などでチェックし、問題なければ再起動します。

```bash
sudo apache2ctl configtest
sudo systemctl restart apache2
```

### 4. Apache (conf 設定) での日本以外ブロック設定 (例)

1. サンプルの `000-default.conf` を参考に、`<VirtualHost *:80>` や `<VirtualHost *:443>` 内で `Require ip <CIDR>` を設定します。  
2. `JPAPN-IP-CIDR.txt` の中身を貼り付けたり、`Include` ディレクティブで読み込む方法も可能です。  
3. 設定を反映させる際は `apache2ctl configtest` 後、`systemctl reload apache2` または `systemctl restart apache2` を実行します。

---

## DDoS 対策としてのポイント

1. **大規模攻撃の入り口を狭める**  
   - 海外 IP をブロックすることで、想定外の大量トラフィック（Bot ネットワークなど）からの被害を軽減できます。  
2. **CDN・WAF 等との併用**  
   - 本設定はあくまで簡易的な「国別ブロック」です。AWS や Cloudflare 等の CDN を使用する場合、接続元 IP が CDN になるケースがあるため注意が必要です。  
   - WAF（Web Application Firewall）のロジックと組み合わせると、国別制限のない高機能な攻撃検知との相乗効果が期待できます。  
3. **定期的なリスト更新**  
   - IP の割り振り状況は変化するので、最新の CIDR に更新しておく必要があります。古いままだとブロックされるべき IP が許可されたり、本来許可すべき IP がブロックされる可能性があります。

---

## 注意事項

1. **完全な防護壁にはならない**  
   - IP 制限は強力ではありますが、VPN やプロキシを利用した攻撃を完全に排除するのは困難です。他のセキュリティ対策と合わせて多層防御を行ってください。  
2. **海外からの正規アクセスをブロックするリスク**  
   - 海外ユーザを対象とするサービスでは利便性が低下します。サービスの用途に応じて導入を検討しましょう。  
3. **オペレーションの煩雑化に注意**  
   - 国別ブロックを導入していることを運用チーム内で周知し、ホワイトリスト登録などの例外対応をどうするか明確にしておくとスムーズです。

---

## まとめ

- **日本以外の IP をまとめてブロック**することで、不正アクセスや DDoS 攻撃のリスクを大幅に低減可能。  
- **Nginx / Apache** などの主要 Web サーバーに対応したサンプルファイルを用意。すぐに導入ができる。  
- **CDN や WAF、他のセキュリティ施策**との組み合わせで多層防御を実現し、**インフラ保守担当として**サービスの安定運用を支援。  

もしこのガイドが役立ちましたら、ぜひスターやフォーク等でご支援ください。問題や改善点などありましたら、Issue や Pull Request での報告をお待ちしています！
[github](https://github.com/softjapan/japan-ip-cidr)
---  

<div align="center">
  <strong>安心・安全な日本国内専用サービスを実現し、DDoS 攻撃を断固防御しましょう！</strong>
</div>