sudo без пароля під час входу з приватними ключами SSH


20

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

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


askubuntu.com/a/135838 Якщо ви введете цих користувачів у групу, ви точно можете!
Роб

спробуйте sudo visudoзмінити свій пароль, щоб NOPASSWD: ALLпобачити, чи це працює
пневматика

3
@AlanTuring Це також буде працювати для користувачів цієї групи, які визначили пароль.
Ксьон

@AlanTuring Це ефективно знизить безпеку сервера - я хочу лише певних користувачів, не всіх, sudo
Mikko Ohtamaa

Можна надати привілеї конкретним користувачам. Дивіться мою відповідь.
Ісаак Рабінович

Відповіді:


5

Можливість зробити це існує з (принаймні) квітня 2014 року .

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

Вікі Gentoo мають детальну інформацію про ці кроки.


1
Прекрасний, дякую Ліам. Шкода, що я не був у сисадміні протягом багатьох років!
Мікко Охтамаа

2

Це неможливо без серйозних змін коду на sudo та sshd. Судо не знає про методи входу, а ssh не публікує в інших програмах нічого, що вказувало б на те, чи використовувався публічний ключ, пароль чи якийсь інший механізм для входу.

Як сказав хтось інший, ви можете використовувати параметр NOPASSWD у судорах - це стосується вказаних користувачів завжди, хоча не лише тоді, коли вони використовують ssh з приватними ключами.

Якщо ви дійсно хочете, можуть бути хитрощі, які ви можете виконати з програмою suid, яка перевіряє журнал sshd і блокує / редагує файл sudoers, щоб цей користувач міг зробити sudo без пароля, і періодичне завдання відкликати цей дозвіл.

Все, що говорили, я думаю, це погана ідея. Вимога пароля для пільгових команд має кілька приємних переваг, яких приватний ключ SSH не має. Зокрема, це дозволяє мати таймаути для автентифікації (пароль повинен бути повторно введений, не вірно для ssh-сеансів), він дозволяє мати мінімум паролів та поворот (на відміну від ssh-ключів, у яких пропускна фраза є поза контролем сервера).


9
"Це неможливо зробити" - це не відповідь, особливо коли це можна зробити.
Ісаак Рабінович

Зміна відповіді на правильну, що містить нове інформатино.
Мікко Охтамаа

1

Кілька відповідей Наведіть на sudo без окремого пароля користувача. Ви повинні бути обізнані, що це знизить вашу безпеку.

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

Однак якщо ви думаєте про вразливі місця, які нададуть зловмиснику обмежену оболонку користувача, і цей користувач має NOPASSWD, встановлений у файлі sudoers, зловмисник виконує корінь, не маючи взагалі ніяких даних для системи.

Якщо судо вимагає від користувача пароля, зловмиснику потрібен час і удача, щоб прискорити його привілеї.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.