web-dev-qa-db-ja.com

制限されたユーザーのシェルとして/ bin / catを使用しても安全ですか?

メンテナンスタスクを実行するには、数人のマシンにremontelyログオンする必要がありますが、マシンがファイアウォールまたはNATの背後にある場合があります。

私がこれまで行ってきた方法は、SSHを使用してシステムにログインし、リバーストンネリングを有効にする方法についてユーザーにアドバイスすることです。たとえば、「コマンドssh -R 12345:localhost:22 [email protected]を使用し、パスワードxyzzy」。

これで問題なく動作しますが、安全のために、完了したらユーザーuremonteのsshログインを無効にする必要があります。また、必要になったときに再度有効にすることを忘れないでください。不要な管理フロントエンドマシンにログインしたり、トンネルを使用しているときに正当なユーザーがいじり回そうとしたりする可能性があります。

/etc/passwdのユーザーシェルを/bin/catに設定することを考えたので、ログインしている人はシェルで何もする機会がなく、それでも逆トンネルの接続は維持されます。これは問題ないようですが、システムに穴が開いていないことを確認したいと思います。

だから、問題は、これは絶対に安全ですか?このアカウントにログインしている誰かが猫の罠から抜け出す方法はありますか?

6
juice

これは、シェルを変更するかなり標準的な理由です。通常、/bin/falseまたは/bin/catのような他のシェルが使用されます。

通常、/bin/catから脱出することはできず、catにセキュリティバグがある可能性は低いですが、 DoS の作成やファイアウォールルールのバイパスなど、他の方法でも機能する可能性があります。

もう1つのおそらくより深刻な問題は、sftpinternal-sftpモジュールを使用している場合です。これにより、シェルとして/bin/catを持つユーザーは、sftpを使用してファイルシステムにアクセスし、そのコンテンツを参照できるようになります。

特定のユースケースでは、顧客にsshアクセスを提供する代わりに、トンネルまたはVPNを使用することをお勧めします。

7
Ulrich Dangel