root以外のユーザーアカウントでデーモンを実行するのは良い習慣ですか?

root以外のユーザーアカウントでデーモンを実行するのは良い習慣ですか?

私は2台のコンピュータを同期させるためにNTPを使用してネットワーク時間を変更するアプリケーションを開発しました。root後者のみがLinuxで時刻と日付を変更できるため、次のように実行されます。

今、ユーザーとして実行したいと思います。しかし、時間が少し必要です。

  • root以外のユーザーアカウントでデーモンを実行するのは良い習慣ですか?
  • 申請書にaを与えることはできますか?能力例えばCAP_SYS_TIME
  • セキュリティの脆弱性は発生しませんか?
  • もっと良い方法がありますか?

答え1

root以外のユーザーアカウントでデーモンを実行するのは良い習慣ですか?

はい、これは非常に一般的なことです。たとえば、Apache は root で始まり、新しいプロセスを分岐します。www-データ(基本的に)。
前述のように、プログラムがハッキングされている場合(コードの挿入など)、攻撃者はrootアクセス権を取得できませんが、特定のユーザーに付与した権限に制限されます。

「CAP_SYS_TIME」などの「機能」を付与する必要がありますか?

使用を避けることをお勧めします。ユーザーIDの設定、この特定の機能に対する権限を制限します。

「ベストプラクティス」と見なされる他の方法を使用する必要がありますか?

以下を使用してセキュリティを強化できます。

  • シェルを必要としない権限のないユーザーとしてサービスを実行します。
  • 使用chrootユーザーをホームディレクトリにロックします。

答え2

  • 「ベストプラクティス」と見なされる他の方法を使用する必要がありますか?

強力で反論できない理由がない場合は、GNU / Linuxディストリビューションに付属のNTPパッケージのみを使用してください。標準的なNTPデーモンは成熟するのに数年かかり、システムクロックをネットワークまたはGPS時計と同期させるために速度を遅くしたり上げたりするなどの洗練された機能を備えています。時計を同期するように設計されているので可能です。はいこの目的のための最高のツールです。

ntpdまだ維持されており、最近のアップデートで判断すると(この記事を書く時点で)。より多くの機能が必要な場合は、開発者に直接連絡して彼らの言葉を受け入れることをお勧めします。

答え3

機能を実行できる必要があるプログラムがある場合X (例:時計操作)機能を実行する権限/権限を付与できます。Xアルファベットのスープの缶を丸ごと与えるよりも良いことはありません。これは…最小権限の原則。プログラムにバグ(一般的なプログラミングエラーまたは悪用可能なセキュリティホール)があるとどうなりますか? 「root」として実行すると、誰でもファイルを削除したり、攻撃者に送信したりできます。プログラムが行う唯一のことがある場合できる時計を操作することです(ロックされたディレクトリのファイルを操作するなどの権限のない機能も含む)。プログラムが制御できない場合の最悪のシナリオです。

関連情報