特定のシステム操作は権限のあるユーザー/プロセスしか実行できないことを知っていますが、スーパーユーザー(通常はroot
Unix / Linux)または管理者は依然として多くのセキュリティ上の問題を引き起こす可能性があり、最も頻繁に攻撃しようとします。理由はみんな知っていますか?
私はUnix / Linuxの一般的な答えにのみ(しかし主に)興味があります。その理由は何ですか?
ベストアンサー1
何らかの形でスーパーユーザーの存在は論理的に必要です。資格情報を構成するには、いくつかの資格情報が必要です。それが根です。
ルートはユーザーアカウントである必要はありません。それ能力、例えば。 Unixは歴史的にシンプルなデザインを追求しており、アカウントと機能を実装するためにユーザーと呼ばれる単一の概念を使用してきました。システムを使用するすべてのユーザーにはユーザーアカウントが付与され、システムサービスにはユーザーアカウントが割り当てられます。すべての機能は、何よりもユーザー資格情報(/etc/passwd
および最新のシステムで同じ機能を実行する他の機能)を制御できるシステムサービスを介して間接的に取得できます。 Unix設計では、rootはすべての機能(ランタイムsu
や低レベルのシステムコールを介して)に直接アクセスできますが、そうでない場合でも資格情報マネージャが資格情報を割り当てることを防ぐことは困難です。それ自体。
最新システムは、より細かいセキュリティモデルに発展しました。たとえば、Unixでは非常に早くからグループという概念を追加してユーザーがファイルを共有できるようにしましたが、グループはrootとしてのみ管理できます。ほとんどの最新のUnixシステムには、ユーザーがルート介入なしでファイルを共有できるアクセス制御リストがあります。ますます多くのLinuxシステムは、次のセキュリティメカニズムを使用しています。SELinuxこれは、ルートが実行できる操作を制限します。
しかし、より複雑なセキュリティモデルは両刃の剣です。より細かい権限を使用すると、より多くの制御が可能になり、簡単な方法でより多くのセキュリティポリシーを適用できます(たとえば、setuidプログラムを介した間接アクセスではなくアクセスのためのACL)。ただし、セキュリティポリシーが複雑になるほど、レビューが難しくなります(複雑な言語を使用すると、レビューする内容が多すぎます)、それを実装するコードが複雑になり、エラーのリスクが高くなります。
1これは二重制御または暗号化によって防止することができますが、これは機能を制限します(最終権限でランダムなコードを実行できない場合)、ユーザビリティ(システムをロックしすぎるとロックするリスクが高まります)。