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

Как я могу использовать Dirvish без включения корневого входа в sshd?

Я настраиваю сервер резервного копирования с помощью Dirvish, который будет выполнять резервное копирование нескольких серверов Ubuntu через Интернет.

В рамках нашей политики безопасности мы не разрешаем входить в систему по ssh с правами root на наших серверах.

Как я могу использовать Dirvish для резервного копирования моих серверов, не входя в систему как root и не предоставляя пользователю dirvish NOPASSWORD в sudoers?

Идеальное решение должно включать минимальную настройку на резервных целевых машинах.

Для всех, кто ищет, вот решение, с которым я пошел.

Ключевые моменты:

  1. Dirvish не поддерживает запуск rsync через sudo (почему, я не знаю)

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

В sshd_config вы можете указать, что вход в систему ssh root разрешен только тогда, когда указан флаг -command и команда совпадает с командой в AUTHORIZED_KEYS

PermitRootLogin forced-commands-only

Полная процедура находится здесь: http://apt-get.dk/howto/backup/

Вы на правильном пути, запретив входить в систему с правами root через SSH. Однако ваше предварительное условие относительно sudo необоснованно.

Однако sudo позволяет очень точно контролировать то, что может и что не может быть выполнено данным пользователем. Вы можете разрешить пользователю dirvish выполнять ТОЛЬКО один двоичный файл без пароля.

Совместите это с аутентификацией на основе ключей для этого пользователя, и вы получите решение для резервного копирования.

Я добавляю второй ответ с другим решением в свете более подробной информации о проблеме. По-видимому dirvish использует rsync на бэкэнде, и @Rich совершенно прав, указывая, что разрешение доступа sudo даже только к этой одной команде дает полный контроль над корневой файловой системой.

В свете этого я бы посоветовал поработать с группами пользователей, чтобы пользователь dirvish работал, имея доступ на чтение к файлам, для которых требуется резервное копирование, в силу того, что он находится в нужной группе пользователей. Таким образом можно избежать уязвимостей корневого уровня.

Можно ли использовать флаг sshd «PermitRootLogin без пароля»? Тогда вы могли войти только с соответствующим открытым ключом. Для большей безопасности вы можете включить второй ssh-сервер на другом порту и разрешить keyauth только там.