SSHのみ:ssh SOCKSプロキシを介したリバーストンネルWebアクセス


15

時々、アクセスが非常に制限されているサーバーに接続する必要があります。
DMZファイアウォールでは、インバウンドSSHのみが許可されています。
アウトバウンドHTTP接続はブロックされます。

SSHセッションを介してWebアクセスをトンネルする簡単な方法を探しているので、yum / apt-getを介してアップデートとソフトウェアをインストールできます。理想的には、保護されたエリアに追加のソフトウェア/サービスをインストールすることは避けたいです。

そのような状況で何をしますか?

SSHには-D <port>SOCKSプロキシオプションがあります。しかし、残念ながら、それはクライアントからサーバーへの一方向のみであり、逆のオプションはありません。

回答:


26

私は最終的に次のことsshだけでこれを達成することができました:

  1. クライアントマシンでローカルSOCKSプロキシを開始します(を使用ssh -D
  2. リモートサーバーに接続しssh -R、ローカルSOCKSプロキシへのリバースポート転送()を設定します
  3. 転送されたプロキシを使用するようにサーバーソフトウェアを構成する

1.バックグラウンドでローカルソックスプロキシを起動します

SSH経由でlocalhostに接続し、ポート54321でSOCKSプロキシを開きます。

$ ssh -f -N -D 54321 localhost

-f バックグラウンドでSSHを実行します。

注:コマンドを開始した端末を閉じると、プロキシプロセスは強制終了されます。また、終了したらターミナルウィンドウを閉じるか、自分でプロセスを強制終了して、自分の後片付けを忘れないでください。

2.リモートサーバーに接続し、リバースポート転送を設定します

リモートポート6666をローカルポート54321にバインドします。これにより、ローカルソックスプロキシがリモートサイトでポート6666で使用可能になります。

$ ssh root@target -R6666:localhost:54321

3.転送されたプロキシを使用するようにサーバーソフトウェアを構成する

yum、apt、curl、wget、またはSOCKSをサポートするその他のツールを設定して、プロキシを使用するだけ127.0.0.1:6666です。

ほら!ハッピートンネリング!


4.オプション:転送されたプロキシを使用するようにサーバーソフトウェアを構成します

proxychainsターゲットサーバーにインストールすると、作業がずっと簡単になることがわかりました。

TCPおよびDNS要求を任意のコマンドからプロキシにリダイレクトtelnetするLD_PRELOADトリックを使用することにより、すべてのソフトウェアがSOCKSプロキシを使用できるようにします(偶数)。

/etc/proxychains.conf転送されたソックスプロキシを使用するためのセットアップ:

[ProxyList]
# SSH reverse proxy
socks5  127.0.0.1 6666

トンネルの任意のツール(TCPを使用)proxychains

$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update

3

SSHの新しいバージョンでは、非常にシンプルなオプションの使用が可能ですssh-R <[bind_address:]port>。ホストのポートとバインドアドレスのみを使用し、クライアント側のポートを指定しないと、リバースSOCKSプロキシが作成されます。

これは、新しいSSHバージョンのマニュアルページにも記載されています。

[...]明示的な宛先が指定されていない場合、sshはSOCKS 4/5プロキシとして機能し、リモートSOCKSクライアントによって要求された宛先に接続を転送します。

http://ifconfig.ioのような単純な「私のIPを教えてください」-APIに接続するcurlでこれをテストできます

$ curl ifconfig.io

$ curl --socks5 localhost:<PORT> ifconfig.io


2
その機能が導入されたバージョン番号を記載しておくと便利です。
カスペルド

はるかに簡単、ありがとう!
魁夷

1
@kasperd:OpenSSH 7.6、2017-10-03 にリリース。下の3番目の箇条書きを確認してください新機能
MestreLion
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.