27

私の職場では、交通ブロッカー/ファイアウォールが次第に悪化しています。ポート22でホームマシンに接続できず、sshアクセスがないので悲しくなります。以前はSSHをポート5050に移動することで使用できましたが、最近のフィルターの中には、このトラフィックをIMとして扱い、別のプロキシを介してリダイレクトするものがあると思います。それが私の一番の推測です。いずれにせよ、ログインする前にssh接続が終了するようになりました。

最近は、ポート443がまだ修正されていないため、HTTPS経由でAjaxtermを使用していますが、これは理想からはほど遠いものです。(端末エミュレーションがうまくいかない、ポートフォワーディングがない、ブラウザが驚くべき速度でメモリリークを起こす...) HTTPS経由でリクエストを送信できるという考えで、mod_proxy_connect上にセットアップしてみたところ、すべて設定されました。 。悲しいことに、これは機能しないようです。HTTPS接続は、リクエストの送信が完了するまで機能します。その後、SSLがクラップスします。パイプスルーを継続するのではなく、接続全体を引き継ぐように見え、HTTPSクライアントからの混乱を招きます。mod_sslCONNECT localhost:22 HTTP/1.1mod_proxy_connectmod_ssl

これを機能させる方法はありますか?いくつかの理由から、プレーンHTTPでこれを実行したくありません。

  • そのような大きなファットオープンプロキシを残すことはただ悪臭を放ちます
  • ビッグファットオープンプロキシはHTTPSでも適切ではありませんが、認証が必要な場合は問題ないと感じます
  • HTTPはプロキシを通過します-トンネルを「プレーンテキスト」で通過するのはsshであるため、トラフィックがスニッフィングされることについてはあまり心配していません-しかし、HTTPSよりもはるかに壊れやすい可能性があります。プロキシされる

要件:

  • 他のHTTPSトラフィックを妨害することなく、ポート443で動作する必要があります(つまり、HTTPS経由でページを提供できなくなるため、sshサーバーをポート443に配置することはできません)
  • Windows(またはCygwin)で実行される単純なポートフォワーダークライアントを持っているか、書くことができます

編集

DAG:SSH over HTTP(S)のトンネリングが指摘されましたが、役に立ちません。記事の最後に、バグ29744が記載されています-CONNECTは既存のSSL接続では機能せず、HTTPSでのトンネリングを防ぎます。私が遭遇した問題。この時点で、私はおそらくいくつかのCGIスクリプトを検討していますが、より良いソリューションが利用できる場合は、それを要件としてリストしたくありません。

4

13 に答える 13

8

会社がそのような制限的なポリシーを持っている理由を調べてください。それは正当な理由かもしれません。

それでもポリシーをバイパスしたい場合は、ポート 443 でサーバーをリッスンし、要求に応じてトラフィックを Web サーバーまたは SSH デーモンに転送する小さなプロキシを作成できます。ただし、2 つのキャッチがあります。

  1. それが HTTPS リクエストか SSH リクエストかを判断するには、(短い) タイムアウトでデータを読み取る必要があります。これは、TLS/SSL ハンドシェイクがクライアントからデータを送信することで開始されるのに対し、SSH ハンドシェイクはサーバーで開始されるためです。いくつかのデータを送信しています。タイムアウトは、TLS/SSL ハンドシェイクでクライアントからの初期データの配信を遅らせるのに十分な大きさである必要があるため、SSH 接続の確立が遅くなります。

  2. あなたの会社の HTTP プロキシがスマートであれば、CONNECTポート 443 に接続すると、予想される TLS/SSL の「ハンドシェイク」を実際に傍受し、それが TLS/SSL ハンドシェイクではないことを検出すると、SSH 接続を終了する可能性があります。試み。これに対処するには、SSH デーモンを TLS/SSL トンネル (例: stunnel) にラップすることができますが、TLS/SSL をルーティングするかどうかを判断するには、クライアント要求の TLS/SSL バージョンに基づいて要求を区別する必要があります。 Web サーバーまたは TLS/SSL トンネリングされた SSH デーモンへの接続。

于 2008-10-08T23:35:58.530 に答える
6

