Linux管理者として、システムで実行されているアプリケーションからroot権限を削除するタスクを実行することが私の使命の1つですか?
それとも、アプリケーション開発者がこれを行うためのコードを書いたことを確認するように頼るべきですか?
答え1
Linux管理者として、システムで実行されているアプリケーションからroot権限を削除するタスクを実行することが私の使命の1つですか?
はい。それが完了したことを確認することはあなたの使命です。アプリケーションがこれを実行していない場合は、アプリケーションがこれを実行していないことを確認して直接実行する必要があります。
それとも、アプリケーション開発者がこれを行うためのコードを書いたことを確認するように頼るべきですか?
いいえ頼るアプリケーション開発者はすべてを行う必要があります。 Linuxシステム管理者は、さまざまなツールを使用して次のことを取得できます。事実アプリケーションの実行中に実行する操作です。
答え2
アプリケーションがroot権限を放棄し、権限のない権限で実行することは、アプリケーションプログラマーの責任です。アプリがこれを行わない場合は、アプリの使用を避けたり、開発者にバグレポートを送信したり、コードに必要な変更を直接実装したりすること以外にできることはあまりありません。
一方、あなた、管理者としてアプリケーションが起動するユーザーを選択します。ゴールデンレートは、実行に必要なよりも多くの権限をプロセスに付与しないことです。したがって、権限のないユーザーを作成し(/etc/passwd
詳細についてはシステムアカウントを参照)、このユーザーとしてアプリケーションを実行できます。 (このタスクを手動で実行する必要はほとんどありません。通常、パッケージマネージャを介してソフトウェアをインストールすると、これらすべてが処理されます。)できる方法はありません。脱出すると状況が制御不能になります。
たとえば、以前のバージョンではsendmail
SUIDルートを実行する必要がありました。これは、リモート攻撃者がプログラムの脆弱性を正常に悪用した場合にセキュリティの脆弱性になる可能性があります。メールリレーとしてのみ実行している場合は、sendmail
権限のないユーザーとして実行できます。
答え3
システム管理者としての私たちの使命は、アプリケーションとユーザーにできるだけ少ない権限(タスクを実行できるようにする)を提供することです。
Tomcat / JavaアプリケーションまたはWebページをデプロイしたり、データベースアクセスを含むアプリケーションをデプロイするユーザーは、ルートアクセスの正当な必要性がほとんどまたはまったくありません。
現在、ほとんどのフレームワークはデフォルトでルートを放棄します。
たとえば、Javaフレームワークを使用する開発者の場合、デプロイする権限を持たないユーザーにのみ開発者アクセスを許可し、一部のsudoコマンドはいくつかの重要なサービスを再起動および停止することに制限されます。
本番サーバーを管理することは開発チームの責任ではないことをさらに指摘したいと思います。
私の経験上、開発チームは業務を完了することだけを心配し、システム管理チームの計画と指導、事前介入なしではセキュリティと容量を適切に管理できないことが多いです。