Cloudflare以外からのアクセスを遮断する

こんにちは、RSPインターネットグループの陸ステです。

今回は、REMOTE_ADDR変数がCloudflare以外のIPに置き換えられてしまう
RisuPu レンタルサーバー(MH)・コアサーバー・XREAなどでCloudflareから
来るトラフィック流入のみを許可する方法を紹介していきたいと思います。

おそらく、LiteSpeed系はほとんどREMOTE_ADDRが自動で置き換えられます。

REMOTE_ADDRがCloudflareのIPのままになる素の状態のレンタルサーバーでは、
そのままCloudflareが公開してるIPアドレスからの通信だけを許可する方法で可能です。
REMOTE_ADDRが変更されないサーバ:ConoHa WING、お名前.com レンタルサーバ等

この記事は、2024年3月28日(木)現時点のものです。
閲覧いただいている時点で情報が変更となっている場合があります。
また、本記事で紹介する方法以外に良い方法がありましたら、ぜひ教えて頂けると幸いです!

前提条件

動作する前提条件としては、X-Remote-IP変数が取得できていることが前提になります。
また、CloudFlare社が公開しているIPアドレス範囲を利用します。

IPレンジ
本ページは、Cloudflareの現行IPレンジの最も信用できるソースであることを意図としています。
設定を行う

.htaccessに以下のコードを貼り付けることでCloudflare以外からのアクセスは、全てブロックできます。

# cloudflare以外の通信を遮断する by https://freeblog.rspnet.jp/?p=426
#CloudFlare IPv4
SetEnvIf 'X-Remote-IP' '173.245.([48-53]).'             'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '103.21.([244-247]).'            'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '103.22.([200-203]).'            'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '103.31.([4-7]).'                'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '141.101.([64-99]|[100-127]).'   'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '108.162.([192-255]).'           'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '190.93.([240-255]).'            'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '188.114.([96-99]|[100-111]).'   'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '197.234.([240-243]).'           'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '198.41.([128-255]).'            'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '162.([158|159]).'               'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '104.([16-23]).'                 'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '104.([24-27]).'                 'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '172.([64-71]).'                 'cloudflare-ips-v4'
SetEnvIf 'X-Remote-IP' '131.0.([72-75]).'               'cloudflare-ips-v4'

#Cloudflare IPv6
SetEnvIf 'X-Remote-IP' '2400:cb00:'         'cloudflare-ips-v6'
SetEnvIf 'X-Remote-IP' '2606:4700:'         'cloudflare-ips-v6'
SetEnvIf 'X-Remote-IP' '2803:f800:'         'cloudflare-ips-v6'
SetEnvIf 'X-Remote-IP' '2405:b500:'         'cloudflare-ips-v6'
SetEnvIf 'X-Remote-IP' '2405:8100:'         'cloudflare-ips-v6'
SetEnvIf 'X-Remote-IP' '2a06:(98c[0-7]):'   'cloudflare-ips-v6'
SetEnvIf 'X-Remote-IP' '2c0f:f248:'         'cloudflare-ips-v6'

# アクセス制御
order deny,allow
deny from all
allow from env=cloudflare-ips-v4
allow from env=cloudflare-ips-v6
# cloudflare以外の通信を遮断ここまで by https://freeblog.rspnet.jp/?p=426

上記については、RisuPu レンタルサーバのMHプランにて動作確認済みです。
是非ご活用ください。(動作確認は、組織員としてのものではありません。)

おわりに

この記事は、RisuPu レンタルサーバー以外の方でもご利用できると思いますので、
いろいろな方のお役に立てば幸いです。

ではでは、RSPインターネットグループの陸ステでした。また次回の記事で~

更新履歴

2024年3月29日:162~のIPアドレスについて範囲誤りのため訂正 (0:01)
同上      :動作保証について組織としての保証ではない旨表記 (0:06)
同上      :141.101から開始するIPアドレスについて正規表現訂正 (2:21)
同上      :CFのIPv4v6の両方に変更しました (02:21)
2024年3月30日:Cloudflare IPv6側を修正しました (00:06)
同上      :cloudflare社のIPが188.144~の正規表現を修正しました (03:42)
同上      :162.の正規表現を158-159から158|159に修正しました (04:09)

コメント

  1. vpn633570345.opengw.net:1690 より:

    'だと動かないと思うんですが、"にした方がが良いのでは?
    https://qiita.com/KurosawaTsuyoshi/items/d9579c9c68666f086e68

    • コメントありがとうございます。

      タブルクオート(二重引用符)がほとんど利用されていますが、弊組織グループが提供する
      RisuPu レンタルサーバーにつきましてはシングルクォーテーション(一重引用符)でも
      正常に動作することを確認しております。

      • vpn177768996.opengw.net:1635 より:

        返信ありがとうございます。動作するなら問題ないかもしれないですが確認したサーバーとして書いておいた方が良いのでは?

        • コメントありがとうございます。

          >設定を行う
          にて「上記については、RisuPu レンタルサーバのMHプランにて動作確認済みです。」と明記済みです。

          何卒ご確認の程宜しくお願い致します。

          • 240b:251:1120:1900:a1f5:1216:2298:b89a より:

            返信ありがとうございます。そのRisuPuレンタルサーバー?以外で確認したサーバーがあったら教えてください。よろしくお願いいたします。

          • コメントありがとうございます。

            この記事は、元々RisuPu レンタルサーバー向けに作成しております。

            RisuPu お客様センター(当窓口)につきましては、当サービスでの
            CFサポートは、2024年4月1日(月)からとなりますため、それ以降の
            ご連絡をいただけますようお願い申しあげます。

            当該リリース予告:【提供予告】[RSVR] Cloudflareにてプロキシ機能有効時の一部サポート範囲拡大について

            弊組織提供のレンタルサーバー以外での確認につきましては、現時点で行っておりません。
            どちらのレンタルサーバーをお使いになられているかによって、設定方法も当記事と同様
            の方法で設定することができなくなってしまうため、ご利用のレンタルサーバー様に確認
            お願い致します。

            将来的にサポート範囲となりましたら、本記事とは別にする予定となりますため
            その際にRisuPuレンタルサーバ以外も掲載させていただく予定でございます。

  2. 名無し より:

    188.114.96.、188.114.111.の部分が動かないです

  3. vpn273026331.opengw.net:1427 より:

    REMOTE_ADDRが置き換わらないサーバーはどうすれば良いですか?

    • コメントありがとうございます。

      サーバー側のヘッダー[REMOTE_ADDR]がCloudflare社で管理するIPアドレスと一致する場合、
      通常のIPアドレスによるアクセス制限でCFのIPを許可(allow)、それ以外を拒否(deny)する
      設定をしていただければ、お寄せ頂いたサーバさんでもご利用できると思います。

      CloudFlare社のIPソースに関しましては、記事で記載しております「前提条件」にて
      ご参考ください。

トップへ戻る