私は Ubuntu 22.04 サーバーと、ローカル ネットワーク上のユーザーの IP アドレスのリストを持っており、このリストからの http/https トラフィックをローカルの情報 HTML ページにリダイレクトしたいと考えています。ホットスポットと同じようにapache2、squid、wpad (252 dhcp)、iptables を試しましたが、できませんでした。https はリダイレクトしません。
どうすればいいのですか?
答え1
iptables は ip:443 を別の ip:port にリダイレクトできません (情報ブロック ページで apache2 仮想ホストを公開しています)
TCP/IP ストリームをリダイレクトすることはできますが、有効な証明書を提示できないため、ブラウザにセキュリティ警告が表示されます。
squid-cache は、http ページに「エラー ページ」がある場合にのみブラウザに情報を表示します (HTTPS ではカスタム エラー ページは表示されません) (詳細については、こちらを参照してください)
ご指摘のとおり、ブラウザは TLS のエラー ページを表示しません。200 コード以外のものを受信すると、ブラウザ独自のエラー メッセージが表示されます。
ほとんど全て今日のトラフィックは TLS で暗号化されており、表示したり変更したりすることはできません。つまり、 であると主張することも、他の場所にexample.com
リダイレクトすることもできません。example.com
クライアントを完全に制御し、新しいルート証明書をインストールできない限り、 であると主張することはできませんexample.com
。
PS: https トラフィック (tcp 443) がこのページにアクセスできるブロック ページをブロックして表示する方法がある場合は、具体的な例を挙げて詳しく説明していただければ幸いです。
現代のブラウザで機能するそのような方法は存在しませんが、それは間違いではなく、デザインTLS の機能です。中間者攻撃を阻止することが目的です。基本的に、これがあなたがやろうとしていることです。
つまり、あなたが達成しようとしていることを達成する方法はありません。もしあったとしたら、それは重大なセキュリティ問題になります。
答え2
ユーザーをブロックしながらコンテンツを提供することはできません。
ブロックされていることをユーザーに知らせたい場合は、リバース プロキシ/ロード バランサーにアクセス制御リストを設定し、禁止された IP アドレスを持つクライアントを、内部またはコンテンツ配信ネットワークでホストされている静的ページに誘導することになります。