Принудительно использовать пароли ключей SSH?

9

Я смотрю на удаление паролей на основе входа для SSH. Однако я не хочу разрешать ssh-ключи без пароля, так как это было бы еще хуже.

Как я могу убедиться, что подключаются только ключи SSH, имеющие пароли?

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

Ли Б
источник

Ответы:

20

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

К сожалению, вы не можете заставить пользователей защищать свои закрытые ключи с помощью парольных фраз. Иногда для автоматизации доступа к удаленному SSH-серверу требуются незащищенные закрытые ключи. Одна хорошая привычка , которую я очень рекомендую для таких случаев посоветовать пользователям хэша в known_hosts файл (хранится в ~ / .ssh / known_hosts ), которая хранит информацию об удаленных хостов в подключает пользователей к, используя следующую команду:

ssh-keygen -H -f ~/.ssh/known_hosts

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

Кроме того, еще одна вещь, которую вы всегда должны иметь в виду, это не разрешать root входить удаленно, добавив следующее в конфигурацию вашего SSH-сервера (sshd_config):

PermitRootLogin no

С другой стороны, если вы хотите запретить пользователям использовать ключи для аутентификации, но вместо этого использовать пароли, вы должны добавить в свой sshd_config следующее :

PasswordAuthentication yes
PubkeyAuthentication no
Рожденный ездить
источник
8

Это невозможно.

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

siposa
источник
3

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

ombble
источник
2

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

Когда файлы ключей находятся в контролируемом месте, вам потребуется интерфейс управления для обновления (и применения политики паролей) с последующей передачей ключей нужным хостам. Либо сверните один, либо посмотрите на такие продукты, как FoxT / Tectia и т. Д.

PT
источник
... который ломает преимущества открытого ключа
Патви
0

Одним из смягчений будет использование плагина модуля PAM для аутентификатора Google. Обычно доступны в официальных пакетах.

Это сделает 2FA доступным через 6-значный код на вашем смартфоне.

Инструкции здесь: Как настроить многофакторную аутентификацию для SSH в Ubuntu 16.04

Базилик А
источник
1
Вы должны отметить, что это не дает прямого ответа на вопрос, но является (хорошей) альтернативой.
ceejayoz
1
@ceejayoz Вы правы. Я добавил «Одно смягчение будет использовать ..» в начале ответа только сейчас, чтобы прояснить, что это альтернатива.
Василий А
-1

ПРОСТО, вы просто расширяете протокол SSH, чтобы клиент SSH или агент SSH сообщал / устанавливал флаг, чтобы сказать, был ли зашифрован исходный закрытый ключ или нет (возможно, серверная сторона может даже задать запрос) - поскольку клиентская сторона имеет видимость закрытого ключа и даже запрашивает парольную фразу, когда ключ зашифрован.

wallabyted
источник