毎日、あなたのサイトは数百のボットに攻撃されています。あるボットは価格やコンテンツを盗み、別のボットはリクエストでサーバーを過負荷にし、さらに別のボットは脆弱性を探しています。あなたがWildberriesやOzonでインターネットショップを運営している場合、Facebook Adsで広告キャンペーン用のランディングページを管理している場合、またはクライアントのサイトを管理している場合、この問題はあなたに直接関係しています。リバースプロキシは、深い技術的知識なしで設定できる最初の防御ラインです。
リバースプロキシとは何か、通常のプロキシとの違い
ほとんどの人はプロキシをIPアドレスを変更するためのツールとして知っています。プロキシサーバーに接続すると、サイトはあなたのアドレスの代わりにそのアドレスを見ます。これをフォワードプロキシと呼び、ユーザーを保護します。
リバースプロキシは、逆の側で機能します。あなたのサーバーの前に立ち、すべての受信リクエストを代わりに受け取ります。訪問者はあなたのサイトと直接やり取りしていると思っていますが、実際には最初にプロキシサーバーに到達し、リクエストを確認し、疑わしい活動をフィルタリングし、正当なトラフィックだけをあなたの実際のサーバーに転送します。
簡単なアナロジー:
あなたのサイトを倉庫だと想像してください。フォワードプロキシは、匿名で供給者から商品を受け取るあなたの宅配便です。リバースプロキシは倉庫のゲートでの警備員です:入ろうとする人をすべてチェックし、顧客を通過させ、泥棒が商品にたどり着く前に捕まえます。
通常のプロキシとの重要な違いは、あなたのサーバーの実際のIPアドレスが隠されることです。攻撃者やボットはあなたのサイトが物理的にどこにあるかを知りません — 彼らはリバースプロキシのアドレスしか見えません。これだけで攻撃のかなりの部分を遮断します。
インターネットショップのオーナー、マーケティング担当者、数十のランディングページを持つアービトラージャーにとって、これは非常に重要です:競合他社はあなたの本当のホスティングを見つけて直接攻撃することができず、防御を回避します。
ボットとスキャナーがビジネスにとって危険な理由
多くのサイトオーナーはボットの脅威を過小評価し、「技術的な問題」と見なしています。しかし、実際にはそれは直接的なビジネス損失です。私たちの読者が直面する具体的なシナリオを見てみましょう。
競合による価格のパース
あなたがマーケットプレイスで販売しているか、独自のインターネットショップを運営している場合、競合他社はパーサーを起動し、15〜30分ごとにあなたの価格を取得し、自動的に1〜2%低い価格を設定することができます。あなたはなぜ売上が減少しているのか理解できません。パースボットもサーバーに負荷をかけます:毎分数百のリクエストが実際の顧客のためにサイトを遅くし、コンバージョンに直接影響します。
クリック詐欺
Facebook AdsやGoogle Adsを使用しているアービトラージャーやマーケティング担当者は、クリックの不正操作に定期的に直面しています。クリックボットはあなたの広告をクリックし、コンバージョンなしで予算を消費します。調査によると、特定のニッチでは広告トラフィックの20〜30%がボットによるものです。正しいルールを持つリバースプロキシは、そのようなソースを特定し、ブロックするのに役立ちます。
脆弱性スキャナー
ShodanやMasscanのような自動スキャナーや、数百のあまり知られていないツールが、常にインターネット全体を巡回して保護されていないサイトを探しています。彼らは古いCMSのバージョン、オープンポート、標準パスワードをチェックします。あなたのサイトがWordPressや他の人気のあるプラットフォーム上にある場合、確実に彼らのデータベースに登録されています。保護がなければ、脆弱性が見つかるのは時間の問題です。
DDoS攻撃とサーバーの過負荷
競合他社や単なる悪意のある者が、あなたのサイトを最も不適切なタイミングでダウンさせる攻撃を仕掛ける可能性があります — 例えば、セール期間中や活発な広告キャンペーン中です。数千のリクエストのDDoSでも、安価なホスティングを「ダウン」させることができます。
実際の統計:
Impervaのデータによると、インターネットトラフィックの47%以上がボットによって生成されています。そのうち約30%は悪意のあるボットです。あなたのサイトが1日に1000人の訪問者を受けている場合、そのうち約300人はサーバーに負荷をかけ、分析を歪める自動スクリプトです。
リバースプロキシがサイトを保護する方法:動作メカニズム
リバースプロキシは、複数のレベルでサイトを保護します。これらのレベルを理解することで、システムを正しく設定し、重要なステップを見逃さないようにできます。
レベル1 — 実際のIPの隠蔽
トラフィックをリバースプロキシに向けると、あなたのサーバーの実際のIPアドレスは公開されなくなります。ボットや攻撃者はサーバーに直接アクセスできず、プロキシにぶつかります。これはDDoS攻撃からの保護に特に重要です:攻撃者があなたのサイトのドメインを知っていても、保護を回避してサーバーを攻撃することはできません。
レベル2 — リクエストの分析とフィルタリング
すべての受信リクエストは、いくつかのパラメータに基づいてチェックされます:User-Agent(どのブラウザ/ボットがリクエストを行っているか)、1つのIPからのリクエストの頻度、ジオロケーション、行動パターン。ボットは通常、リクエストを非常に速く行い、標準外のUser-Agent文字列を使用するか、データセンターの既知のIPアドレスから来ます。リバースプロキシはこれらすべてを追跡し、ブロックすることができます。
レベル3 — レート制限
実際の人間は、1分間に500ページのサイトを閲覧することはできません。リバースプロキシは制限を設定することができます:例えば、1つのIPからのリクエストは1分間に60回まで。誰かが制限を超えると、一時的にブロックされたり、CAPTCHA確認が表示されたりします。これは、通常の訪問者に影響を与えることなく、ほとんどのパーサーやスキャナーを効果的に停止させます。
レベル4 — キャッシングと負荷軽減
リバースプロキシは静的コンテンツ(画像、CSS、JavaScript)をキャッシュし、サーバーにアクセスせずに直接提供します。その結果、ボットがフィルターを突破しても、キャッシュされたページを取得するため、実際のサーバーへの負荷は最小限に抑えられます。また、これは実際の訪問者にとってサイトを高速化し、SEOやコンバージョンに良い影響を与えます。
レベル5 — SSL/TLSの終了
リバースプロキシはトラフィックの暗号化を担当します。あなたのサーバーは、各リクエストの暗号化にリソースを費やさないため、より速く動作します。そして、訪問者は保護されたHTTPS接続を見ます — これは信頼性とGoogleでのランキングの両方にとって重要です。
ソリューションの概要:Cloudflare、Nginx、Caddy — どれを選ぶべきか
リバースプロキシを設定するためのいくつかの人気のあるソリューションがあります。選択は、あなたの技術レベル、予算、タスクのスケールによります。
| ソリューション | 難易度 | コスト | 誰のために | ボットからの保護 |
|---|---|---|---|---|
| Cloudflare | 低 | 無料 / 月$20から | すべて、特に初心者 | ⭐⭐⭐⭐⭐ |
| Nginx | 中 | 無料(サーバーが必要) | 技術的なユーザー | ⭐⭐⭐⭐ |
| Caddy | 低〜中 | 無料(サーバーが必要) | 開発者、スタートアップ | ⭐⭐⭐ |
| AWS CloudFront | 高 | 使用量に応じて | 企業セグメント | ⭐⭐⭐⭐⭐ |
| HAProxy | 高 | 無料(サーバーが必要) | 高負荷プロジェクト | ⭐⭐⭐⭐ |
ほとんどのサイトオーナー、マーケティング担当者、サーバー設定に関わりたくないアービトラージャーにとって、Cloudflareは最適な選択肢です。無料プランはボットやスキャナーからの保護に関する90%のタスクをカバーします。ここから、ステップバイステップのガイドを始めます。
Cloudflareをリバースプロキシとして設定する:ステップバイステップ
Cloudflareは、DNSサーバーを簡単に変更することであなたのサイトのリバースプロキシになります。プログラミングやサーバーへのアクセスは不要で、ブラウザでの設定だけです。
ステップ1 — サインアップとサイトの追加
cloudflare.comにアクセスしてアカウントを作成します。ログイン後、"Add a Site"ボタンをクリックし、あなたのサイトのドメイン(例:myshop.ru)を入力します。無料プランを選択してください — 最初はこれで十分です。
Cloudflareは自動的にあなたのDNSレコードをスキャンし、そのリストを表示します。すべてのレコードが正しいことを確認してください(通常はサーバーのIPを持つAレコードとメール用のMXレコードです)。"Continue"をクリックします。
ステップ2 — ドメインレジストラでのDNSサーバーの変更
Cloudflareはあなたに2つのネームサーバーのアドレスを提供します — 例えばalex.ns.cloudflare.comとdiana.ns.cloudflare.comのようなものです。あなたのドメインレジストラの管理パネル(RU-CENTER、Reg.ru、Namecheapなど)にアクセスし、現在のネームサーバーをこれらの2つのアドレスに置き換えます。
DNSの更新には15分から48時間かかります。すべてが更新されると、あなたのサイトへのすべてのトラフィックはCloudflareのサーバーを通過し、リバースプロキシが自動的に機能します。
ステップ3 — 必要に応じて「Under Attack」モードを有効にする
CloudflareのパネルでSecurity → Overviewセクションに移動します。ここで、保護レベル(Security Level)を確認できます。ほとんどのサイトには「Medium」レベルが適しています。サイトにアクティブな攻撃がある場合は、一時的に「Under Attack Mode」に切り替えます:すべての訪問者は、ボットが通常通過しないJS確認を受けます。
ステップ4 — ボットファイトモードの設定
Security → Botsに移動します。"Bot Fight Mode"スイッチをオンにします — これは自動ボットからの基本的な保護で、無料で利用できます。Cloudflareは既知の悪意のあるボットからのトラフィックを自動的に特定し、ブロックします。
有料プラン(Pro以上)では、より詳細な設定が可能なSuper Bot Fight Modeが利用できます:検索ボット(Googlebot、Yandexbotは通過させる必要があります!)や確認済みボット(稼働時間の監視)および疑わしい自動リクエストの動作を個別に設定できます。
ステップ5 — ファイアウォールルールの作成
Security → WAF → Firewall Rulesに移動し、あなたのタスクに合わせたルールを作成します。すぐに追加すべきルールのいくつかの例を示します:
ルールの例1 — 空のUser-Agentのブロック:
条件:http.user_agent eq "" → アクション:Block。実際のブラウザは常にUser-Agentを送信します。空のUser-Agentはほぼ常にボットです。
ルールの例2 — 既知のスキャナーのブロック:
条件:http.user_agent contains "sqlmap" or http.user_agent contains "nikto" or http.user_agent contains "nmap" → アクション:Block。これは脆弱性を探すためのツールです。
ルールの例3 — 地理的ブロック(必要な場合):
条件:ip.geoip.country in {"CN" "KP" "IR"} → アクション:Challenge (CAPTCHA)。あなたのビジネスがロシアでのみ運営されている場合、攻撃の大部分が来る国をブロックできます。
ステップ6 — レート制限の設定
Security → WAF → Rate limiting rulesセクションでリクエストの頻度を制限するルールを作成します。例えば:1つのIPアドレスからのリクエストは1分間に100回まで。制限を超えた場合は、CAPTCHAを表示するか、一時的にブロックします。これは、あなたのサイトのすべてのページを迅速に収集しようとするほとんどのパーサーを停止させます。
Nginxリバースプロキシの設定:基本構成
自分のVPSサーバー(例えば、Timeweb、Selectel、DigitalOceanなど)を持っている場合、Nginxをリバースプロキシとして設定できます。これにより、より多くの制御と柔軟性が得られますが、コマンドラインの基本的なスキルが必要です。
一般的な構成:あなたはアプリケーション(例えば、ポート8080のインターネットショップ)を持つメインサーバーを持ち、すべてのトラフィックを受け取り、アプリケーションに転送するNginxを持つ別のサーバーまたは同じサーバーをポート80/443で持っています。
ボットからの保護を持つリバースプロキシとしてのNginxの基本構成は次のようになります:
server {
listen 80;
server_name mysite.ru www.mysite.ru;
# HTTPSへのリダイレクト
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name mysite.ru www.mysite.ru;
ssl_certificate /etc/letsencrypt/live/mysite.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mysite.ru/privkey.pem;
# 空のUser-Agentのブロック(UAなしのボット)
if ($http_user_agent = "") {
return 403;
}
# User-Agentによる既知のスキャナーのブロック
if ($http_user_agent ~* (sqlmap|nikto|nmap|masscan|zgrab|python-requests)) {
return 403;
}
# レート制限 — 制限ゾーンを適用
limit_req zone=one burst=20 nodelay;
# 実際のサーバーへのリクエストの転送
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 実際のサーバーに関する情報を隠す
proxy_hide_header X-Powered-By;
proxy_hide_header Server;
}
}
# レート制限ゾーンの定義(httpブロックに追加)
# limit_req_zone $binary_remote_addr zone=one:10m rate=60r/m;
proxy_hide_headerディレクティブに注意してください — これは、実際のサーバーやCMSに関する情報を公開するヘッダーを隠します。これにより、脆弱性スキャナーの作業が難しくなります:彼らは何を探しているのかを知りません。
limit_req_zoneゾーンは、各IPアドレスを1分間に60リクエストに制限します。burst=20パラメータは短期間のスパイクを許可します(実際のユーザーはすぐにいくつかのページを開くことができます)が、長期間の高負荷はブロックされます。
アービトラージャーとマーケティング担当者にとって重要:
あなたがレジデンシャルプロキシを使用して、異なる地域からのランディングページの見え方を確認している場合、あなたのプロキシがブロックされないようにしてください。CloudflareやNginxの設定で、あなたのプロキシサーバーのIPアドレスをホワイトリストに追加します。
ボットとスキャナーのブロックルール:チェックリスト
リバースプロキシの基本設定の後、このチェックリストを使用して、保護が包括的に設定されていることを確認してください。各項目は、閉じる必要がある別々の攻撃ベクトルです。
✅ 基本的な保護(すべての人に必須)
- CloudflareでBot Fight Modeが有効になっている(または他のソリューションの類似機能)
- レート制限が設定されている:1つのIPから1分間に60〜100リクエストを超えない
- 空のUser-Agentからのリクエストがブロックされている
- 既知のスキャナーがブロックされている:sqlmap、nikto、nmap、masscan
- ServerおよびX-Powered-Byヘッダーが隠されている(サーバーとCMSのバージョンを表示しない)
- HTTPSが設定され、HTTPが自動的にHTTPSにリダイレクトされる
- サーバーの実際のIPが公開データベース(Shodan、Censys)に表示されない
✅ 高度な保護(攻撃を受けやすいサイト向け)
- ハニーポットが設定されている — ボットだけが見る隠れたページ(実際のユーザーはそこにアクセスしない)。ハニーポットを訪れたIPは自動的にブロックされる
- ブラウザの整合性チェックが有効になっている(CloudflareのBrowser Integrity Check)
- 疑わしいトラフィックに対してCAPTCHAが設定されている(すべてのトラフィックではなく、疑わしいトラフィックのみ)
- 正当なトラフィックが期待されない国の地理的ブロック
- ログの監視:403/429エラーの急増時にアラートが設定されている
- 主要なクラウドプロバイダー(AWS、Azure、GCP)のIP範囲をブロックする — ほとんどのボットはクラウドから動作する
- 攻撃的なボットに対する禁止を含むrobots.txtが設定されている
✅ 特定のページの保護
- ログインページ(/admin、/wp-admin、/login) — 厳格なレート制限(1分間に5〜10回の試行)と二要素認証
- APIエンドポイント — APIキーまたはトークンによる必須認証
- 価格ページ — 頻繁なリクエストに対する追加の確認(パース防止)
- 登録/申請フォーム — CAPTCHAまたはボット用の見えないハニーポットトラップ
有益なボットをブロックしないでください!
GooglebotとYandexbotは必ず通過させる必要があります — 彼らはあなたのサイトをインデックスします。Cloudflareでは、彼らは自動的に「Verified Bots」カテゴリに入るため、正しい設定を行えばブロックされません。Security → Bots → Bot Analyticsセクションで確認してください。
モニタリング用プロキシ:サイトの保護を確認する方法
リバースプロキシを設定した後、保護が正しく機能していることを確認し、実際のユーザーをブロックしていないことを確認することが重要です。ここで役立つのが通常のプロキシです — あなた自身が「外部ユーザー」となり、サイトの動作を確認します。
マーケティング担当者とアービトラージャーがプロキシを通じてサイトを確認する理由
状況を想像してください:ボットからの保護を設定し、地理的ブロックを有効にしたところ、突然コンバージョンが減少していることに気づきます。特定の地域やデバイスからの実際のユーザーを誤ってブロックしている可能性があります。これを確認するには、異なる国や接続タイプのプロキシを通じてサイトにアクセスします。
このようなタスクには、モバイルプロキシが最適です — これは、通信事業者を介して実際のモバイルデバイスからの接続を模倣します。あなたのブロックルールがモバイルトラフィックを正しく通過させる場合、通常のスマートフォンユーザーは保護の影響を受けていないことになります。
実際の確認シナリオ
シナリオ1 — 地理的可用性の確認。 あなたはFacebook Adsでロシアのいくつかの地域をターゲットにした広告を開始しました。ノボシビルスク、エカテリンブルク、クラスノダールのIPを持つプロキシを通じて、ランディングページが正しく開き、CAPTCHAを表示せず、迅速に読み込まれることを確認します。
シナリオ2 — レート制限のテスト。 1つのプロキシを通じて複数のタブを開き、ページ間を迅速に移動します。正常な動作の際にブロックされる場合 — 制限が低すぎます。引き上げる必要があります。
シナリオ3 — 異なるタイプのIPからの確認。 データセンターのプロキシを通じてアクセスしてみてください(ボット/サーバーの模倣) — あなたの保護が機能している場合、そのリクエストはCAPTCHAまたはブロックを受けるべきです。その後、レジデンシャルプロキシを通じてアクセスします(通常の家庭ユーザーの模倣) — アクセスは自由であるべきです。
シナリオ4 — 競合による確認。 あなたのサイトをスパースするのがどれほど難しいかを確認したい場合は、簡単なツールを使用して自分で試してみてください。パーサーが10〜20リクエストの後にブロックされる場合 — 保護が機能しています。データを問題なく収集できる場合 — ルールを厳しくする必要があります。
保護の効果をモニタリングする
CloudflareでSecurity → Overviewセクションに移動します — ここでブロックされたリクエストのグラフ、脅威の種類、攻撃の地理を確認できます。次の点に注意してください:
- ブロックされたリクエストの急増 — アクティブな攻撃やパースの兆候
- 1つの国からのトラフィックの高い割合 — 地理的ブロックを追加する必要があるかもしれません
- ログにおける403/429エラーの増加 — 実際のユーザーがブロックされていないか確認してください
- /admin、/wp-login.phpへの定期的なリクエスト — ハッキングの試み、これらのパスの保護を強化してください
結論:リバースプロキシはオプションではなく必需品
リバースプロキシは、もはや大企業だけのツールではありません。今日では、小さなインターネットショップ、アービトラージキャンペーン用のランディングページ、SMMエージェンシーのサイトでさえ、ボット、スキャナー、競合のパーサーからの基本的な保護が必要です。
このガイドからの重要な結論:Cloudflareは技術的知識なしでの最速のスタート、Nginxは自分のサーバーを持っている場合の最大の制御です。どちらの場合も、基本的な保護は30〜60分で設定でき、80〜90%の一般的な脅威をカバーします。役立つボット(Googlebot、Yandexbot)がホワイトリストに残り、実際のユーザーが過度に攻撃的なルールの影響を受けないことを確認するのを忘れないでください。
プロキシを使用している方への別のポイント:広告キャンペーンを確認したり、競合を監視したり、異なる地域からのサイトの可用性をテストしたりする場合、これらのタスクにはレジデンシャルプロキシが最適です。これらは実際の家庭ユーザーのIPアドレスを持っているため、ほとんどの保護システムを通過し、通常の訪問者と同様にあなたのオーディエンスが見るものの客観的な画像を提供します。