web-dev-qa-db-ja.com

サードパーティがHTTPSWebサイトをプロキシするのを防ぐ方法は?

私はある種のデータベース管理インターフェースを https://www.prettylongdomainname.example/ 実装しました HTTP Strict Transport Security 人々がHTTP経由でこのウェブサイトにアクセスするのを防ぐためにユーザーが暗号化されていないチャネルを介してログイン資格情報を送信することを望まない。

これで、1人のユーザーがドメインを登録しましたwww.pld.example私のウェブサイトに対してman-in-the-middle攻撃を効果的に実行するある種の「ドメイン名リダイレクトサービス」を提供するドメイン名プロバイダーを使用します。元のWebサイトをプロキシし、次の場所で利用できるようにします http://www.pld.example/ 一部のユーザーは、便宜上、短いURLを使用しており、パスワードをプレーンテキストで送信していることに気づいていません。 -サードパーティへのテキスト。

このタイプのMITM攻撃を防ぐために使用できるメカニズムは何ですか?

1
hedgie

ここにあなたが考慮したいと思うかもしれないいくつかの戦略があります:

1。サーバーログから、プロキシがサイトをダウンロードしていることを意味し、プロキシが彼の応答を選択的に変更していることを確認します。特定のプロバイダーを使用している場合は、アドレス空間の応答をブロックまたは変更します

2。プロキシのプロバイダーに非公式に通知するだけで十分な場合があります。必ず営業担当者ではなく、不正使用部門に直接連絡してください。サーバーIPがドメインレジストラとは異なる会社によって登録されている場合は、抵抗が最も少ない方法を選択してください。まず、最寄りの国に本社を置くプロバイダーに問い合わせてください。

3。 TLDに応じて、サイトの運営者を把握したり、DNSプロバイダーにそれらを削除するように強制する裁判所命令を取得したりすることは些細なことから不可能なことまであります

4。それらを報告してください Googleセーフブラウジングオプションを使用してください Report Phishing Page 。これにより、Googleの大君主がそう決定した場合、プロキシのユーザーに大きな警告が表示され、検索結果からサイトが削除されます。ほとんどのブラウザのほとんどのユーザーはグーグルセーフブラウジングブロックリストを使用しているので、これはすべての人に影響を与えるわけではありませんが、近くに影響します。

1
anx

これらのヘッダーの組み合わせを使用します(nginxの構成):

    # Before enabling Strict-Transport-Security headers please read into this topic first.
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;

アプリケーションによっては、Webサイトが破損する可能性があるので注意してください。それらを実装する前にここを読んでください https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security

編集:指摘されているように、それらは外部ドメインを介したプロキシを完全に防ぐことはできません。正しいホスト名を介してのみアドレス指定されているリクエストを処理する追加の手順も設定する必要があります。

デフォルトのnginx.confを次のようなものに変更します。

server {
    listen       443 ssl http2;
    server_name  _;

### Set dummy certs 
    ssl on;
    ssl_certificate /usr/local/etc/ssl/dummy.crt;
    ssl_certificate_key /usr/local/etc/ssl/dummy.key;
    ssl_dhparam /usr/local/etc/ssl/dhparam.pem;

### Block all, allow only vhosts on this server
    location / {
        limit_req      zone=one burst=10 nodelay;
        deny all;
        return  418 "I'm a teapot"; # Just for the fun of it
    }
 }

 ### Virtual Hosting
   include /usr/local/etc/nginx/conf.d/*.conf;
}

/usr/local/etc/nginx/conf.d/(FreeBSDパス、ディストリビューションに合わせて調整)で、実際のサイトの設定を含むdomain_name.confを作成し、受け入れられるserver_nameを設定します。

server_name  www.example.com example.com;

これを保護ヘッダーと組み合わせると、この種の攻撃のほとんどが阻止されます。
しかし、本当に賢いジャッカスは、リバースプロキシのホストヘッダーをスプーフィングすることもできます。
唯一の真に機能する方法https://developer.mozilla.org/en-US/docs/Web/HTTP/Public_Key_Pinning ただし、この標準は半分調理されており、実装するのが非常に危険であるため、非推奨になっています。

0
Daniel