web-dev-qa-db-ja.com

stunnel上のsshトンネルを逆にします(またはstunnel接続を逆にします)

Natまたは任意のファイアウォールの背後に展開できるセキュリティ「ドロップボックス」を作成し、制御された公的にアクセス可能なサーバーに呼び出して、サーバーから制御を開始します。

これはssh-Rコマンドで簡単に実行できることはわかっていますが、適切なSSL/TLSとポート443を介してIDS/IPSを効果的に回避するものを探しています。

現在、機能しているセットアップ(SSLのみ)では、ドロップボックス(これをクライアントと呼びます)がサーバーとのstunnel接続を呼び出して開始します。その後、クライアントからサーバーに手動でsshを実行できます。

これは問題ありませんが、確立されたstunnelを介してサーバーからクライアントにSSH接続できる必要があります。

質問:

  1. 既存のstunnel接続(クライアントによって開始されたstunnel)を介してサーバーから直接sshすることはできますか?これにはstunnel構成の変更が必要な場合がありますが、何を変更すればよいか迷っています。
  2. クライアントからstunnelを介してサーバーへのSSHトンネルを逆にして、サーバーがクライアントにSSHで戻るためのローカルポートを持つようにすることはできますか?もしそうなら、私はループを作成してしまうと思うので、ssh-Rコマンドを正しく動作させることができませんでした。

以下は私のstunnel設定です:

サーバ:

cert=/path/to/cert.pem
pid=/tmp/stunnel.pid
[ssh]
accept = 443
connect = 127.0.0.1:22

クライアント:

cert=/path/to/cert.pem
pid=/tmp/stunnel.pid
client=yes
[ssh]
accept=2200
connect=<serverpubip>:443

Stunnel接続を介してクライアントからサーバーへのリバースを試行するSSHコマンドの例:

ssh -i /path/to/cert -R 2200:localhost:2200 -p 2200 admin@localhost -f -N

要件は、クライアントのみがサーバーを呼び出して初期接続(stunnel)を開始でき、トラフィックは整形式のSSL/TLS暗号化を介している必要があることです。また、サーバーからクライアントへのシェルアクセスを取得する必要があります。前もって感謝します!

更新:

それは結局悪いsshコマンドでした。私のために働いたsshコマンドは次のとおりです。

ssh -i /path/to/cert -R 2201:localhost:22 -p 2200 admin@localhost -f -N
3
eficker

必要なのは、sshコマンドで-R 2200:localhost:2200-R 2200:localhost:22に変更することだけだと思います。

現状では、サーバーのポート2200をクライアントのポート2200に接続し直しています。はい、client:2200がサーバーにトンネリングされるため、転送ループが作成されます。

クライアントのsshがポート22で実行されているとすると、-R 2200:localhost:22はサーバーのポート2200をクライアントのsshに接続します。

これをもう少し明確にするために、サーバーからトンネルを逆にするために別のポート番号を選択することをお勧めします:たとえば、-R 2201:localhost:22。そうすれば、両方のホストでポート2200を使用しなくなり、2つのポートが混乱するのを防ぐことができます。

2
Andrew Schulman

実際のツールでの目標は達成できません。

  1. stunnelは、この逆接続機能を実行できません。
  2. sshはデーモンとして機能せず、httpsとはプロトコルが少し異なります。十分なスマートIDS-esがそれを検出できるようになります。

あなたがしなければならなかったこと:

  1. @NilsToedtmannが示唆したように、少なくともOpenVPNなど、ある種のトリッキーなものを使用する必要があります。 openvpnのクライアント側は内部で実行する必要があります。タイムアウト/キープアライブ設定に注意してください!可能な限り最小のオーバーヘッドトラフィックを作成する必要がありました。
  2. OpenVPNトラフィックは通常のhttpsとは危険なほど異なりますが、 obfsproxy という名前のツールがあり、OpenVPNトラフィックをより見栄えの良いデータストリームに埋め込むことができます。このツールはtorプロジェクトの一部ですが、独立して使用することもできます(元々、中国の大きなファイアウォールに対して開発されました)。
  3. 写真に何らかの種類の企業ファイアウォールがある場合は、 cntlm を使用して、これをie8のように見せ、Kerberosと互換性を持たせることができます-認証された企業プロキシ
  4. サーバー側には、非常に便利なツールがあり、その名前は sslh です。これにより、通常のhttpsサービスを使用してhttpsトラフィックを介してopenvpn/sshを多重化することができます。

したがって、実際のデータ接続は希望するほど単純ではありませんが、希望するものに到達することはできます。これらのテクノロジーをすべて使用すると、インテリジェントなネットワークセキュリティチェックにも対抗できる可能性があります。

「dropbox」に永続的なreverse_tcp(s)meterpreterをインストールしてみませんか?これがhttp(s)を介してリバースシェルを取得する最も簡単な方法だと思います。

2
Kasper Taeymans