16

Можно ли сделать команду sudo для поддержки закрытых ключей SSH, чтобы при входе пользователя в систему с использованием закрытого ключа он / она мог выполнять sudo без ввода пароля.

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

4 ответа4

3

Это невозможно без серьезных изменений кода в sudo и sshd. Sudo не знает о методах входа в систему, и ssh не публикует в других программах ничего, что указывало бы, использовался ли для входа открытый ключ, пароль или какой-либо другой механизм.

Как кто-то еще сказал, вы можете использовать опцию NOPASSWD в sudoers - это будет применяться к указанным пользователям всегда, но не только, когда они используют ssh с закрытыми ключами.

Если вы действительно хотите, могут быть хитрости, которые вы можете сделать с программой suid, которая проверяет журнал sshd и блокирует / редактирует файл sudoers, чтобы позволить этому пользователю делать sudo без пароля, и периодически выполняет задачу, чтобы отозвать это разрешение.

Все это говорит, я думаю, что это плохая идея. Требование пароля для привилегированных команд имеет несколько приятных преимуществ, которых нет у закрытого ключа SSH. В частности, он позволяет вам устанавливать таймауты для аутентификации (пароль должен быть введен повторно, а для сеансов ssh это не так), он позволяет вам иметь минимумы и ротацию паролей (в отличие от ключей ssh, которые имеют парольную фразу вне контроля сервера).

1

Пара ответов Укажите на sudo без отдельного пароля пользователя. Вы должны знать, что это снизит вашу безопасность.

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

Однако, если вы думаете об уязвимостях, которые предоставляют злоумышленнику ограниченную пользовательскую оболочку, и для этого пользователя в файле sudoers установлено значение NOPASSWD, злоумышленник является пользователем root без каких-либо учетных данных для системы.

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

1

Возможность сделать это существует с (по крайней мере) апреля 2014 года.

Вам нужно будет установить пакет с именем pam_ssh_agent_auth (доступен для Centos 7 из коробки, YMMV), а затем сконфигурировать /etc/pam.d/sudo чтобы принять его в качестве метода авторизации. Наконец, вам может понадобиться добавить SSH_AUTH_SOCK в список переменных среды, которые сохраняются во время sudo .

В Gentoo есть подробная информация об этих шагах.

0

Нет сохраненных паролей или ключей не требуется. Вы можете получить желаемый результат, предоставив пользователю доступ без пароля в /etc /sudoers. Просто добавьте следующую строку:

user ALL=(ALL)       NOPASSWD: ALL

Обязательно используйте visudo для редактирования sudoers. Возможно, вы захотите быстро просмотреть справочную страницу sudoers, чтобы понять, что вы делаете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .