🔏 Обновите ваши ключи SSH! – Information Security Squad
🔏 Обновите ваши ключи SSH!
Если вы разработчик программного обеспечения или системный администратор, держу пари, вы используете ключи SSH.
Пулл ваших коммитов на Github или управление вашими системами Unix, это все лучше всего делать через SSH с аутентификацией с открытым ключом, а не паролями.
Однако с течением времени многие из вас используют старые ключи и не знают о необходимости создавать новые ключи, чтобы намного лучше защитить своих рядовых.
В этом посте я продемонстрирую, как плавно перейти к ключу Ed25519, зачем вам это нужно, и покажу несколько советов и подсказок.
Сгенерируйте новый ключ с помощью ssh-keygen -o -a 100 -t ed25519, укажите надежную фразу-пароль и прочитайте дальше, если вам нужен плавный переход.
Я планирую опубликовать еще несколько руководств по советам и рекомендациям SSH, так что следите за обновлениями, чтобы узнать больше.
В этом руководстве речь пойдет о SSH-ключах как аутентификации открытого ключа пользователя.

DSA и RSA 1024 бит устарели

Если вы создали ключ более четырех лет назад с параметрами по умолчанию, он, вероятно, небезопасен (RSA <2048 бит).
Более того, я недавно видел, как некоторые все еще используют ключи DSA (ssh-dss в формате OpenSSH).
Это тип ключа, похожий на RSA, но ограниченный размером 1024 бита и поэтому рекомендуемый в течение длительного времени.
Он явно небезопасен по уважительным причинам в последних версиях OpenSSH (см. журнал изменений для 7.0).
Грустно то, что я вижу статьи о том, как повторно включить поддержку ключей DSA, а не перейти на более безопасный тип ключа.
Действительно, неразумно следовать инструкциям по изменению конфигурации для PubkeyAcceptedKeyTypes или HostKeyAlgorithms.
Вместо этого лучше обновите свои ключи!

Определите свою текущую ситуацию

Перечислите все ваши ключи:

$ for keyfile in ~/.ssh/id_*; do ssh-keygen -l -f "${keyfile}"; done | uniq
  • DSA или RSA 1024 бита: красный флаг. Опасные.
  • RSA 2048: желтый рекомендуется поменять
  • RSA 3072/4096: отлично, но у Ed25519 есть некоторые преимущества!
  • CDSA: По-разному. Рекомендуется изменить
  • Ed25519: вау круто, но ты точно в безопасности?

Плавный переход, обещаю.

Вы, наверное, думаете… «Я давно пользуюсь своим ключом, я не хочу менять его везде и сейчас».

Серьезная точка зрения, но вы не должны!

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

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

Посмотрите на это в действии, добавив немного подробностей к команде SSH connect (-vvv).

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

Вам понравится кривая Twisted Edwards

Наиболее распространенным является ключ типа RSA, также известный как ssh-rsa с SSH.

Он очень совместим, но также медленен и потенциально небезопасен, если создается с небольшим количеством битов (<2048). Мы только что узнали, что ваш SSH-клиент может обрабатывать несколько ключей, поэтому включите новейшую более быструю криптографию с эллиптическими кривыми и наслаждайтесь очень компактным форматом ключей, который он предоставляет!

Ключи Ed25519 короткие.

Очень короткие.

Если вы привыкли копировать несколько строк символов из системы в систему, вы будете приятно удивлены размером.

Открытый ключ составляет всего около 68 символов.

Он также намного быстрее в аутентификации по сравнению с безопасным RSA (3072+ бит).

Генерация ключа Ed25519 выполняется с помощью опции -t ed25519 команды ssh-keygen.

Ed25519 является эталонной реализацией для EdDSA с использованием кривых Twisted Edward (ссылка на Википедию).

Как повысить устойчивость к взлому паролей

При создании пары ключей вас просят ввести фразу-пароль для шифрования закрытого ключа.

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

Чтобы на самом деле предотвратить это, необходимо убедиться, что парольная фраза не подвергается простому перебору.

Генератор ключей OpenSSH предлагает два варианта противодействия взлому паролей через брутфорс: использование нового формата ключей OpenSSH и увеличение количества раундов функции получения ключей.

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

Я бы посоветовал провести эксперимент с количеством раундов в вашей системе.

Начните примерно со 100 раундов.

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

