sudoを介して実行するときは、setuidバイナリインストールで `apt-get`、 `yum`を無効にします。

sudoを介して実行するときは、setuidバイナリインストールで `apt-get`、 `yum`を無効にします。

権限があるため、システムに何かをインストールできますが、プログラムをインストールする権限しかないとしますsudosudoこの場合、以下を含むルート所有バイナリをインストールするパッケージを作成するのは非常に簡単です。ユーザーIDビットの設定インストール時に設定し、バイナリを実行します。どのルートとして供給するように指示します。これにより、特定のユーザーが必要に応じて権限を変更できるパッケージへの制限されたsudoアクセスを許可することは安全ではありません。別の明白な(IMO)セキュリティの欠陥は、ソフトウェアパッケージがファイルを更新し、/etc/sudoersユーザーにあらゆる種類の追加権限を付与できることです。

私が知っている限り、呼び出し方法を設定または確認するオプションはapt-getありませんyum。これにより、通常のデフォルトの場所にインストールできますが、制限的な方法でインストールされます(たとえば、すでに利用可能なファイルを上書きしないか上書きしない)。 setuid ビット設定).

私は何を逃したことがありませんか?そのような制限があるインストールはありますか?他のインストーラでも使用できますか?それとも、これらの制限を無効にする(そしてそれを実装するのに時間の無駄になる)他の既知の解決策はありますか?

ベストアンサー1

これはSELinuxポリシーを介して可能ですが(SELinuxまたはルートを制限する可能性がある他のセキュリティモジュールなしでは不可能です)、これは意味がありません。

ご存知のように、パッケージはインストールされることを宣言できます/etc/sudoers。これを防ぐために一時ルールを作成しても、パッケージはまだ存在している可能性があります。または、次回ユーザーがログインしたときに読み取れるように/etc/sudoers.dファイルを配置することもできます。/etc/profile.dまたは、起動時に root で始まるサービスを追加することもできます。リストは続きます。これは管理が難しく、問題のある状況を発見しても、あまりにも多くのパッケージがインストールされていないため、気にしません。このパッケージができるもう1つのことは、後で使用するように欺くことができるプログラムをインストールすることです(たとえば、書き込みアクセスを完全に無効にするとインストール/binできます/usr/local/bin/ls)。次回プログラムを呼び出すと、このプログラムはアカウントを介してバックドアを注入します。 。パッケージのインストールによって潜在的なセキュリティホールが発生しないようにするには、信頼できるパッケージのみをインストールするように制限するか、インストールされているパッケージを絶対に使用しないでください。

デフォルトでは、ユーザーを信頼していない限り、ユーザーはシステムに任意のパッケージをインストールすることを許可できません。ディストリビューションにないものが必要な場合は、ホームディレクトリにソフトウェアをインストールしてください。

信頼できないユーザーがより多くのパッケージ(安全で承認された事前定義されたソースのリストから)をインストールしたり、基本システムの既存のパッケージをアップグレードできるようにするには安全ですが、予防措置を講じる必要があり、特にインストール中の対話無効にする必要があります。 。バラより私のSSHユーザーに「apt-get update」と「apt-get update」にパスワードのないsudoを提供するのは安全ですか?についていくつかの考えapt-get upgrade

最新のLinuxバージョン(カーネル≥3.8)では、すべてのユーザーが次のことを実行できます。ユーザーネームスペースの開始ユーザーIDは0です。これにより、デフォルトでは、ユーザーは自分のディレクトリに独自のディストリビューションをインストールできます。

おすすめ記事