* nix(特にLinuxとMacOS)の唯一のユーザーは2つのアカウントを持っている必要があります。数年前、私はあなたのパーソナルコンピュータで非特権ユーザーとして日常のタスクを実行し、管理タスクのために特権ユーザーに切り替える必要があることを読みました。これは本当ですか?
注:私はnotを日常的に使用するためにrootとしてログインする必要があるかどうかを示しています。これは明らかに悪い考えですが、毎日の使用アカウントでsudoを使用できるようにする必要がありますか?
2番目の注意:私は、具体的には、サーバーとして、またはリモートユーザーの機能をホストするために使用されているnotの個人用デバイスについて言及しています。
69回の投票後に劇的に更新されました。元の回答については回答履歴を参照してください。 議論 。について@JimmyJamesに感謝
最初に、脅威モデルについて話しましょう。潜在的な攻撃者が行うことを阻止するために何を試みていますか?
一般に、エンドユーザーシステムのデファクト脅威モデルは、個人情報の盗難/ランサムウェアです。攻撃者がドキュメントにアクセスできたり、シェルコマンドを実行できる場合は、ゲームオーバーです。その観点から見ると、rootアクセスは攻撃者に何ももたらしません。彼らはそれなしで彼らが望むものを得ることができます。
個人情報の盗難/マルウェアだけが心配な場合は、ユーザーがSudo
の能力を持っているかどうか、ブラウザがルートとして実行されているかどうかはそれほど重要ではないようです。
(ログインスクリプトやcronジョブのスケジューリングにはrootが必要ないため、マルウェアやボットネットへの接続はrootアクセスなしでも発生する可能性があることも指摘しておきます)。
XKCDのRandall Munroe この見解に同意するようです :
最後に、この免責事項を追加します。はい、これは、「より多くのセキュリティが常に優れている」という一般の世論に反することを認識しています。それは真実ではありません。場合によっては、ユーザーにパスワードを書き留めるように強制する過度に複雑なパスワードポリシーのように、セキュリティがさらに悪くなることがあります。常にリスクを見て、実際にどの程度のセキュリティが適切であるかを判断する必要があります。この場合、ルートアクセスをロックダウンしても害はありませんが、あなたの人生はより複雑になり、そこから何かを得ているかどうかは明確ではありません。
攻撃者がrootだけがアクセスできるものを必要とする脅威モデルがある場合、またはマシンに複数のユーザーアカウントがある場合、答えは実際にどの* nixについて話しているかによって異なります。これはすぐにパソコンのケースからサーバーのケースに移りつつありますが、とにかく議論します。 Linuxの場合、Xorgウィンドウシステムのバグ(* ahem機能*)が原因で、日常のアカウントにはSudo
権限がありません。 Xを使用しないオペレーティングシステムの場合は、おそらく問題ありません。
これはすばらしい記事です は、単純なユーザーランド(非ルート)シェルコマンドを使用して、GUI Linuxマシンですべてのキーストロークを記録する方法を示しています。要約すれば:
$ xinput list
は、接続されているすべての人入力デバイスを表示します
$ xinput test <id>
は、選択したデバイスのすべてのキーストロークのエコーを開始します。
私はテストし、別のターミナルウィンドウでSudo
に入力したパスワードのログを取得しました。コンピュータをロックすると、再度ログインしたときに、ロック画面に入力したパスワードのログが表示されます。どうやらこれはXのバグではなく、機能です。ええ、今はベッドの下に隠れます。
ええ、これは、GUIにログインするユーザーがSudo
権限を持っていてはいけないという考えをサポートしています。なぜなら、パスワードをログに記録してからrootになるのは簡単だからです。 Sudo
ingの専用アカウントがあり、TTY端末(ctrl+alt+#
)Sudo
を使用する場合。これが心配する価値があるかどうかはあなた次第です:個人的に、私が気にするすべてのデータは既に私のユーザーアカウントにありますが、私はおそらくセキュリティオタクなので、ラップトップのセットアップを変更します。
私のテストでは、ユーザー間でキーログを記録できなかったことに注意してください。 GUIで「Switch Account」を実行するか、新しいtty端末でstartx
を実行すると、Xの隔離されたインスタンスが起動するようです。
この観察について@MichaelKjörlingに感謝します。
これは Wayland [Xを置き換えるように設計されたウィンドウシステム]が実際に 修正しようとする です(セキュリティに関する箇条書きを参照)。 X11は、脅威モデルが現在のものとは大きく異なっていたときに生まれたことを思い出してください。
sysadminsの場合:これは、sshを介してLinuxボックスとのみ対話する習慣を強化し、GUIを使用しないでください。
私はOSXの専門家ではありませんが、Xorgサーバーを使用していないことはわかっているので、AppleのGUIがこれを適切に処理すると思いますが、私よりも専門家に詳しく検討してもらいたいと思います。
私もWindowsの専門家ではありませんが、Windows 7で導入された ユーザーアカウント制御(UAC) 機能は、管理プロンプトを 安全なデスクトップ =入力バスが通常のデスクトップから分離されています。
ほとんどの場合、Sudoでパスワードを要求するだけで十分に保護できます。
別のアカウントへのsu
ingと特権を獲得するためのSudo
ingの主な違いは、Sudoでログインに使用したのと同じパスワードを入力することです。脅威モデルが攻撃者がアカウントパスワードを持っていると想定している場合、それからあなたはすでにかなり深刻な問題に直面しています、rootアカウントの別のパスワードよりもあなたを守るでしょう。
私のUNIXシステムに2つのアカウントを持つことは、次の理由で不可欠であることがわかりました。
.bashrcやその他のログイン/ターミナルセットアップファイルをめちゃくちゃにした場合、ログインすらできない状況に陥ることがあります。ログインできないと多くのことができないので、これは想像できる最悪の状況です。
2、3台のコンピューターでこれを修正できる唯一の方法は、他のログインを使用してSudoにアクセスし、プライマリアカウントのスタートアップファイルを修正することでした。次に、アカウント「2」からログアウトし、通常のアカウントに戻ります。
時々私は可能性があります USBオプションからのブートを使用できますが、正直に言えば、Sudoを使用して.bashrcを修正し、ログアウトして他のアカウントに戻ることができます2回目のログインで数秒で完了し、USBブートオプションよりも恐ろしい/なじみのないオプションで修正できます。もちろんYMMV(あなたのマイレージは非常に可能性があります)
私はこの設定を使用していますが、その理由は単一のシステムを超えています。
ランサムウェアに対する保護を提供するバックアップが必要な場合(そして、誰もLinuxにランサムウェアを作成しないと想定したくない場合)、複数のリビジョンを保持する外部システムにバックアップする必要があります。
ただし、バックアップサーバーを管理するための専用のワークステーション/ターミナルがありません。このために(su
を使用せずに)別のユーザーとしてログインすると、ここで1層の保護が提供されます。私の通常のログインにSudo
特権があったとしても、速度は向上しますが、かなり薄いものになります(あいまいで、マルウェアはSudo
パスワードをキャプチャする必要があります)。
OSに関係なく、すべてのマシンに管理者アカウントが必要です。さて、ほとんどのLinuxフレーバーhide rootユーザーに存在しないパスワードを与えることによって-入力がfalseを返すという意味で-しかし、rootは存在し、ユーザーID 0を持っています。
その管理者アカウントは、通常のユーザーに許可されていないものを含め、システムに何かを変更できます。ここでの防御線は、攻撃者がrootユーザーへのアクセス権を取得した場合偶然(*)バックドアを簡単にインストールして、自由に再び取得できることです。また、システムのセキュリティ(ログ、システムファイルの変更など)を定期的に分析しない限り、ほとんど気付かないでしょう。
攻撃者が偶然にroot以外のアカウントにアクセスできるようになった場合、攻撃者が変更できるのは、このアカウントがアクセスできるものだけです。 OK、彼がなんとかシェルを入手できれば、パスワードを変更できますが、次回ログインしようとすると、パスワードに気づくはずです。
つまり、ルートを使用しないことの防御線は遠くの攻撃にのみ対抗することです-誰かがマシンに物理的にアクセスできる場合、彼は強力に暗号化されていないすべてを読み取り、絶対にすべてを書き込み/消去できます-他の管理者アカウントを追加するためのパスワードデータベースを含む。ここでの唯一の例外は、ディスク全体が暗号化されている場合、唯一可能なアクションは、すべてを消去して再インストールすることです。
しかし、私はSudoが優れたソフトウェアであり、細かい許可を許可するために使用できることを知っていても認めます。 Sudoが何でもできるデフォルトのLinuxの方法はあまり好きではありません。これは次の脆弱性があるためです。
次にログインしようとすると、ログインできないことに気づくでしょう。回復手順を使用して、マスターパスワードが破損していることを発見し、アーカイブバージョンから再構築または再インストールします。システムを注意深く分析しない場合は、気づかないでください。バックドア。
偶然にアクセスを取得すると言ったとき、たとえば、悪意のあるサイトに接続するときに脆弱性を使用する場合、再現性のない方法で意味します。攻撃者がバックドアをインストールしない限り、そのサイトに戻ったときにのみアクセスが可能になります。
TL/DR:私の意見では、どのマシンにも少なくとも2つのアカウントが必要です。1つは通常の使用のための非特権アカウント、もう1つは管理タスクのための管理アカウントです。
Sudo
の利点は何ですか?
自分のシステムでなんらかのタイプの管理タスクを実行するために、すべてのユーザーとrootパスワードを共有する必要はありません。
認証は短時間(15分)後に自動的に期限切れになり、timestamp_timeout=0
下 /etc/sudoers
は、Sudoパスワードを0(ゼロ)秒ごとに期限切れにします。つまり、Sudoを使用するたびに、パスワードの入力を求められます。
Sudo
の- 短所 とは何ですか?
ユーザーが脆弱なパスワードを使用すると、攻撃者はユーザーパスワードをすばやく解読し、特権を昇格させてルートアクセスを取得することができます。
Ubuntuのような一部のLinuxディストリビューションでは、root
パスワードをデフォルトでロックできます。どうして?
root
アカウントが存在する場合、攻撃者は初めてルートパスワードをブルートフォースで試行します。 rootアカウントを無効にすると、さらに複雑になります。
ユーザーは、ルートパスワードを知っているか、悪意のあるプログラムを実行してシステムに害を与えることにより、システムファイルの所有権を変更できます。
すべてのPCユーザーは少なくともローカル管理者を持っている必要がありますが、常識ではこれをパスワードで保護する必要があります(Androidユーザーはこれに注意してください)。使用方法によっては、アカウントを1つだけにすることができない理由はわかりません。これはパピーリナックスの場合であり、長年にわたって非常に成功しています。ただし、2つのレベルの保護と別の/ sbinフォルダーを用意しておくと、不器用で愚かである場合に適しています。それは誰かをお尻にダイヤルすることですが、ディレクトリをお尻に削除することは別のことです。怠惰なユーザーは、必要なすべてをsudoersファイルに追加するだけです。特権の昇格は、通常、そもそも何らかのアカウントへのアクセス権に依存しているため、これを制御します。サーバーとアプライアンスのアカウントは正当化する必要があり、ワークステーションが事実上のアプライアンスとして使用されることを気にします。重要なのは、多くのPCにis no他の実際のユーザーがいることです。