ルートログインを許可するよりもsudoグループメンバーのログインを許可する方が安全ですか?

ルートログインを許可するよりもsudoグループメンバーのログインを許可する方が安全ですか?

最近、root ユーザーのシェルを /bin/bash の代わりに /sbin/nologin に設定し、sudo 権限を持つ root 以外のユーザーを使用して root ログインを無効にするのが良いアイデアだと思いました。

私は今私のサーバーでこれを行っていますが、ログには多くのログイン試行が表示されます。したがって、rootとしてログインするのではなく、root以外のユーザーとしてログインし、必要に応じてsudoを使用します。

これはどのように安全ですか?どちらの場合も、誰かがパスワードを復号化すると、すべてのコマンドを実行できます。

答え1

sudo提供して安全性/安全性を向上責任特権の分離

複数の人が管理作業を行うシステムを想像してみてください。ログインアカウントが有効になっていると、rootシステムはどの人が特定の操作を行ったかを記録/記録しません。ログにはroot責任者だけが表示されるだけで、root当時はその人が誰だったのか今は正確にはわからないからだ。

OTOH、誰もが一般ユーザーとしてログインし、sudo権限を昇格する必要がある場合は、システムに記録が残ります。ユーザーアカウント操作が行われた。さらに、この特別な特権はユーザーアカウントsudoersファイルとして管理および配布できます。

これであなたの質問に答えると、1つのユーザーアカウントを損傷したハッカーは、そのアカウントに割り当てられた権限のみを取得します。さらに、システムログには(希望的に)次の記録があります。どのユーザーアカウントが盗まれました。 OTOH、ファイルの権限が(たとえば)sudoersに設定された単純なシングルユーザーシステムの場合、利点は次のとおりです。ALL%sudo ALL=(ALL:ALL) ALL責任特権の分離効果的に中性化されました。

最後に、知識sudo豊富なハッカーがログファイルなどを削除して自分の痕跡を隠すこともできるという点はsudo確かに万病痛歯磨きではありません。最終的に私たちが用意した他の多くの保護はsudo正直な人々を正直に保つのに役立ちますが、不正直な人々を防ぐのにはあまり効果的ではないと思います。

答え2

キーを使用してSSHを使用してログインする場合、パスワードは2番目の要素です。まだ一つあります。小さいデフォルトのユーザー名を使用しない保護レベル。 (他の人が指摘したように、この保護はコンピュータの負荷を軽減し(パスワードやキーを確認する必要がありません)、ブロックを許可します。)

セキュリティに与えるもう一つの主な影響は、誤って root で何かを実行することがより難しいことです。したがって、悪意のある損傷から保護することはできません。

答え3

sudoさまざまな方法でセキュリティを向上させるのに役立ちます。

  • きめ細かい権限を許可します。また、次のことsudoができます。
    • ユーザーが管理シェルに簡単にアクセスするのを防ぎます(これにより、考えられるほとんどすべての攻撃がより複雑になります)。
    • ユーザーが実行できるコマンドを制限します。
    • ログインセッション自体のさまざまな属性に基づいて呼び出すことができるコマンドを制限します。
  • 誰がいつ何をしたのかを簡単に知ることができるように、紙の追跡を提供します。これは非常にシステムが損傷した後の事後分析は、システムがどのように損傷したかに関するより良い情報を提供できるため、重要です。これは、シェル履歴やその他のロギングに追加されるものです。
  • sudoルートアカウントやよく知られた管理者アカウントの代わりに名前を使用すると、一般的な攻撃を防ぐことができます。ポート22でインターネットに公開されているSSHシステムの認証ログに注意を払うと、ほとんどすべての攻撃が一般的であり、特定のユーザー名(root、admin、toor、piなど)に対して無差別攻撃を試みることがわかります。管理者アカウントに似た「よく知られている」名前。これらのアカウントをまったく使用せずに、代わりにsudo一般ユーザーとしてログインした後に特権の昇格を使用すると、攻撃面の大部分を完全に削除できます。
  • いくつかの設定(targetpwモード(マルチユーザーシステムでは使用しないがシングルユーザーシステムでは合理的な選択)または初期ログイン時にパスワード以外のものを使用する(例:SSHパスワードキー))。これは攻撃sudo者がルートアクセスを取得するために通過必要な2番目の認証層を提供します。
  • これは権限の境界を明確に説明します。 IOW、これは意識的にそうするように選択する必要があるため、必要以上の権限を使用して誤って何かを実行するのがはるかに困難になります。これは、社会工学攻撃に対する追加の保護層を提供するのに役立ちます。

全体的に外部攻撃を防ぐという点で、これらのどれもそれほど重要ではありません(最初の2つのことは巨大な内部の悪い行為者から保護するために)、これらすべては有用性に非常に小さな影響を与えるため、通常はセキュリティをわずかに向上させるために実行する価値があります。

答え4

他の回答者はすでに多くの利点を提案していますが、私は他の利点を提案したいと思います。重大なエラーに対するSudoers保護率rootrm -rf *次に実行するのは非常に不幸なことです/が、jshmoe同じコマンドを実行するのと同じくらい悲惨ではありませんroot。 (もちろん、この特定の例はデフォルト値の追加のため、以前と同じくらい--preserve-root悲惨ではありませんが、rootそれでも削除されます。みんなの最後にjshmoe必要なのは、書き込みアクセス権を持つエントリをsudo消去することです。jshmoe)

sudo誠意を持って作業する正当なユーザーがEnterキーを押す前に実行したいコマンドを詳細に確認する心理的効果があります。これは、良いコードジャッキーを実行する重要なシステムがある場合に特に重要です。

sudoもちろん、ホットコードライダーが執筆習慣を持つようにするよりも、システムの安定性に悪いことはないので、マイレージが異なる場合があります。

関連情報