要件#
Cloudflare のビジネスプラン($200 以上)が必要です。PRO プランの場合は、この記事を参考にしてください:https://moeyy.cn/posts/d4fb87f4694a.html
あなたのサイトは HTTPS を使用する必要があります。
開始(CloudFlare での操作)#
スーパーボットファイトモードの設定#
まず、Cloudflare のコントロールパネルにログインし、ドメイン→ファイアウォール→スーパーボットファイトモードを選択し、スーパーボットファイトモードの設定をクリックします。
以下の画像のように設定してください。
ホストルールの設定#
次に、ファイアウォール→ホストルールを開き、すべてのオプションをチェックし、感度を高、アクションをチャレンジに設定します。
ウェブサイトと SSL 証明書の設定#
以下は私のルールの概要です。
サイトに SSL 証明書を設定し、HTTP/2 プロトコルを有効にすることをお勧めします:
また、強制的な HTTPSを有効にし、最低 TLS バージョンを1.1に制限することもできます(現在のブラウザの最低バージョンは 1.2 です)。以下の画像を参照してください。
ページルールの設定#
以下は私の設定の例です。
ファイアウォールルールの設定#
ブロックルール:#
Tor はオニオンルーティングであり、ブロックすることができます。脅威スコアが 5 以上の場合はブロックします。脅威スコアは通常の訪問者には影響しませんので、誤ってブロックされる心配はありません。
CAPTCHA ルール:#
最初のセクションは、HTTPS で HTTP/1 のバージョンのアクセスを禁止することを意味します。なぜなら、正常な訪問者は HTTPS で HTTP/2 を使用するからです。ただし、プロキシ CC の場合は HTTP/1 になります。ただし、あなたのウェブサイトが HTTPS を有効にしていない場合、このルールは効果がありません。
ユーザーエージェントについては、奇妙な UA を防止するために使用されます。
脅威スコアが 1 以上の場合、自動的に CAPTCHA が表示されます。通常のブラウザやクリーンな IP ではトリガーされません。
最後のルールは IP スーパースプーフィングを防ぎます。
ルールの設定だけでなく、他の設定も行う必要があります。
たとえば、HTTP DDOS の設定をすべて最大にします:
ここで、Cloudflare での設定は完了です。次はオリジンサーバーの設定です。
Nginx の設定#
まず、Cloudflare で次の操作を行います:
HTTP リクエストヘッダーの変更を作成し、内容を User-Agent: XXX(XXX は他のものに置き換えることができます)に設定します:
私の場合はmoeyydadですが、他のものに置き換えてもかまいません。他の人に推測されないようにしてください。
次に、nginx の設定ファイルに次の if 文を追加します。
if ($http_user_agent != "moeyydad"){
return 444;
}
このコードは、root の下に追加します。
証明書の保護#
オリジンサーバーの証明書がスキャンされないようにすることができます。オリジンサーバーが SSL でバックエンドに接続している場合、証明書をアップロードする必要がありますが、自分自身の証明書を使用することはできません。自己署名証明書を使用することができます。例えば:
証明書#
-----BEGIN CERTIFICATE-----
MIIDITCCAsagAwIBAgIUTcEWLzynkLCFCoAC1iDH2vG3EkYwCgYIKoZIzj0EAwIw
gY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTgwNgYDVQQL
Ey9DbG91ZEZsYXJlIE9yaWdpbiBTU0wgRUNDIENlcnRpZmljYXRlIEF1dGhvcml0
eTAeFw0xOTAxMTMxNDMxMDBaFw0zNDAxMDkxNDMxMDBaMGIxGTAXBgNVBAoTEENs
b3VkRmxhcmUsIEluYy4xHTAbBgNVBAsTFENsb3VkRmxhcmUgT3JpZ2luIENBMSYw
JAYDVQQDEx1DbG91ZEZsYXJlIE9yaWdpbiBDZXJ0aWZpY2F0ZTBZMBMGByqGSM49
AgEGCCqGSM49AwEHA0IABAg/hZ9lDHj/f+0jDRAN23TkNEqIi46mCGnwZVD3glxL
l+a1mpfXLHSEFTipnSyQgmvkPYzQGaEIFD0q6W/ZgMujggEqMIIBJjAOBgNVHQ8B
Af8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAwGA1UdEwEB
/wQCMAAwHQYDVR0OBBYEFCEZF6Eyem01XPbgwr6DXLZV1qsQMB8GA1UdIwQYMBaA
FIUwXTsqcNTt1ZJnB/3rObQaDjinMEQGCCsGAQUFBwEBBDgwNjA0BggrBgEFBQcw
AYYoaHR0cDovL29jc3AuY2xvdWRmbGFyZS5jb20vb3JpZ2luX2VjY19jYTAjBgNV
HREEHDAaggwqLmRuc3BvZC5jb22CCmRuc3BvZC5jb20wPAYDVR0fBDUwMzAxoC+g
LYYraHR0cDovL2NybC5jbG91ZGZsYXJlLmNvbS9vcmlnaW5fZWNjX2NhLmNybDAK
BggqhkjOPQQDAgNJADBGAiEAnrequCk/QZOOrcPH6C3Hgcy4SPNUy5rQtku/aYkj
qQoCIQCN6IyYNiXuwG+8jUgJrveiirBjiz2jXZSTEfVAyibjTg==
-----END CERTIFICATE-----
秘密鍵#
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgK0HE3hTJQDg6p/fj
nS92eSuRKZEZ5F4grT6tWFKNYVmhRANCAAQIP4WfZQx4/3/tIw0QDdt05DRKiIuO
pghp8GVQ94JcS5fmtZqX1yx0hBU4qZ0skIJr5D2M0BmhCBQ9Kulv2YDL
-----END PRIVATE KEY-----
ソース IP が漏洩しないかどうかをテストする方法は?
まず、hosts ファイルにソース IP とドメインを追加し、ブラウザを開いてアクセスします。アクセスできない場合は成功です。なぜなら、UA の制限を受けているからです。
次に、証明書がドメインのものではないことを確認します。デフォルトの証明書も確認してください。https://ip/ にアクセスして、証明書がドメインのものではないか確認してください。もしそうでなければ、成功です。
その他の設定#
地域のブロック#
訪問者が中国地域のみの場合、中国のアクセスのみを許可するように設定できます:
レート制限の使用#
ウェブサイトの API やその他の要素に基づいてレート制限を設定できます。
カスタムホストのバックエンド#
これはカスタム UA のバックエンドと似ています。現在、一部のスキャンツールは、グローバルな IP にホストヘッダーを持ってアクセスしてテストや検証を行っています。
たとえば、バックエンドドメインをmoeyydad.xyzに設定し、ソースドメインmoeyy.cnをmoeyydad.xyzに置き換えると、攻撃者は私たちのソースサーバーを見つけることができません。カスタム UA のバックエンド、ソースサーバーの設定でCF の自己署名 SSL 証明書を使用すると、攻撃者は私たちのソースサーバーを見つけることができません。
CF の自己署名 SSL 証明書は、次の場所で生成できます:
上記の手順を完了すると、あなたのウェブサイトは無敵になります。