自宅で OpenVPN 2.1 サーバーをセットアップし、ポート 443 を使用します (ポート 443 で自宅の HTTPS サービスをセットアップする場合は、OpenVPN のポート共有オプションをトリガーして、ポート 443 で OpenVPN と HTTPS トランザクションの両方を処理します。この機能は、 Windows OS)

次に、ラップトップに OpenVPN クライアントをロード ウォリアー モードでセットアップして、自宅の OpenVPN サーバーにアクセスします。OpenVPN で作成した安全な VPN ネットワーク内で、自宅や好きな場所に電話をかけることができます。この目的で SSH を使用する必要はなくなりました。

于 2008-11-24T09:03:20.473 に答える
6

ポート443でホームサーバーに接続している他のすべてのマシンがApacheサーバーを取得している間、iptablesを使用して仕事用マシンからsshトラフィックをsshに転送できるはずです。

次のようなルールを試してください。

iptables -t nat -A PREROUTING -p tcp -s 111.111.111.111 --dport 433 -j REDIRECT --to-port 22

111.111.111.111 はオフィス コンピューターの IP アドレスです。

これはすべて、あなたが Linux >= 2.4 を実行していることを前提としています。それはほぼ10年間出てきました。

iptables のドキュメントはhttp://www.netfilter.orgにあります。

于 2008-10-08T23:57:41.853 に答える
2

ここで悪魔の擁護者になって本当に申し訳ありませんが、彼らがあなたの職場で港をブロックしている場合、それはおそらく人々がセキュリティを侵害することを望まないためです。

さて、上司からトンネルを開く許可を得れば、それは問題ありませんが、何かが起こった場合、何でも、彼らはあなたがトンネルを持っていると理解します、私はあなたがスケープゴートになることをほぼ保証できます。ですから、もし私があなただったら、彼らがそれに対してファイアウォールを設定しているなら、私は職場でトンネルを開くことはないでしょう。

于 2008-10-08T05:17:14.707 に答える
2

仲介人を立てていただけませんか?

SSH の 443 をリッスンするクラウドで小規模/無料/安価なインスタンスを実行し、そのクラウド インスタンスを介して、お気に入りのポート (22 など) でホーム ボックスにトンネルします。

確かに多少の遅延が追加されますが、元のホームセットアップをそのままにしておくという問題は解決します.

于 2012-03-01T19:00:09.207 に答える
2

マシンで 2 つの IP アドレスを使用するのはどうですか?

一方の IP_1:443 に apache/https をバインドし、もう一方の IP_2:443 に sshd をバインドしますか?

于 2008-10-08T08:51:42.683 に答える
1

現在使用していないポートを見つけて、それをリッスンする必要があると思います。443 は明らかな候補ですが、それは不可能だとおっしゃっています。メール (25、110、143)、telnet (23)、ftp (21)、DNS (53)、さらには whois (43) はどうでしょうか?

于 2008-10-08T04:52:12.447 に答える
1

プロキシトンネルがあなたの答えかもしれません

http://proxytunnel.sourceforge.net/

私のsshサーバーがhost.domain.tldで、私の作品のプロキシサーバーが10.2.4.37だとしましょう

これをローカルのssh構成に追加します

ホスト host.domain.tld ProxyCommand /usr/local/bin/proxytunnel -q -p 10.2.4.37:3128 -d %h:%p ProtocolKeepAlives 30

于 2008-10-08T07:38:48.353 に答える
0

他の HTTPS トラフィックを妨害することなく、ポート 443 で動作する必要があります (つまり、HTTPS 経由でページを提供できなくなるため、ssh サーバーをポート 443 に置くことはできません)。

HTTPS サーバーを別のポートにバインドすることは可能ですか? 用途によっては、自宅に SSH 接続してそこから lynx を使用するだけで、職場から直接アクセスできないという問題を回避できる場合もあります。

于 2008-10-08T23:47:41.827 に答える
0

AjaxTerm を介して次の設計を使用して、会社のファイアウォールをバイパスすることができました。

会社のネットワーク上の PC --> https 経由の会社のプロキシ --> インターネット --> SSL 上の自宅の Apache リバース プロキシ サーバー + .htpasswd 保護 --> AjaxTerm サーバー (ここから、他のサーバーに SSH で接続できます)。

まだ完璧な世界ではありません... HTTPS 経由で自宅のネットワークにトンネリングできればいいのですが。

于 2012-12-03T04:18:16.633 に答える