GNU/Linux >> Linux の 問題 >  >> Linux

ルート権限を取得する最も安全な方法はどれですか:Sudo、Su、またはログイン?

特権のないユーザーが危険にさらされた場合でも、rootアカウントを安全に保管したいと思います。

Ubuntuでは、デフォルトで「セキュリティ上の理由」でのみsudoを使用できます。ただし、テキストモードコンソールでログインを使用するよりも安全かどうかはわかりません。攻撃者が私の通常のユーザーとしてコードを実行できる場合、うまくいかないことが多すぎます。たとえば、エイリアスの追加、PATHへの追加、LD_PRELOADおよびX11キーロガーの設定などです。私が見ることができる唯一の利点はタイムアウトであるため、ログアウトすることを決して忘れません。

suについても同じ疑問がありますが、時間制限すらありません。一部の操作(特にIOリダイレクション)はsuの方が便利ですが、セキュリティ面ではこれはもっと悪いようです。

テキストモードのコンソールにログインするのが最も安全なようです。攻撃者がPATHまたはLD_PRELOADを制御できる場合、initによって開始されるため、攻撃者はすでにrootになっています。キー押下イベントは、Xで実行されているプログラムによってインターセプトできません。Xで実行されているプログラムが[ctrl] + [alt] + [f1]をインターセプトできる(そしてコンソールのように見えるフルスクリーンウィンドウを開く)かどうかはわかりません。 Windowsの[ctrl]+[alt]+[del]のように安全です。それに加えて、私が目にする唯一の問題はタイムアウトの欠如です。

だから私は何かが欠けていますか? Ubuntuの連中がsudoのみを許可することにしたのはなぜですか?いずれかの方法のセキュリティを向上させるために何ができますか?

SSHはどうですか?従来、rootはSSH経由でログインできません。ただし、上記のロジックを使用するのが最も安全な方法ではありません。

  • SSH経由でルートを許可する
  • テキストモードに切り替えます
  • ルートとしてログイン
  • 他のマシンへのSSH
  • ルートとしてログインしますか?

承認された回答:

セキュリティとは、常にトレードオフを行うことです。海底の安全な、プラグが抜かれた、rootにあることわざサーバーのように ほとんど アクセスする方法がまったくない場合は安全です。

あなたが説明するようなLD_PRELOADおよびPATH攻撃は、あなたのアカウント、または少なくともあなたのドットファイルにアクセスできる攻撃者がいることを前提としています。 Sudoは、それを十分に防ぐことはできません。パスワードを持っていれば、後でだまそうとする必要はありません。sudoを使用するだけです。

Sudoが元々何のために設計されたのかを考慮することが重要です:特定のの委任 ルートを完全に提供することなく、「サブ管理者」(おそらくラボの大学院生)へのコマンド(プリンターを管理するコマンドなど)。 sudoを使用してすべてを実行する これは私が今見ている最も一般的な使用法ですが、必ずしもプログラムが解決しようとした問題ではありません(したがって、途方もなく複雑な構成ファイルの構文です)。

ただし、sudo-for-unrestricted-rootはします 別のセキュリティ問題に対処します:rootパスワードの管理性。多くの組織では、これらはキャンディーのように渡され、ホワイトボードに書き込まれ、永遠に同じままになる傾向があります。アクセスを取り消すか変更することは大きな生産数になるので、それは大きな脆弱性を残します。どのマシンがどのパスワードを持っているかを追跡することさえ、課題です。誰が知っているかを追跡することは言うまでもありません。 どれか。

関連:カーネル破壊プログラムをsudoすると何が得られますか?

ほとんどの「サイバー犯罪」は内部から発生することを忘れないでください。ルートパスワードの状況が説明されているため、誰が何をしたかを追跡するのは困難です。リモートロギングを使用したsudoは、かなりうまく処理されます。

ご自宅のシステムでは、2つのパスワードを覚えておく必要がないという利便性の問題だと思います。多くの人が単に同じに設定していた可能性があります。さらに悪いことに、最初は同じに設定してから同期を外し、rootパスワードを腐敗させたままにしている可能性があります。

パスワードの使用すべて SSHの場合、パスワードを盗聴するtrojaned sshデーモンが、私が見た実際のシステム侵害の90%のような場所に配置されているため、危険です。 SSHキーを使用する方がはるかに優れており、これはリモートルートアクセスでも実行可能なシステムになる可能性があります。

しかし、問題は、パスワード管理からキー管理に移行したことであり、sshキーは実際にはあまり管理しにくいものです。コピーを制限する方法はありません。誰かがコピーを作成した場合、パスフレーズを総当たり攻撃したいすべての試みがあります。キーはリムーバブルデバイスに保存し、必要な場合にのみマウントする必要があるというポリシーを作成できますが、それを強制する方法はありません。これで、リムーバブルデバイスが紛失または盗難に遭う可能性があります。

最高のセキュリティは、ワンタイムキーまたは時間/カウンターベースの暗号化トークンによってもたらされます。これらはソフトウェアで実行できますが、改ざん防止ハードウェアの方が優れています。オープンソースの世界には、WiKiD、YubiKey、またはLinOTPがあり、もちろん、独自のヘビーウェイトRSASecurIDもあります。中規模から大規模の組織、またはセキュリティを重視する小規模な組織にいる場合は、管理アクセスのためにこれらのアプローチの1つを検討することを強くお勧めします。

ただし、賢明なセキュリティ慣行に従っている限り、管理の煩わしさがあまりない家庭では、おそらくやり過ぎです。


Linux
  1. *nixでディレクトリを空にする最も安全な方法は何ですか?

  2. Xによって割り当てられたディスプレイ番号を取得する方法

  3. echo バイナリを呼び出す最も安全で移植性の高い方法は何ですか?

  1. sudoの内部はどのように機能しますか?

  2. 内部カードリーダーの種類を取得するにはどうすればよいですか?

  3. Linux 内から BIOS バージョンを取得する方法はありますか?

  1. Bashが実行されているTtyを取得する方法は?

  2. sudo なしで Linux のシリアル番号を抽出する

  3. sudo に root パスワードを要求させるにはどうすればよいですか?