Linuxコンピュータのユーザーアカウントが破損すると、そのユーザーが所有するすべてのファイルも破損します。
残念ながら、破損したユーザーにsudo権限がある場合は、バイナリ移植を使用してsudoパスワードを簡単に取得できるように見え、攻撃はroot権限に拡大されます(悪い)。
この攻撃に対する効果的な防御策はありますか?それとも、一般的にsudoを使用するとroot権限が損なわれることは認められますか?
関連するコメントがある前の質問: zsh - <tab>でバイナリパスを完全に拡張します。
シェルの.rcファイルがrootの所有であっても、ローカルユーザーがそのファイルを削除し、悪意のある$PATH変数を含むファイルに置き換えられたり、端末を開くキーボードショートカットが悪意のある人に置き換えられます。
答え1
少なくとも大規模なシステム再設計がなければ、ユーザーに大きな負担をかけずにこれらの攻撃を完全に防ぐことは不可能です。
攻撃者があなたのアカウントへの書き込み権限を持っている場合、ユーザーはあなたの目からすべての損傷の兆候を隠すシミュレーション環境を作成する可能性があります。最も確実な方法は次のとおりです。LD_PRELOAD
自分と攻撃者が植えた他のすべてを隠すライブラリをロードします。これは、より複雑なラッパーを必要とする静的にリンクされたバイナリには適用されません。
攻撃者が別のアカウントにエスカレーションするまで、他のユーザーはその攻撃を見続けることができます。したがって、アカウントのファイルを確認し、変更を報告するプロセスをrootとして実行できます。これの問題は、多くの法的変更が行われることです。騒音の中で違法な変化を発見する可能性はほとんどありません。
アカウントの破損を制御する1つの方法は、完全に信頼できるユーザーインターフェイスを通過するように権限を昇格する必要があることです。これは次のことを意味します。
- ルート認証は、ユーザーに属さず、ユーザーが制御できないプロセスのみを通過できます。特にX11インターフェイスはありません。
ログインプロンプトが本物かどうかを識別する方法が必要です。そうしないと、攻撃者が信頼できるUIを偽装する可能性があります。これを達成する方法は2つあります。
- 一つある安全注意ボタン、ユーザーは他の機能にバウンスすることはできません。ユーザー制御下にない端末にログインプロンプトを表示するには、SAK を押します。これはいくつかのユニークで設定できますが、厳格なセキュリティチェックを行った完全な解決策を知りません。
- ユーザーが制御できないユーザーインターフェースを介してシステムにユーザーを再認証させます。認証は、子供の写真を表示するなど、静的にすることができます。これは確認するのは簡単ですが、ターゲット攻撃でなりすましやすいです。認証は動的である可能性があり、個別の信頼できるシステムで確認できる使い捨てパスワードが提供されます。これにはそのようなシステム(通常はOTPトークン)が必要です。
この 2 つの方法はローカルログインでのみ機能します。リモートで作業するときは、ユーザーとシステム間のパスを決定できません。そして、sudo
ユーザーインターフェイスの観点から、コピー/貼り付けコマンドなどの便利な機能を使用することはできません。
ああ、攻撃者がroot権限を取得すると、簡単にrootkitをインストールして検出できないようにすることができます。とにかくローカル攻撃は一般的です。攻撃者があなたのアカウントを損傷し、それが高度な攻撃である場合(ただし端末を放置した場合は必ずしもそうではありません)、rootアカウントも破損しているとします。
答え2
sudo
設定でユーザーが実行できるコマンドを制限できますsudo
。 Sudoはrootと同じである必要はありません。
そうでなければ、あなたは自分の質問に答えたと思います。私は鶏小屋の鍵を持っており、Mr。 Foxが私の鍵を受け取ったら、私は鶏をすべて食べることができます。これに対する解決策はありません。
ただし、ルートキットがインストールされている場合は、警告可能なツールまたは tripwire
同じツールが少なくともいくつかあります。ossec
詳しくはこちらをご覧ください。。
答え3
Tripwire/AIDE/Samhainは、HIDS(ホストベースの侵入検知システム)が機能する方法です。これらの一部は中央サーバーコンポーネントで使用できるため、署名はローカルシステム(SamhainのBeltaneなど)にはありません。
ファイルが頻繁に変更される別の方法(私のワークステーションで使用)は、OSファイルがまだ一貫していることを確認することです。
出力rpm -Va
全体をファイルに入れ、その出力を次の実行と比較してこれを行います。これにより、OSパッチの変更に含まれていないバイナリの変更をキャプチャできます(gpgチェックも有効になります)。
どちらの方法にもこれをバイパスする方法があります。