
最近、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保護率root
。rm -rf *
次に実行するのは非常に不幸なことです/
が、jshmoe
同じコマンドを実行するのと同じくらい悲惨ではありませんroot
。 (もちろん、この特定の例はデフォルト値の追加のため、以前と同じくらい--preserve-root
悲惨ではありませんが、root
それでも削除されます。みんなの最後にjshmoe
必要なのは、書き込みアクセス権を持つエントリをsudo
消去することです。jshmoe
)
sudo
誠意を持って作業する正当なユーザーがEnterキーを押す前に実行したいコマンドを詳細に確認する心理的効果があります。これは、良いコードジャッキーを実行する重要なシステムがある場合に特に重要です。
sudo
もちろん、ホットコードライダーが執筆習慣を持つようにするよりも、システムの安定性に悪いことはないので、マイレージが異なる場合があります。