web-dev-qa-db-ja.com

rootとしてcrontabジョブを実行することはセキュリティリスクですか?

私が実行しているcronジョブがいくつかあります。主にバックアップ関連のものです。

ルートアクセスを必要とする/ etc/Apache2/sites/availableなどのようにスタックしたバックアップをとる必要があります。

いくつか質問があります。

ヘッドレスサーバーで実行する場合:

  1. スクリプトはどのユーザーで実行されますか(cronジョブエントリでユーザーを指定しない場合)。
  2. Rootでバックアップスクリプトを実行しても大丈夫ですか、それともセキュリティ上の質問ですか?

ところで、私のサーバーはUbuntu 10.0.4 LTSを実行しています

8
user35402

スクリプトへのアクセスを十分に保護し、適切な予防策を講じている場合、通常、rootのcrontabから何かを実行してもセキュリティ上のリスクはありません。

ただし、root以外のユーザーが編集または上書きできるスクリプトをrootとして実行しないでください。これは、対話的に実行されるだけでなく、cronから実行されるジョブにも適用されます。

そのスクリプトに他のファイルが含まれている場合、同じことがそれらにも適用されます。

疑問がある場合は、常に最小特権の原則を使用してください。それでもわからない場合は、いつでもフォーラムやIRCで特定の質問をすることができます。


(ほぼ)root以外のユーザーとして何かを実行する方法は常にあります。他のすべてがSudoを使用してユーザーを特定のコマンドに制限することに失敗すると、害を及ぼす可能性も制限されます。

したがって、/ etc/Apache2/sites-availableをバックアップした例では、そのファイルはデフォルトでだれでも読み取り可能であり、ルートのみが書き込み可能な宛先へのアクセスであることを意味します。

あなたはそれを修正することができます

  • backupadminsというグループを作成します(例)
  • 宛先ディレクトリのグループをbackupadminsに設定します
  • backupuserというユーザーを追加します(例)
  • ユーザーbackupuserをグループbackupadminsに追加します。
  • backupadminsグループがディレクトリを書き込み可能にする
  • backupuserのcrontabからcronジョブを実行します。
15

それはスクリプトが何をしているかに依存します。彼らが何かをバックアップしている場合は、おそらくrootであっても問題ありません-悪意のあるユーザーがこれらのスクリプトを上書きした場合は、とにかく大きな問題が発生します。

ディレクトリで見つかったファイルを実行したり、Webディレクトリのコンテンツによって影響を受ける可能性のある何かを実行するなど、愚かなことをする場合は、おそらく代替手段を検討する必要があります。

3
James L

世界中の何百万ものcronジョブが、毎日root(または実行するように設定されている期間)としてrootとして実行されています。

重要なことは、適切な権限が設定されていることです。誰でも書き込み可能な何かを実行している場合、悪意のあるユーザーまたはプロセスがその動作を変更する可能性があります。

Cronジョブは、通常、crontabの所有者が実行します。たとえば、ユーザーcrontabが/var/spool/cron/crontabs/usernameにある場合があります。 /etc/crontab/etc/cron.d/または/etc/cron.hourly(毎日、毎週、毎月)にあるCronjobsは、rootによって実行されます。これらのcrontabファイルについても、所有権と権限が正しいことが重要です。