Rootユーザーとして直接ログインするよりも、rootにsuを実行するほうがよいとよく耳にします(もちろん、Sudoを使用する方が良いとも言われています)。なぜ一方が他方より優れているのか、私は本当に理解したことがありません、洞察?
推論は、必要な場合にのみsu
またはSudo
に対して行われます。
ほとんどの日常的なタスクでは、ルートシェルは必要ありません。したがって、特権のないシェルをデフォルトの動作として使用し、特別なタスクを実行する必要がある場合にのみルートに昇格することをお勧めします。
そうすることで、危険なミス(不正なスクリプト、ワイルドカードの誤配置など)や、使用するアプリケーションの脆弱性の範囲を減らすことができます。特にインターネットに接続するもの-古い格言 "Do n't IRC as root" を参照してください。
Sudo
を使用すると、このような特権の使用を細かく監査できるため、多くの場合推奨されます。
これらの慣行を観察することで、リモートrootログインを無効にすることもできます。これは、「wheel」グループのメンバーである通常のユーザーアカウントと、理想的にはSSH公開鍵によってのみ承認された通常のユーザーアカウント、さらにはルートアカウントの両方を侵害する必要があるため、攻撃者のエントリのバーを増やします。
リモートからのルートアクセスを無効にして、攻撃者が最初にユーザーを危険にさらしてからルートにエスカレートすることなくルートを侵害できないようにする必要があります。 rootアクセスはコンソールでのみ有効にします。
さらに、説明責任を生み出します。 :)
主な理由は、監査証跡を作成することです。通常のユーザーとしてシステムにログインしてからsuする必要がある場合は、特定のアクションの責任者を追跡することができます。
また、sudoはすべてのコマンドを自動的にsyslogに記録し、各ユーザーが使用できるコマンドを定義できます。
もう1つの正当な理由:Sudoを介してrootに昇格する場合、ユーザーは自分の資格情報で認証されます。つまり、必ずしもrootパスワードを与える必要がないため、誰かが組織を離れるときに物事を簡単にロックできます。
監査証跡を作成する必要があり、ここで述べた「Sudo su-」または「Sudo vim foo.txt」の問題の犠牲にならないようにするには、「sudosh」を使用できます。 Sudoを介してrootアクセスを配布しますが、「sudosh」を実行するための唯一の許可されたコマンドを作成します。
sudoshはロギングシェルであり、ターミナルセッション全体を後日再生して、ユーザーがターミナルで見たものを正確に表示できます。
セキュリティを徹底的に練習する必要があります。
リモートrootアクセス(または少なくともパスワードによるrootアクセス)を禁止します。 (キーを介したrootアクセスを許可する場合は、それらのキーを慎重に制御するか、ケルベロスのようなキーの集中失効を可能にするものを使用することをお勧めします)。
Suを無効にしてSudoを使用します。このようにして、ユーザーはキー(できれば暗号化されたもの)を使用してシステムにアクセスし、theirパスワードを特権の昇格にのみ使用します。 Sudoを使用してアクセスするプログラムを制限することができますが、ほとんどの場合、ルートパスワードを知っている人にアクセスを制限するだけです。
理想的な世界では、ルートパスワードをインターネットで公開できるはずです。マシンへのアクセスを他の人に許可したとしても、問題はありません(/ etc/sudoersファイルには入れていません)。もちろん、あなたはすべきではない rootパスワードを公開しますが、同心円状の保護層でシステムを保護するという考え方です。
Rootログインを無効にするという考え方なので、デフォルトの管理者アカウントはありません。このように、攻撃者はユーザー名とパスワード(パスワードだけでなく)の両方を推測する必要があります。
定期的にrootを使用している場合、権限が間違っている可能性がありますまたは、ファイルまたはディレクトリにr/w/xするためのSudo権限または新しいグループ権限を付与する必要がある場合があります。
優れたアクセス許可スキームは、長年のLinuxユーザーでも間違っている、または自分の範囲を認識していないものです。
Ubuntuがやったことから始めないでください!