透過的なSSLプロキシの神話と事実


8

SSLの透過プロキシ(Squidではない)をセットアップする方法について、私は何時間も探してきました。一般的な答えはできませんが、いくつかの方法があることはわかっています。私の目的は以下のみです:

  1. ブラックリスト/ホワイトリストドメイン名(IP番号ではない)。コンテンツはフィルタリングまたは変更されません。
  2. これらのリストを使用してユーザーを強制します。Webブラウザーでこのような設定を変更すると、元に戻すことができます。

次のページでは、トラフィックを変更せずに通過させることができますが、方法はわかりません: iptables https透過プロキシとprivoxy?

次のページは、私が自分で機能させることができなかった443のiptablesルールを示しています。http//alien.slackbook.org/dokuwiki/doku.php?id = slackwareproxy

次のページでは、これをSquidでのみ機能させる方法を説明しています。http//www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https

編集:ある人がここで言う: IPTABLESを使用してSquidの周りにHTTPS(443)パススルーを作成するにはどうすればよいですか? 「あなたにとって最善のことは、ポート443への直接アクセスをブロックし、HTTPSを使用したい場合は、プロキシを使用するようにブラウザを設定する必要があることをユーザーに伝えることです。」しかし、私は443を完全にブロックする方法を知っています。プロキシの下でそれを機能させるためではありません。

回答:


7

ドメイン名でフィルタリングする場合は、2つの方法があります。HTTPS接続にプロキシを使用し、その接続でフィルタリングする必要があることがわかっている場合は、クライアントが発行したCONNECTメソッドから名前を取得できます(Squidsはこれをサポートしています)ところで)。あなたがいる場合や、本当に 、本当に透過的にそれを実行する必要があり、あなたは(暗号化)リクエストヘッダを検討する必要があります。

暗号化されたリクエストヘッダーを表示するには、キーが必要です。キーが必要な場合は、a)クライアントから「正しい」証明書であると信頼され、b)可能なすべてのホスト(ワイルドカードすべて)を証明する証明書が必要です。

だからあなたがする必要があるのは

  1. プロキシの証明書を設定します。これはソフトウェアによって異なります。プロキシの側でSSL接続を終了するためにstunnelを使用し、その背後にいくつかのフィルタリングHTTPプロキシを設定し、iptables DNATターゲットを使用してすべての発信トラフィックに対してSSLを再確立し、再度stunnelを実行します。MitM SSLプロキシの「ボックス化」ソリューションも存在する可能性があります。
  2. プロキシを使用するすべてのクライアントに前述の証明書をインストールします

ほとんどの場合、透過的なプロキシが必要なのは、プロキシを使用するようにクライアントを再構成したくない、または再構成できないためです。これがあなたのリクエストにも当てはまる場合は、おそらくクライアントに証明書をインストールして「信頼されている」とマークするオプションがないでしょう。したがって、透過的なSSLプロキシの技術的な方法はありますが、それほど多くの利益が得られるとは思えません。


これは、透明なプロキシについての事実を私に非常に明確にするのに十分でした。ありがとうございました!
テレサeジュニア

「... HTTPSの接続にプロキシを使用し、その接続にフィルタをかける必要があることがわかっている場合、クライアントが発行したCONNECTメソッドから名前を取得するには」
Big McLargeHuge 2013年

@ davidkennedy85をSquidで使用する方法は、他のアクセス方法をフィルターする場合とほぼ同じです。ACLを使用するだけです。例:servercomputing.blogspot.de/2012/01/...
-wabbit

あなたの説明はほとんど理解できません。私は多くのことを学びました。ありがとう。疑わしいと思うのは、ホスト名(ドメイン名)がトラフィックを監視している人なら誰でも知っているということです。security.stackexchange.com/questions/2914/...
アルバートNetymk

4

私はこれが古い質問であることを知っていますが、OPが特定のドメイン名をブラックリスト/ホワイトリストに登録するだけであれば、プロキシを使用する必要はなく、DNSベースのブラックリストを使用できます。

  • ブラックリストに登録したいドメインの127.0.0.1を返すようにオンサイトDNSサーバーを設定します
  • インターネットゲートウェイで、DNSサーバー以外のすべてのIPがTCP / UDPポート53にアクセスできないようにブロックします。これにより、DNSサーバーのみがインターネットベースのサーバーからDNS要求を行うことができます。

他のドメインはすべて許可されます。SSLまたはその他のすべてのWebトラフィックは、そのままゲートウェイを通過します。

編集: OPがユーザーにリストを強制する準備ができているので、DNSにアクセスする他の方法をブロックできます。このように、ユーザーがブロックされている他のDNS方法のいずれかを使用しようとすると、Webサイトは機能しません。別名「私の道または高速道路」

@wheelerが言及したことをDNSオーバーHTTPSのために、あなただけのようなサイトへの定期的なDNSのlooksupsをブロックすることができhttps://dns.google.comhttps://cloudflare-dns.com/dns-queryhttps://でdoh.cleanbrowsing.org/doh/family-filter/。しかし、オンラインになるサービスが増えるにつれて、これはすぐに受け入れられなくなります。

開発中のDNSの他の方法でapplication / dns-udpwireformatなどのMIMEタイプをブロックする方法も必要になる場合があります。


DNS-over-HTTPSが現在のものであることを考えると、もはやあまり効果的なソリューションではありません。
ウィーラー2018

2

デリゲートは、HTTPSの中間者プロキシとして機能できます。


本当にありがとうございましたが、動作させることができませんでした。それはそれがポート80のものとは異なるiptablesルールを必要とするようです、または私がデリゲートのために理解できないいくつかのオプションがあります。
Teresa e Junior

1

透過モードの場合、インラインIPS(Suricata、Snort)システムは、SSLサイトをブロックするのに役立ちます。

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Setting_up_IPSinline_for_Linux

特定のユーザーのSSLサイトルールをブロック:

drop ip any 443 -> 192.168.3.x any (content:".facebook.com"; msg:"Simplewall block facebook.com  ";sid:7;rev:1;)

drop ip any 443 -> 192.168.3.204 any (content:".youtube"; msg:"Simplewall block youtube.com" ;sid:4;rev:1;)

拡張子に基づくファイルダウンロードルールのブロック:

drop ip any any -> 192.168.3.63 any (msg:"File exe block"; fileext:"exe"; filestore ;sid:1;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File mp3 block"; fileext:"mp3"; filestore ;sid:11;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File pdf block"; fileext:"pdf"; filestore ;sid:21;rev:1;)

SimpleWallでこれを試してください

Simplewall Webインターフェイスでブロックルールを追加するのは非常に簡単です。

Simplewall => Content FilterIPSの同じルールを使用して、httpコンテンツフィルターとともにルールを追加することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.