web-dev-qa-db-ja.com

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

NTPを使用してネットワーク時間を変更し、2台のコンピュータを同期するアプリケーションを開発しました。後者はrootとして実行されます。 Linuxでの日時(私はそう思う)。

今、私はそれをユーザーとして実行したいと思います。しかし、私は時間にアクセスする必要があります。

  • Root以外のユーザーアカウントでデーモンを実行することは良い習慣ですか?
  • アプリケーションにCAP_SYS_TIMEなどのcapabilityを与えますか?
  • セキュリティの脆弱性は導入されていませんか?
  • もっと良い方法はありますか?
13
Anonymous12223

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

はい、これは一般的です。たとえば、Apacheはrootとして起動し、新しいプロセスをwww-data(デフォルト)としてフォークします。
前に述べたように、プログラムがハッキングされた場合(例:コードインジェクション)、攻撃者はrootアクセスを取得しませんが、この特定のユーザーに付与した権限に制限されます。

「CAP_SYS_TIME」のような「ケイパビリティ」を与えましょうか?

setuidの使用を避け、この非常に特定の機能へのアクセス許可を制限することをお勧めします。

「グッドプラクティス」と見なされるように、別の方法を使用しますか?

たとえば、セキュリティを強化できます。

  • シェルなしで、権限のないユーザーとしてサービスを実行します。
  • chrootを使用して、ユーザーをホームディレクトリにロックします。
15
Pl4nk
  • 「グッドプラクティス」と見なされるように、別の方法を使用しますか?

それ以外に強力で反駁できない理由がない限り、GNU/Linuxディストリビューションに付属しているNTPパッケージを使用してください。標準のNTPデーモンは何年もかかっています成熟して、システムのクロックを低速化または高速化してネットワーククロックまたはGPSクロックと同期させるなどの高度な機能を備えています。クロックを同期するように調整されているため、isその目的に最適なツール。

ntpdは引き続き維持されます 最近の更新による判断 (この投稿の執筆時点)。さらに機能が必要な場合は、開発者に直接連絡することをお勧めします。開発者がそれについて何を言っているかを信頼してください。

13
user86969

関数[〜#〜] x [〜#〜]を実行する必要があるプログラムがある場合(たとえば、時計を操作する)、そして、あなたはそれに関数/ =[〜#〜] x [〜#〜]を実行する特権/パワーを与えることができ、それは与えるよりも優れていますそれは全体のアルファベットスープの缶です。これは 最小特権の原則 として知られています。プログラムにバグがある場合を考えてみてください—通常のプログラミングエラーまたは悪用可能なセキュリティの脆弱性のいずれかです。 「ルート」として実行されている場合は、全員のファイルを削除するか、攻撃者に送信する可能性があります。プログラムができる唯一のことがクロック(およびロックダウンされたディレクトリ内のファイルの操作などの非特権関数)を操作することである場合、プログラムが不正になった場合に起こり得る最悪の事態です。