Я собираюсь удалить логины на основе пароля для SSH. Однако я не хочу разрешать использование ключей ssh без пароля, так как это будет еще хуже.
Как я могу убедиться, что могут подключаться только SSH-ключи с паролями?
Если это невозможно сделать, есть ли альтернативы, такие как централизованное управление генерацией ключей SSH и предотвращение генерации и / или использования пользователями собственных ключей? Полагаю, что-то вроде PKI.
Парольная фраза, которая может быть установлена на закрытом ключе: не связан с 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
Это невозможно.
Пользователи могут делать что угодно со своими ключевыми файлами, конвертировать их в файлы без пароля, даже если вы их, например, создали.
Вы не можете. Как только пользователь получит ключевые данные, вы не сможете помешать ему удалить парольную фразу. Вам нужно будет искать другие способы аутентификации.
Чтобы получить контроль над пользовательскими ключами, все ключи должны быть перемещены в корневой каталог, где ключи доступны для чтения, но не могут быть изменены конечным пользователем. Это можно сделать, обновив sshd_config.
Как только ключевые файлы окажутся в контролируемом месте, вам понадобится интерфейс управления для обновления (и применения политики паролей) с последующим распределением ключей по требуемым хостам. Либо скатайте один, либо посмотрите на такие продукты, как FoxT / Tectia и т. Д.
Одним из способов решения этой проблемы было бы использование плагина модуля PAM аутентификатора Google. Обычно доступно в официальных пакетах.
Это сделает доступной 2FA через 6-значный код на вашем смартфоне.
Инструкции здесь: Как настроить многофакторную аутентификацию для SSH в Ubuntu 16.04
ПРОСТО, вы просто расширяете протокол SSH, чтобы клиент SSH или агент SSH сообщал / устанавливал флаг, чтобы указать, был ли зашифрован исходный закрытый ключ или нет (возможно, на стороне сервера даже может быть запрос) - поскольку на стороне клиента есть видимость закрытого ключа и даже запрашивает парольную фразу, когда ключ зашифрован.