ユーザーを1つのコマンド(「su -」)に制限します。

ユーザーを1つのコマンド(「su -」)に制限します。

Play!をホストするWebサーバーを設定しました。フレームワークアプリケーション、サーバーはAmazon Linux EC2です。

Amazon Linux に慣れていない場合、デフォルトでは root ユーザーと sudo 権限を持つ ec2 ユーザーがあります。キーを使用してec2ユーザーとしてsshを介してサーバーにアクセスするには、パスワードが無効になります。

私はこのアプリケーションをできるだけ安全にしたいのですが、この設定は私にとって安全ではないようです。誰かがsshキーを取得できる場合、彼らはシステムへのrootアクセス権を持っているでしょう。

サーバーを強化するために新しいユーザー「Play」を追加しました。 Playユーザーのホームフォルダにアプリを保存して実行します。その後、ec2-userからsudoコマンドを削除し、rootのパスワードを追加しました。

これで、sudo権限なしでec2ユーザーとしてsshを介してログインし、root / Playユーザーに切り替えてサーバーで変更または作業します。

これは非常に安全なソリューションのように見えますが、さらに一歩進みたいです。ログインに使用されるユーザー(ec2-user)を「su -」という1つのコマンドのみに制限したいと思います。これは私がこのユーザーをrootに切り替えるために使用するすべてです。

ちなみに、この設定で実行したコマンドは次のとおりです。

sudo su -

ルートパスワードを追加:

passwd

追加されたPlayユーザー:

sudo adduser Play

sudoersからec2-userを削除する

cd /etc/sudoers.d
nano cloud-init

ec2-user を削除し、ファイルを次に更新します。

Play    ALL= NOPASSWD: ALL
# User rules for ec2-user
Play    ALL=(ALL) NOPASSWD:ALL

どんな助け/アドバイスも事前に感謝します!

ベストアンサー1

以外のコマンドへのアクセスを削除しても、su本質的にシステムがより安全になるわけではありません。

まず、ユーザーを既知のシェルに割り当てると、次のようなもの以外に内部コマンドが実行されるのを防ぐことはできません。rbashしかし、rbash自体はより快適で、ユーザーはいくつかのコマンドを実行できます。受け取れば使えます。

安全性が低いが可能なもう1つの解決策は、ユーザーのデフォルトシェルをスクリプトとして定義し、そのスクリプトにおよびコマンドのみを含め、su -キャプチャexitまたはスタンバイ中断シーケンス以外には何も含めないことです。これを必須インターフェイスと呼びます。また、このスクリプトとそのフルパスを入力する必要があります。これはスクリプトなので、現在と将来にはそれに伴うすべてのセキュリティ結果があります。ctrl-cctrl-z/etc/shells

おすすめ記事