ユーザーを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

答え2

あなたができることは、一種のアクセス制御リスト(ACL)を実装することです。

私は以前のコメントでOPが私と同じ考えをしていると思うと言いました。つまり、ユーザーSSHを制限されたアカウントとして許可して、別のセキュリティ層を追加します。その後、パスワードはsuより多くの権限を持っていますが、削除された他のアカウントにアクセスするために使用されます。

ユーザーの行動を制限したい場合ec2-user。まず、sudoersそのグループにそのユーザーがいないことを確認してください。
デフォルトでは、システム内のほとんどのファイルに対する読み取り権限は維持されますが、そのファイルを編集または読み取れないファイルを読み取る権限を高めることはできません。

ec2-userSTFP設定を使用して特定のディレクトリに制限するなど、さまざまなソリューションを見つけました。ディレクトリをからに変更できる必要があるchrootため、このソリューションが最適ではない可能性があると思います。ec2-usersu/home/ec2-user/home/play

最善の解決策はACLを適用することだと思います。これは、ユーザーがシェルで実行できるコマンドを制限する方法です。
コマンドを使用setfaclし、ファイルからユーザーの読み取りおよび実行権限を削除することで機能します/bin

setfacl -m u:ec2-user:r /bin/more -m: to add read read access to the user. u: user, can be changed to g(group) or o(other). ec2-user: the user r: give the user only read permission.

moreこの例では、bashファイルの書き込みおよび実行権限を削除します。これは、コマンドの使用を許可するのではなく、使用したくないコマンドを削除する必要があるため、最善の方法ではありませんsu。しかし、これが私が見つけることができる最も速くて簡単な方法です。

関連情報