Очень приемлемо, по моему мнению.

В ssh-keygen используйте опцию -o для нового формата ключей RFC4716 и используйте современную функцию получения ключей, основанную на bcrypt.

Используйте параметр -a <num> для указания количества раундов.

На самом деле, создается впечатление, что при создании ключа Ed25519 подразумевается опция -o.

Создай свой новый ключ Ed25519

Подсказка: используйте одну и ту же фразу-пароль для всех ваших типов ключей для большего удобства.
$ ssh-keygen -o -a 100 -t ed25519
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/gert/.ssh/id_ed25519.
Your public key has been saved in /home/gert/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256: [...] gert@hostname
The key's randomart image is: [...]
Обратите внимание на строку «Your identification has been saved in /home/gert/.ssh/id_ed25519».
Ваши текущие ключи RSA/DSA находятся рядом с ним в той же папке ~/.ssh.
Как и с любым другим ключом, вы можете скопировать открытый ключ в ~/.ssh/id_ed25519.pub на целевые хосты для аутентификации.

Знающий о нескольких ключах SSH клиент

Все ключи, доступные в путях по умолчанию, будут автоматически обнаруживаться клиентскими приложениями SSH, в том числе агентом SSH через ssh-add.
Итак, если вы использовали приложение, такое как ssh/scp/rsync, прежде чем как …
$ ssh user@host

он предложит серверу несколько открытых ключей, и сервер запросит подтверждение наличия соответствующей записи для аутентификации.

А ежедневное использование команды ssh-add не изменится и автоматически обнаружит ключ Ed25519:

$ ssh-add
Enter passphrase for /home/gert/.ssh/id_rsa:
Identity added: /home/gert/.ssh/id_rsa (gert@hostname)
Identity added: /home/gert/.ssh/id_ed25519 (gert@hostname)

Он не только обнаружил оба ключа, но и загрузил их, введя одну фразу-пароль (потому что это то же самое)!

Мы достигли очень важной цели.

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

Тем временем ключ RSA все еще будет работать.

Изменить или установить парольную фразу

Если вы боитесь, что она изменит ваш ключ, не волнуйтесь.
Закрытая часть вашей пары ключей зашифрована парольной фразой, которая существует только локально на вашем компьютере.
Изменяйте ее столько, сколько  вам нравится.
Это рекомендуется для предотвращения злоупотреблений в случае попадания файла ключа в чужие руки.
Повторите эти действия для всех ваших файлов ключей, чтобы обеспечить новый формат ключа с 100 раундами шифрования KDF:
$ ssh-keygen -f ~/.ssh/id_rsa -p -o -a 100

Обновите свой текущий ключ RSA

Использование Ed25519 будет (и должно) работать в большинстве ситуаций к настоящему времени, но устаревшие системы могут еще не поддерживать их.

Лучший запасной вариант – это сильная пара ключей RSA.

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

Вместо этого я бы порекомендовал обновить существующий ключ, чтобы все было просто.

В зависимости от силы (размера ключа) вашего текущего ключа RSA вы можете все изменить.

Если у вас по-прежнему слабый ключ RSA, уберите его со стандартного пути и сгенерируйте новый размером 4096 бит:

$ mv ~/.ssh/id_rsa ~/.ssh/id_rsa_legacy
$ mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa_legacy.pub
$ ssh-keygen -t rsa -b 4096 -o -a 100
Если вы используете агент, укажите вручную все ключи:
$ ssh-add ~/.ssh/id_rsa ~/.ssh/id_rsa_legacy ~/.ssh/id_ed25519
Когда вы закончите переход на все удаленные цели, вы можете вернуться к удобству и позволить ему автоматически обнаруживать ваши новые ключи RSA и Ed25519; просто опустите аргументы ключевого файла.

Системы, поддерживающие Ed25519

Поддержка доступна начиная с OpenSSH 6.5 и принята в мировых операционных системах Unix для рабочих станций. Ubuntu 14.04+, Debian 8+, CentOS / RedHat 7+ и т. д.

Все уже поддерживают это. (Если у вас есть сведения о Mac OS X, пожалуйста, напишите об этом)

Некоторым программам, таким как настраиваемые агенты ключей рабочего стола, могут не нравиться новые ключи по нескольким причинам (см., например, ниже о Gnome-keyring).

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *