web-dev-qa-db-ja.com

PuTTYを使用し、シェルを使用しない制限付きユーザー用のSSHトンネル

そのため、SSHトンネルを使用して、内部サイトまたはパブリックサイトの一部へのアクセスを制限してきました。また、管理者のみがSSHアクセスを持っていたため、標準の非root/Sudoユーザーアカウントを使用していました。さて、私が拡大し、地元の大学の学生にプロジェクトの拡大に​​参加してもらうことを試みているので、彼らはこれらの内部ページのいくつかにアクセスし始める必要があります。

プロキシサーバーは、SELinuxが有効になっているCentOS 6.4ボックスであり、プロキシ以外のサービスを実行しません。最終的に完全なVPNをセットアップすることを検討していますが、この場合は、完全な内部ネットワークアクセスではなく、IPホワイトリストを使用して特定のマシンへのアクセスを許可するだけです。

/ bin/falseなどのユーザーアカウントでSOCKSプロキシを設定するためのすべての方法を見てきましたが、どちらか

A)単一のポートまたはホストのみが転送されていることを前提としています(この場合、ネットワーク構成でオンデマンドで変更されるVPSインスタンスのセットがあります)。

B)PuTTYのようなものではなく通常のSSHクライアントが使用されていること(すべての学生にVM)を使用するか、Linuxを直接インストールするように強制したいのと同じくらいですが、それは完全ではありません学校が学生用のエンジニアリングハードウェアでPuTTYを使用しているため、オプション)。

これまでに私が見つけたものは次のとおりです。通常のsshクライアントを使用する場合、ユーザーのシェルを/ bin/falseに設定し、ユーザーはSOCKSプロキシを設定するときに-Nコマンドを指定できますが、残念ながらPuTTYユーザーの場合はこれ動作していないようです(少なくとも動作させることができませんでした)。

PuTTYがデフォルトのトンネリングオプションを介してトンネルを開くと、ユーザーが/ bin/falseシェルを持っているため、ログイン時にすぐに切断されるシェルを開く必要があります。SSH設定で「noShell or command」引数を指定すると、プロキシオプションが設定されていないようです。リモートコマンドのSSHオプションでプロキシを設定しようとしても、オプションでシェルまたは他のコマンドを許可しない限り、プロキシは実行されません。

私が見つけたが完全には適合しない関連質問:

PuTTYとnologinを使用してSOCKSトンネルを作成します (これは技術的には機能しますが、シェルは非常に長い間実行される単なるスリープコマンドであり、エスケープされるのではないかと心配しています。むしろ、セキュリティ上の理由で単にハングするシェルよりも真のノーシェルを持っている)

https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-for-port-forwarding (これは、ユーザーはsshの実際のインストールを使用し、PuTTYのようなプログラムは機能しません)。また、特定のポートのみを許可するのではなく、アカウントにPermitTunnelを指定するだけでよいと思いますが、Webページにアクセスできるようにする必要もあります。

sshプロキシユーザーの場合は「noshell」 (これは、SOCKSプロキシをセットアップするためにPuTTYでコマンドを有効にする必要があるという理由で、PuTTYでは機能しません)

助言がありますか?私は簡単に何かを見逃している可能性がありますが、よくわかりません。

-ジム

6
DaJJHman

私は解決策を見つけました(nologinやnoshellのようなタグを使用せず、Windowsユーザーにとっては非常に単純なトリックですが、シェルなしで機能するようにしました)。

この投稿の回答を使用してバッチスクリプトを作成しました。これにより、PuTTYのデフォルトのインストールを実行し、シェルを切断するコマンドを実行せずにトンネルをセットアップできます。

私のWindowsユーザーのためのデッドシンプルSSHトンネル

"C:\Program Files (x86)\PuTTY\plink.exe" -v -N -D localhost:8080 proxy@remote_Host

これにより、PuTTYを使用するWindowsユーザーがトンネルにアクセスできるようになるため、アカウントシェルを/ bin/falseとして使用し続けることができます。

同様の状況にある可能性があり、スレッドを解決するためにここに投稿されました。他に解決策があれば、ぜひ聞いてみてください!

今、私はすべてのシステムに実装しているSSHプッシュベースの2因子システムでこれを機能させる必要がありますが、それは他のすべてが機能した後に取り組むべきものです。

-ジム

4
DaJJHman

PuTTYには次のオプションがあり、探しているものである可能性があることを確認しました:接続-> SSH->シェルまたはコマンドを起動しないでください

有効にすると、接続が確立され、コンソールに表示されなくなりますが、接続は維持され、トンネルは正常に機能します。それが役に立てば幸い。

3
Roland STAUB