本サイトではアフィリエイト広告を利用しています
Cloudflare Nginx

サーバー 設定

Cloudflare IPアドレスに限って、Nginx に接続許可するには?

2021年2月19日

HTTP サーバーを Cloudflare で動かしている場合は、Cloudflare のIPアドレスからのトラフィックのみを許可することをお勧めします。

例えばですが、Cloudflare のIPアドレスを iptables で体系的に許可する構成を作ってしまうのが手っ取り早いですね。

ただし、Cloudflare の前に他のサービスを何も利用していない場合は、Nginx のサービスのすぐ内側に Cloudflare のIPアドレスをホワイトリストに登録して運用してしまうことが可能です。
今回は、Nginx にも慣れてしまうため一番簡単な設定で処理してしまいます。

これを行うには、/etc/nginx/allow-cloudflare.conf にすべての Cloudflare のIPアドレスを許可する構成ファイルを作成します。
(ファイル名は何でも良いが、cloudflare という文言を入れておくほうが管理が簡単)


 allow-cloudflare.conf の全体
# IPv4
allow 173.245.48.0/20;
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 141.101.64.0/18;
allow 108.162.192.0/18;
allow 190.93.240.0/20;
allow 188.114.96.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
allow 162.158.0.0/15;
allow 104.16.0.0/12;
allow 172.64.0.0/13;
allow 131.0.72.0/22;
# IPv6
allow 2400:cb00::/32;
allow 2606:4700::/32;
allow 2803:f800::/32;
allow 2405:b500::/32;
allow 2405:8100::/32;
allow 2a06:98c0::/29;
allow 2c0f:f248::/32;
### 上以外のIPアドレスからのアクセスを拒否する
deny all;

次に、この構成ファイルを各サーバーブロックに含めるか、Nginx 全体に効くように設定してしまうかします。
たとえば、example-site.com.conf というファイルに "example-site.com" という運営サイトを設定している場合は次のような感じです。

 allow-cloudflare.conf の全体
server {
  listen 80;
  listen [::]:80;
  include /etc/nginx/allow-cloudflare.conf;
  server_name example.com;
  #...the rest of your config here...
}

こう設定しておけば、CloudFlareのIPアドレス以外をソースに持つアクセスは拒否されます(厳密には 403 Forbidden を返してくれます)。

-サーバー, 設定
-, , ,