Назад | Перейти на главную страницу

Является ли выполнение моих заданий crontab от имени пользователя root угрозой безопасности?

У меня есть несколько задач cron, которые я выполняю - в основном, связанные с резервным копированием.

Мне нужно сделать резервную копию застрявшего файла, например / etc / apache2 / sites / available и т. Д., Для чего требуется root-доступ.

У меня есть пара вопросов:

При работе на безголовом сервере:

  1. Под каким пользователем запускается сценарий (при условии, что я не укажу пользователя в записи задания cron)?
  2. Можно ли запускать сценарий резервного копирования от имени пользователя root или это создает секретный вопрос?

Кстати, на моем сервере работает Ubuntu 10.0.4 LTS

Если вы в достаточной степени защитили доступ к сценарию и приняли разумные меры предосторожности, запуск чего-либо из root crontab обычно не представляет угрозы для безопасности.

Но не запускайте сценарий от имени пользователя root, который пользователь без полномочий root может редактировать или перезаписывать. Это относится к заданиям, запускаемым из cron, а также в интерактивном режиме.

Если этот сценарий включает другие файлы, то же самое относится и к ним.

В случае сомнений всегда используйте принцип наименьших привилегий. Если вы все еще не уверены, вы всегда можете задать конкретные вопросы на форумах и в IRC.


Есть (почти) всегда способ запустить что-то от имени пользователя без полномочий root. Если все остальное не удается, использование sudo для ограничения пользователя определенными командами также ограничивает возможность причинения вреда.

Итак, в приведенном вами примере резервного копирования / etc / apache2 / sites-available этот файл по умолчанию доступен для чтения всем, что означает, что это доступ к месту назначения, доступный для записи только root.

Вы можете исправить это

  • создать группу с именем backupadmins (например)
  • установите группу в целевом каталоге на backupadmins
  • добавить пользователя с именем backupuser (например)
  • добавить пользователя backupuser в группу backupadmins.
  • сделать каталог доступным для записи группой backupadmins
  • запустить задание cron из crontab резервного пользователя.

Это зависит от того, что делают скрипты. Если они создают резервные копии, то это, вероятно, нормально, что они являются root - если злоумышленник перезаписывает эти сценарии, у вас, вероятно, в любом случае есть большие проблемы.

Если они делают глупые вещи, например, запускают файлы, найденные в каталогах, или что-либо, на что может повлиять содержимое веб-каталогов, тогда вам, вероятно, придется искать альтернативы.

Миллионы заданий cron по всему миру запускаются с правами root каждый день (или в любой другой период, в течение которого они установлены).

Важно то, что установлены правильные разрешения. Если вы запускаете что-то, доступное для записи всем, то злоумышленник или процесс могут изменить то, что они делают.

Задания Cron, как правило, выполняются владельцем crontab. Пользователь crontab может находиться в /var/spool/cron/crontabs/username например. Cronjobs, которые в /etc/crontab, /etc/cron.d/ или /etc/cron.hourly (ежедневно, еженедельно, ежемесячно) будет запускаться от root. Важно, чтобы права собственности и разрешения были правильными и для этих файлов crontab.