/usr/local/<myapp>
ほとんどの場合、ソースからプログラムをインストールするときは、新しいユーザーと新しいグループを作成し、最近作成したユーザーとグループに所有権を付与することをお勧めします。
この慣行がベストプラクティスと見なされるのはなぜですか?
どのように改善されますか?
例:MySQLデータベースサーバー用のmysqlユーザー/ mysqlグループ。
答え1
アプリケーションごとに 1 つのユーザーとグループを作成するのではなく、各サービスに対して 1 つのユーザーとグループを作成することが慣行です。つまり、ローカルユーザーが実行するプログラムは root 以外のユーザーとしてインストールする必要はありません。それ悪魔、バックグラウンドで実行され、ネットワークまたは他の通信手段を介して行われた要求を実行するプログラムである場合、これらのプログラムは専用ユーザーとして実行する必要があります。
デーモンは専用ユーザーとして実行されるため、誤動作の場合(攻撃者によって引き起こされる可能性のあるバグのため)ダメージが制限されます。攻撃者がローカルルートを見つけない限り、デーモンのデータファイルのみが影響を受けます。脆弱性)これが起こる可能性があります)。たとえば、データベースデーモンは、データベース()のデータファイルが属するmysqld
専用のユーザーとグループで実行されます。mysql:mysql
/var/lib/mysql/*
mysql:mysql
デーモン実行可能ファイルとデーモンで使用されるが変更しないその他の静的データおよび構成ファイルは、ほとんどroot:root
のプログラムおよび構成ファイルのように専用ユーザーに属してはいけません。プロセスがビジネス上書きまたは存在しないため、mysqld
これらのファイルはこのユーザーに属できないか、このユーザーまたはグループは書き込めません。一部のファイルをデーモンと管理者のみが読み取ることができる必要がある場合は、そのファイルはモード0640()を使用してrootユーザーと個人グループが所有する必要があります。/usr/sbin/mysqld
/etc/mysql/my.cnf
mysql
mysql
mysql
rw-r-----
ユーザーが所有できない特別なクラスの実行可能ファイルは、ユーザーが呼び出すがroot:root
実行するには追加の権限が必要なプログラムです。これらの実行可能ファイルは次のようになります。設定値root rootとして(少なくとも部分的に)実行する必要がある場合、実行可能ファイルにはモード4755(rwsr-xr-x
)が必要です。プログラムに追加の権限が必要ですが、rootではない場合は、追加の権限がユーザー以外のグループに渡されるようにプログラムをsetgidする必要があります。実行可能ファイルのモードは2755(rwxr-sr-x
)です。 2つの理由があります:
- 実行可能ファイルは自己修正を許可してはいけません。そのため、ユーザーが脆弱性を悪用している場合は、プログラムで使用されるデータファイルを変更することはできますが、注入することはできません。トロイの木馬プログラムを実行している他のユーザーを攻撃するには、実行可能ファイルにアクセスしてください。
- 実行可能ファイルのデータファイルはこのグループに属します。 setuidプログラムは、個人データファイルにアクセスするために実際のユーザー(プログラムを呼び出すユーザー)と有効なユーザー(プログラムを実行しているユーザー)を切り替える必要があります(これが追加の権限を持つ理由です)。 setgidプログラムは、グループからのみアクセスできるユーザー固有のデータを分離することもできます(たとえば、rootおよびプログラムグループのみがアクセスできるディレクトリにユーザー所有ファイルを保存するなど)。
答え2
これは一般的なアプリケーションではなくデーモンです。その理由は、デーモンが root ではなく非権利ユーザーとして実行される可能性があるため、セキュリティ上脆弱で侵害された場合に加えられるダメージは、ユーザーがアクセスできる領域に制限されるためです。
答え3
これが良い方法と見なされるのは、システムの他のユーザーが特定のアプリケーションのデータと構成ファイルを上書きするのを防ぐためです。
たとえばmysql
、mysql
mysqlデータベースファイルストアの所有者になると、アプリケーションAPIを使用していない人がデータベースを破損するのを防ぐことができます。さらに、ユーザーはmysql
通常実際のシェルを持っていないため、誰もそのユーザーとしてログインできません。
答え4
これはセキュリティ上の理由です。これは、誰かがデーモンアプリケーションに侵入する可能性があるダメージを制限します。ユーザーアプリケーションは通常root
。
Web サーバー、メールサーバー、データベースがすべて同じユーザーで実行されると、より脆弱です。システムへのアクセスを許可するバグまたは構成エラーがある場合は、そのアクセスを使用して3つのアプリケーションすべてにアクセスできます。
推奨されているように、すべて別々のアカウントを持っている場合は、感染したアプリケーションのみにアクセスできます。相手の公開構成の詳細を読むことはできますが、変更する可能性はありません。
多くのデーモンは、ユーザーがファイルをアップロードおよびダウンロードしたり、他のデーモン構成で実行したくないことを望むタスクを実行できるようにします。各アプリケーションに独自のユーザーIDとグループがある場合、デーモンのセキュリティは簡単です。
デーモン固有のグループがあれば、デーモンにファイルとディレクトリへの安全な読み取り専用アクセス権をより簡単に安全に付与できます。ファイルまたはディレクトリが他のユーザーに属しているがデーモングループに属している場合は、通常読み取り専用でアクセスできます。アクセス権は、検索などのツールを使用して簡単に確認および変更できます。