web-dev-qa-db-ja.com

非rootユーザーを作成する目的

Sudo権限を持つ新しいユーザーを作成し、rootユーザーを無効にすることは一般的な慣行だと言われています。これによりどのようなリスクが軽減されますか?

6
Jonas Grønbek

Rootを無効にし、Sudoを使用できる非rootユーザーを作成することのセキュリティ上の利点の1つは、「root」パスワードを推測しようとするブルートフォース攻撃からサーバーを保護することです。

Rinzwindが述べたように、どちらがより安全であると思いますか?

  • ルートアカウント+パスワードを推測するのは難しい
  • カスタムユーザー名+推測しにくいパスワード

もう1つの重要な利点は、rootユーザーが1人だけの場合、実行しているすべてのものが「すべて」を実行するためのアクセス権を持つ「root」の権限で実行されているため、間違ったコマンドを実行したり、単純なミスをしたりすると、サーバーを破壊する。

Root以外のユーザーを作成するだけです。

  • あなたはあなたのルートパスワードを与えていません!
  • 誰が何をできるかを定義できます!
  • 誰が何をしたかを監査できます!
  • Rootアクセスで誤ったまたは危険なコマンドを実行する可能性を最小限に抑えています。

また、誰かがサーバーに物理的にアクセスできる場合、そのサーバー上ですべてが暗号化されていなければ、サーバーに対してほとんど何でもできることを覚えておいてください。

14
Ravexina

@ Ravexinaの回答 で言及されている有効な懸念に加えて、次のことに注意することが重要だと思います。

悪意のある俳優がアクションを実行できる唯一の方法は、サーバーへのSSH接続ではありません

実際、SSHに対するブルートフォース攻撃の成功は、ハッカーがサーバーに侵入する可能性が最も低い方法です。 無効なパスワードが入力されると、SSHは3秒間スリープします 、したがって、強力なリモートSSHパスワードをブルートフォースで強制することは事実上不可能です。*

より可能性が高いのは、リモートでコードが実行される脆弱性を見つけて、その方法で「侵入」できるということです。 もし ときに彼らはそうする、あなたは彼らにできるだけ少ない許可を与えたいです。あなた本当にそれらがrootになりたくない。

Apache、PHP、PHP/Python/NodeJSスクリプトなどのプログラム、またはWebブラウザーを実行すると、その「プロセス」もユーザーとして実行する必要があります。例:PHPスクリプトをrootとして実行すると、そのPHPプロセスはrootが実行できるすべてのことを実行できます。

たとえば、悪意のある俳優が「リモートコード実行」攻撃を実行できるとしましょう。彼らはサーバー上でコードを実行できます。 PHPがその悪意のあるコードを実行し、PHPがrootとして実行されている場合、つまり、ハッカーのコードもrootとして実行されています。ただし、PHPは、それほど権限のないユーザー(つまり、webapp)として実行されているため、それによって発生する可能性のあるダメージを大幅に軽減できます。これは、PHPだけでなく、コンソールスクリプトを実行する場合にも当てはまります。すべての言語でこの問題が発生する可能性があります。

ここで注意が必要なのは、RCEの脆弱性がコードでもない可能性があることです(== --- ==)youが書きました:コードがサードパーティのライブラリ/モジュールに深く埋め込まれている可能性があります呼び出し:日付の計算、データベースとのやり取り、HTMLのレンダリングなど...言い換えれば、そこにあることさえ知らないかもしれません。また、依存関係/ライブラリを更新すると、暗黙的にコードベースに追加される可能性があります。 EventStream hack で見たように、上流のライブラリリポジトリを制御し、悪意のあるコードを疑いのないアプリに下流にプッシュするのは簡単です。その悪意のあるコードがrootとして実行されると、サーバー全体を制御し、発生したことを知らないところまでその経路をカバーすることさえできます。

したがって、すべてのユーザーを個別に設定しても、攻撃を完全に防止できない可能性がありますが、大幅に軽減されますリモートコード実行攻撃が発生した場合に発生する可能性があるダメージ。

*パスワードがabc123これは当てはまりません。それはおそらく、ハッカーがブルートフォース攻撃を行うときに最初に試みるものの1つだからです。

3
Eric Seastrand

これは実際にはサーバーで何をするかによって異なります。 @Ravexinaによる回答(推測パスワード攻撃)に加えて:.

  • 一部のWebサイトにアクセスする
  • メールを読む
  • 写真をいくつか見る
  • pDFを読む

これらはすべて、過去に攻撃ベクトルでした(定期的にブラウザー)。誰かがこれらのベクトルのいずれかを使用した場合、彼は

  • (非ルート)すべてのファイルへのアクセスと削除、ローカルユーザー用のソフトウェアのインストールなど
  • (root)するすべて

Root以外のエクスプロイトはエスカレートされる可能性がありますが( https://superuser.com/questions/301646/linux-keylogger-without-root-or-Sudo-is-it-real を参照)、これにより追加の保護レイヤー。それはまた事故から保護します @ David Schwartzが言及したように

Linuxを十分に長い間使用してきたすべての人が、その時点でrootであったとしたら、システムを完全に破壊してしまうようなコマンドを誤って入力したことがありました。私の最新のものは、現在のディレクトリのすべてのコンテンツを削除したいと思っていて、誤ってrm -rf . /* の代わりに rm -rf ./*.

1
serv-inc

非rootユーザーを作成することのセキュリティ上の利点は非常に過大評価されていると思います。それでも基本的にはコストはかかりませんし、セキュリティ上の問題も発生しません。だから私はあなたがそれをすることをお勧めします。

https://xkcd.com/1200/

しかし、本当に重要なものを確保することを怠らないでください。

1
emory