web-dev-qa-db-ja.com

ユーザー提供のコードを実行できるLinuxコマンドはどれですか?

ここで説明されているように( https://www.helpnetsecurity.com/2014/06/27/exploiting-wildcards-on-linux/ )、tarコマンドを使用して実行できます任意のコード。

Linuxコマンドのリスト、できれば公式のディストリビューションリポジトリのパッケージ内のコマンドを含めて、それらにユーザー提供のコードを実行する機能があることがわかっているかどうかを確認しますか?もちろん、そのような分析では、コマンドが安全であると判断できませんでした。任意のコードを実行するための十分に公開された方法がないだけです。

編集:システムにはかなりの数のコマンドがホワイトリストに登録されており、それらすべての正当な使用法があります(たとえば、ハングしたVPN接続を強制終了するためのkill)いくつかの不正な使用法もあると思います。最小特権の原則を適用するかどうかを尋ねているのではなく、ここでそれを効果的に適用しているかどうかです。システムの特定のコマンドについて尋ねるのではなく、より一般的な質問をすることにしました。

3
Arcanum

何から守ろうとしているのですか?意図的にシステムにさらにアクセスしようとする悪意のあるユーザーから保護しようとしているように聞こえます。

その場合は、Sudoを使用せずに、ユーザーが同じことを達成するための別の方法を探すことをお勧めします。たとえば、同じことを実行する、よく書かれたsuidスクリプト。 Sudoは、信頼できるユーザー、およびLinuxコマンドを理解するのに十分な能力を持つユーザーに限定する必要があります(詳細は以下を参照)。

また、ユーザーは悪意はないものの、無能と自信過剰の致命的な組み合わせがあるケースも考慮する必要があります。数年前、私は非Linuxに詳しい開発者に、開発サーバー上のSudoアクセスを許可しました。彼女は1週間以内に、コードの修正方法をグーグル検索しながら見つけたfind -execコマンドでLinuxサーバー環境を完全に破壊しました。彼女はfind -execコマンドの意味を理解していなかったため、ファイルシステムのすべての権限が完全に変更されました(重要なシステムバイナリを実行不可に設定することを含む)。私はサーバーを再構築し、findコマンドの機能について話し、Sudoアクセスを削除しました。

どちらの場合も、ホワイトリストを使用してある程度の保護を提供することができます。このアプローチの問題は、rootとして実行される未加工のLinuxコマンドが非常に強力であり、悪意や無能が悪用される可能性があるすべての方法を予測することが難しいことです。正直なところ、そもそもSudoの必要性を排除することが依然として最良の選択肢である可能性があります。

1
Steve Sether

@Muhammadのコメントにはその権利があります。ユーザー/ローカルソフトウェアが実行できることを制限し、任意の動作を防止したいが、Sudoアクセスも付与したい場合は、onlyオプションはコマンドをホワイトリストに登録することです(パラメーターを含む完全なプログラムパスの組み合わせ、または明示的に指定されたパラメーターの欠如、または任意のファイルの上書きまたはコード実行を取得する方法のない単純な完全なプログラムパス-同じことになります)。パラメータに関係なく)。 sudoersファイルはこれをサポートしています。

さらに、これらのコマンドがroot以外のユーザーが書き込みできない場所にのみインストールされていることを確認する必要があります。さらに、ファイル名または内容の任意の変更を可能にするコマンドを防止する必要があります。 Sudo/bin/lsで許可する場合(安全かもしれませんが、ここでは約束しません)、任意のテキストをファイルに書き込むことができるコマンドも許可する場合は、2番目のコマンドを使用できます/bin/lsを、私がやりたいことをすべて実行するシェルスクリプトに置き換えてから、Sudo lsを実行し、rootとして任意のアクションを実行します(または、任意のユーザー/bin/lsがsudoersのように実行するように設定されています)。

一般に、Sudoアクセスは、完全に信頼されたユーザー、または特定の特権で実行する必要がある特定のコマンドに制限する必要がありますが、これらの特権を利用してこれらの特権をより広く取得することはできません。これらを混在させることができることに注意してください(たとえば、「wheel」グループのすべてのメンバーに任意のコマンドを使用させ、特定のコマンドを他のユーザーにホワイトリストに登録させる)。

編集。フルパスでフィルタリングしていることを確認する必要があると以前に言ったが、sudoers onlyはフルパスとSudoビルトインを許可するので、それは一種の赤いニシンです。

0
CBHacking