web-dev-qa-db-ja.com

AWSのUbuntu AMIには、単にルートログインを許可するのではなく、「ubuntu」ユーザーが付属しているのはなぜですか?

AWSのUbuntuイメージは、ubuntuというユーザーに認証情報が追加されてブートストラップされます。マシンが起動したら、ubuntuユーザーで新しいボックスにSSH接続できます。

このユーザーはsudoerであり、sudoersファイルに基づいて、パスワードを入力せずにSudoをコマンドの前に付ける限り、このユーザーはrootができることはほとんど何でもできます。これは Sudoの利点のいくつか を無効にします。これは、対話型パスワードプロンプトがないためです。私の知る限り、これはまた、このユーザーとして公開アプリケーションを実行しないでください。誰かがアプリケーションを介してシェルコマンドを実行する方法を見つけた場合、システムを制御できるからです。

私の本当の質問は、なぜこのユーザーが存在するのかということです。誰かがアプリを実行するために特権のないアカウントを作成すると予想して、ルートアカウントへのSSHアクセスを許可しないのはなぜですか?このubuntuユーザーは混乱を招くだけではありませんか? 「私のsystemdアプリケーションはrootとして実行されておらず、ubuntuとして実行されているので、私は安全です」と考える人を見ることができました。

ルートではなく、パスワードなしのsudoerであるこの種のユーザーのいくつかの目的を見逃していますか?

2
kbuilds

私はEC2チームで働いている友人の1人とおしゃべりをしました。彼は本当に良い説明をしてくれました。

ここで説明する主な違いは、パスワードなしでSudoを実行でき、Sudo(パスワードなしのsudoer)ですべての特権を取得できるユーザーと、rootユーザー自体です。私の最初の考えは、これら2人のユーザーは本質的に同じだと思いましたが、私の友人が説明しているように、攻撃ベクトルがアプリケーションを介している場合、パスワードなしのsudoerを侵害することはルートユーザーよりも本質的に難しいです。

追加の難しさの理由は、sudoerとしてSudo特権を獲得するには、シェルアクセスが必要だからです。シェルを使用しない場合、パスワードなしのsudoerとして実行されるアプリケーションは、基本的に通常のユーザーにすぎません。ただし、これは、パスワードなしのsudoerがユーザーに代わってシェルコマンドを実行できるアプリケーション(つまり、Jenkinsまたはその他のCIツール)を実行している場合、システムが侵害される可能性があることを意味します。

アプリケーションを非sudoerとして実行することはおそらく最も安全ですが、ほとんどの場合、パスワードなしのsudoerは十分に安全だと思います。

ディスカッションの完全なコンテキスト:

enter image description here

enter image description here

2
kbuilds