Один SSH ключ несколько пользователей

БЕСПЛАТНЫЙ МАСТЕР-КЛАСС!

ДЕНЬ 1 - Какие основные навыки сисадмина?

ДЕНЬ 2 - Настройка домена Windows Server 2016

ДЕНЬ 3 - Администрирование 1С:Предприятие

 

Регистрируйтесь!

Старт уже завтра!

или запишись через ВК



Может ли несколько пользователей использовать один и тот же SSH-ключ?

В мире безопасного удаленного доступа SSH (Secure Shell) является стандартом де-факто. Центральным элементом его безопасности является использование криптографических ключей вместо паролей. Часто возникает вопрос: можно ли использовать один и тот же SSH-ключ (пару: открытый и закрытый) для аутентификации нескольких разных пользователей? Ответ на этот вопрос неоднозначен и зависит от контекста, архитектуры системы и, что самое важное, от целей безопасности.

Краткий ответ

Технически — да, это возможно. Однако, с точки зрения безопасности и администрирования, это почти всегда плохая практика, за исключением нескольких специфических сценариев.

Как работает аутентификация по SSH-ключу?

Чтобы понять последствия совместного использования ключа, важно вспомнить основы:

  • Закрытый ключ (Private Key) хранится у пользователя на его локальной машине и должен храниться в секрете. Это как физический ключ от дома.
  • Открытый ключ (Public Key) размещается на SSH-сервере, к которому нужен доступ. Это как замок, который открывается вашим физическим ключом.

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

Сценарии совместного использования SSH-ключа

1. Разные пользователи на одном сервере

Механизм: Вы копируете один и тот же открытый ключ в файлы ~/.ssh/authorized_keys нескольких пользовательских учетных записей на одном сервере (например, пользователь alice и пользователь bob).

Результат: Любой человек, имеющий доступ к соответствующему закрытому ключу, сможет войти на сервер под любым из этих пользователей (alice ИЛИ bob).

Проблемы безопасности:

  • Отсутствие неотказуемости (Non-Repudiation): Если в системе происходит инцидент (например, удаление критичных файлов), невозможно определить, кто из пользователей (alice или bob) его совершил, так как оба используют один и тот же ключ. В журналах будет указана учетная запись, но не конкретный владелец ключа.
  • Нарушение принципа наименьших привилегий: Если один из пользователей имеет больше привилегий (например, alice имеет права sudo, а bob — нет), то любой, у кого есть ключ, получает доступ к учетной записи с повышенными правами.
  • Сложность отзыва доступа: Если ключ скомпрометирован или один из пользователей уходит из проекта, вам придется вручную удалить этот ключ из файлов authorized_keys всех пользователей, которые его использовали. Это легко упустить.

 

2. Один пользователь на нескольких серверах

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

Результат: Владелец закрытого ключа может получить доступ ко всем этим серверам под учетной записью deploy.

Оценка: Это распространенная и часто приемлемая практика. Например, системный администратор может использовать один ключ для доступа ко всем серверам под своим пользователем, или для служебной учетной записи deploy в CI/CD-процессе.
Однако и здесь есть риск: если закрытый ключ будет скомпрометирован, злоумышленник получит доступ сразу ко всем серверам. Для смягчения этого риска ключи следует защищать парольной фразой (passphrase).

3. Несколько пользователей на нескольких серверах (совместный доступ)

Механизм: Один и тот же открытый ключ распространяется среди нескольких человек и добавляется в учетные записи нескольких пользователей на нескольких серверах.

Результат: Любой из этих людей может получить доступ к любой из этих учетных записей на любом из этих серверов.

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

Правильная альтернатива: SSH-ключи и менеджеры доступов

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

  • Индивидуальные ключи: Каждый пользователь должен генерировать свою собственную пару SSH-ключей.
  • Централизованное управление: Используйте инструменты для управления доступом, такие как SSH Certificate Authority (CA). В этом случае центральный орган подписывает открытые ключи пользователей, а на серверах доверяют только этому центру. Это позволяет легко выдавать и отзывать доступ без необходимости редактировать файлы на каждом сервере.
  • Использование bastion-хостов: Настройте единую точку входа (bastion host) со строгим аудитом и двухфакторной аутентификацией, а доступ к внутренним серверам организуйте через него с использованием индивидуальных ключей.
  • Системы управления конфигурацией: Инструменты вроде Ansible, Chef или Puppet могут безопасно распространять открытые ключи пользователей на серверы, обеспечивая согласованность и контроль.

Вывод

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

Современные практики информационной безопасности диктуют необходимость уникальных ключей для каждого пользователя, coupled с robust-системами для их управления и аудита. Помните: ваш SSH-ключ — это ваша цифровая личность. Делиться им — все равно что раздавать копии ключей от своего дома незнакомым людям.

Вверх
Политика конфиденциальности Используя сайт вы даете согласие на обработку персональных данных