
SSH を使用してサーバーに接続するアプリケーションがあります。アプリケーションのネットワーク トラフィック (データベース、一部のカスタム TCP プロトコルなど) は、SSH 接続を介してトンネリングされます。
サーバー上でキー ペアと非特権アカウントを使用しますが、ユーザーはキーを使用してサーバーにログインしたり、必要なポート リダイレクトを実行したりできます。
SSHサーバーを設定して、いくつかのトンネル(トンネルの終了アドレスとポートに制限あり)、シェルアクセスを無効にします(OpenSSH を使用します)
[編集]
私は遭遇しましたこの記事シェル アクセスを削除するだけでは不十分なようです。それに応じてタイトルと説明を変更しました。
答え1
authorized_keysファイルでは、ログイン時に実行するコマンドを指定できます。単にそのコマンドを設定して、長時間待機するだけのコマンドを実行することもできます。sshd manページauthorized_keys ファイルで使用できるすべてのオプションのリストとして。
permitopen="tsserver.example.org:3389",no-pty,no-agent-forwarding,no-X11-forwarding,command="/usr/local/stm_shell.sh" ssh-rsa AAAAB3....
私の stm_shell.sh はこれです (12 時間のタイムアウトも強制します)。これが完全に安全かどうかは 100% 確信がありません。
#!/bin/bash
# send a hang-up after this process exits
shopt -s huponexit
# maximum session length in hours
CONNECT_TIME=12
sleep $[CONNECT_TIME*60]
kill $PPID
答え2
ユーザーのシェルを /bin/false に設定すると、目的の動作が実現する可能性があります。
答え3
おそらく、sshd_config (man sshd_config) の「ChrootDirectory」キーワードによって、セキュリティが少し強化されるかもしれません。
答え4
ForceCommand
シェルアクセスを防止するためにディレクティブを設定できると思います/bin/false
。