rootとしてログインするのではなく、なぜsuでrootになるのですか?


33

rootユーザーとして直接ログインするよりも、suでrootにした方が良いとよく耳にします(もちろん、sudoを使用した方が良いと言う人もいます)。私は、一方が他方より優れている理由を本当に理解したことはありません、洞察?


2
sshログインまたは物理マシンからのログインを考えていますか?
テレマコス

回答:


43

推論は唯一にあるsuか、sudo必要なとき。

ほとんどの日常的なタスクはルートシェルを必要としません。したがって、特権のないシェルをデフォルトの動作として使用し、特別なタスクを実行する必要がある場合にのみルートに昇格することをお勧めします。

そうすることで、使用するアプリケーションの危険なミス(不適切なスクリプト、誤ったワイルドカードなど)や脆弱性の範囲を減らすことができます。特にインターネットに接続するもの-古い格言「IRCをルートとしてはいけない」を参照してください

sudo このような特権の使用をきめ細かく監査できるため、多くの場合推奨されます。

これらのプラクティスを観察することにより、リモートルートログインを無効にすることもできます。これにより、攻撃者は「ホイール」グループのメンバーであり、理想的にはSSH公開キーのみで許可される通常のユーザーアカウントとルートアカウントの両方を侵害する必要があるため、侵入者のエントリバーが増加します。


1
リモートルートログインが「かなり大きな脆弱性」である理由を具体的に説明してください。
thepocketwade

5
全世界がユーザー名(「ルート」)を知っていることを考えると、それはパスワードを把握するだけの問題です。そして、彼らは総当たりでそれを実行し、コンピューターを乗っ取ることができます。
シャロームクレイマー2009

2
sudoのもう1つの利点は、実行されたコマンドのロギングです。
マヌエルフェイク

それは監査です;)
ダンカーリー

1
一方でsudo優れている、suまた、あなたが使用することを可能にする-mルート端末で環境変数を同じしばらく維持するためのフラグを。ディレクトリ名でsu何かを~して、それが機能しないようにするためだけに、少しでもルート化するように私をもっと気にする人はいません。
tj111

27

リモートからのルートアクセスを無効にして、攻撃者が最初にユーザーを侵害してからルートにエスカレートすることなくルートを侵害できないようにする必要があります。コンソールでのみルートアクセスを有効にします。

さらに、説明責任が生じます。:)


+1短いとポイント
lexu 09

15

主な理由は、監査証跡を作成することです。通常のユーザーとしてシステムにログインしてからsuにログインする必要がある場合は、特定のアクションの責任者を追跡できます。


誰かがsu-rootを実行した後、実行したコマンドをどのように判断しますか?これはどこかに記録されていますか?
ドーベスヴァンダーメール

10

また、sudoはすべてのコマンドをsyslogに自動的に記録し、各ユーザーが使用できるコマンドを定義できます。


3
ロギングに関して:これは、「sudo」が先行するすべてのコマンドの場合ですが、ルートシェルに昇格するためにsudoが使用される場合、コマンドは従来の領域(具体的にはシェル履歴)でのみ記録されます。
ゼナム2009

2
実際、sudo vim foo.txtvim内からシェルにドロップすると、通常のsudoロギングなしでルートシェルが提供されます。
オフィディアン

または、単にsudo -iインタラクティブなセッションを取得するために...
カミルキジエル09

sudo vim foo.txtの問題がわかりません。私はそれを実行した後、vimを終了し、まだ自分自身でしたが、何か足りないものはありますか?
thepocketwade 09

sudo su-またはsudo vimと入力してsudoを「だまして」シェルを作成し、新しいサブシェルに移動できます。ただし、すべてをsyslog(集中管理)に記録するためにsudoを使用し、別のサブシェルを取得するためにも使用できることを認識している場合、問題はありませんが、それはボーナスです私はそれだけに依存していません。
Jure1873 09

9

別の正当な理由:sudoを介してrootに昇格するとき、ユーザーは自分の資格情報で認証します。つまり、必ずしもrootパスワードを与える必要がないため、誰かが組織を離れたときに物事をロックダウンしやすくなります。


4

監査証跡を作成し、ここで説明した「sudo su-」または「sudo vim foo.txt」の問題の犠牲にしたくない場合は、「sudosh」を使用できます。sudoを介してrootアクセスを配布しますが、「sudosh」を実行する唯一の許可コマンドを作成します。

sudoshはロギングシェルです。後日、ターミナルセッション全体を再生して、ユーザーがターミナルで見たものを正確に表示することができます。


もちろん、システムでsudoshが利用可能であると仮定しています。チェックしたばかりで、Linuxボックスにはありません。
ジョンガーデニアーズ

また、監査証跡ログを有効にして新しいksh93を使用することもできます。IBM developerWorksでこの記事を確認してください:ibm.com/developerworks/aix/library/au-korn93/…–
Mei

シェルスクリプトを実行するだけで簡単にバイパスできます(その後、後で消去します)。非監査ユーザーとして無害な名前でスクリプトを作成し(またはワークステーションからscpして)、sudoして実行します。「ls」などの名前を付けて$ PATHに入れて(必要に応じて$ PATHを変更する)、/ bin / lsを呼び出している間に正常に見えるように汚い作業をさせることで、本当に隠すことさえできます。後で拭いてください。監査ログは、/ home / anthony / binに「ls」が含まれていたことを認識しません。
デロバート2009

はい、完璧ではありません。私たちはこれを知っています-しかし、それは単なる「sudo su-」よりもひどいサイトです。はい、デフォルトではどこにでもインストールされていません。ただし、SolarisおよびLinuxではかなり簡単に実行できます。
mibus

1

セキュリティを徹底的に練習する必要があります。

リモートルートアクセス(または、少なくともパスワードによるルートアクセス)を許可しません。(キーによるルートアクセスを許可する場合、それらのキーを慎重に制御するか、キーの集中的な取り消しを許可するKerberosのようなものを使用することをお勧めします)。

suを無効にし、sudoを使用します。この方法では、ユーザーはキー(好ましくは暗号化された)を使用してシステムにアクセスし、パスワードを特権の昇格にのみ使用ます。ユーザーがsudoを使用してアクセスするプログラムを制限できますが、ほとんどの場合、rootパスワードを知っているユーザーのみにアクセスを制限します。

理想的な世界では、あなたのマシンへのアクセスを他の人に許可したとしても(/ etc / sudoersファイルにそれらを入れていなくても)、ルートパスワードをインターネット上で公開できるはずです。もちろん、ルートパスワードを公開すべきではありませんが、同心の保護層でシステムを保護するという考え方です。


0

考えは、rootログインを無効にすることであり、したがって、デフォルトの管理者アカウントを持っていません。そのようにすると、攻撃者はユーザー名とパスワードの両方を推測する必要があります(パスワードだけでなく)。


0

rootを定期的に使用している場合、アクセス権が間違っているか、ファイルまたはディレクトリのr / w / xにsudo権限または新しいグループ権限を付与する必要がある場合があります。

優れた許可スキームは、長年のLinuxユーザーでさえ間違えたり、自分が持っているスコープを認識しないものです。

Ubuntuが何をしたのか、始めてはいけません!


-2

rm -r -fを実行できないようにします/ 2日前に実行しました(非特権ユーザーとして、rm -r -f *を実行するつもりでした)


受け入れられた回答には、すでにすべての情報が含まれていました。
Theuni
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.