RHELサーバーにログインできないユーザーにアプリケーションを起動/停止したり、サーバーを再起動したりする機能を提供するにはどうすればよいですか?

RHELサーバーにログインできないユーザーにアプリケーションを起動/停止したり、サーバーを再起動したりする機能を提供するにはどうすればよいですか?

私たちは、少数の人だけがSSHを介してサーバーにアクセスできるようにするセキュリティプラットフォームを構築していますが、SSHを介してサーバーにアクセスすることなくアプリケーションを起動または停止し、必要に応じてサーバーを再起動するためのサポートが必要です。

ベストアンサー1

実際の要件がサポートスタッフができない場合コマンドラインにアクセスその後、サポートが許可する固定アクションメニューを表示するスクリプトを作成し、コマンドをchsh使用できます。このスクリプトをサポートアカウントのログインシェルとして設定する

より確実にするには、専用のバイナリ実行可能ファイルをビルドしてメニューを表示し、スクリプトの代わりにログインシェルとして使用できます。ただし、プロトタイプの段階では、スクリプトを使用する方が簡単かもしれません。

メニュースクリプト/バイナリをユーザーのログインシェルとして使用すると、メニュースクリプト/バイナリを中断してシェルにアクセスできなくなります。メニュースクリプト/バイナリが終了した場合何らかの理由で、システムはこれをログアウトと見なすため、セッションはすぐに終了します。

これが完了すると、アカウントログインがサポートされるたびに(ローカルとSSHの両方)メニューが表示されます。メニューを終了しようとするとセッションが終了します。


またはsshdauthorized_keysファイルを使用して定義できます。必須注文:キー認証を使用してSSHセッションが開始され、そのキーに必要なコマンドが接続されているときにsshd実行されます。コマンドのみを指定完了すると、セッションは終了します。

デフォルトでは、ユーザー用のSSHキーペアを作成しますsupport(たとえばssh-keygen -f rebootkey_ed25519 -t ed25519、公開キー(の内容)rebootkey_ed25519.pubをプレフィックスとして使用して、キー行が次のように表示されるようにします。~support/.ssh/authorized_keysno-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/usr/bin/sudo /sbin/reboot"authorized_keys

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/usr/bin/sudo /sbin/reboot" ssh-ed25519 <public_key_alphabet_soup_here> [optional comment]

その後、visudo設定を使用して、/etc/sudoersユーザーがパスワードプロンプトの有無にかかわらずsupport実行できるようにします。/sbin/reboot

support ALL=(root) /sbin/reboot

または

support ALL=(root) NOPASSWD: /sbin/reboot

その後、サポートのために秘密鍵ファイルを提供し、rebootkey_ed25519サーバーを再起動する必要がある場合は、そのファイルを実行するように指示できます。ssh -i rebootkey_ed25519 support@hostname_or_ip

rebootkey_ed25519秘密鍵を使用してユーザーとしてログインするsupportと、コマンドラインで指定されたすべてのリモートコマンドは無視されsshd、そのユーザーとして実行されますssh。使用する構成バージョンによっては、ユーザーのパスワードが必要な場合もあれば必要ではない場合もあります。何らかの理由でコマンドが終了すると、SSH セッションは終了します。sudo rebootsupportsudosudosupportsudo reboot

実行する各コマンドに固有のSSHキーを使用して、特定のコマンドを使用して複数のSSHキーを定義できます。


サポートチームがSSHをまったく利用できない場合は、CGIスクリプトを実行できるWebサーバーを設定し、サポートチームが実行できるようにする各タスクのスクリプトを作成できます(必要なコマンドを実行するスクリプトを使用して、必要に応じてユーザーにsudo許可)。NOPASSWD:そして、そのスクリプトへのリンクとしてアクションメニューを含む簡単なWebページを作成します。

これを行うには、IPアドレスでページへのアクセスを制限するか、認証+ HTTPSを要求する必要があります。

おすすめ記事