Вы здесь

Обновите свои SSH-ключи!

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

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

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

Обновите свои SSH-ключи!

Создайте свой новый ключ с помощью

ssh-keygen -o -a 100 -t ed25519

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

1024-битные DSA и RSA уже устаревают

Если вы создали свой ключ более четырех лет назад с параметрами по умолчанию, сейчас, скорее всего, работать по нему же небезопасно (если RSA <2048 бит). Хуже того, я видел, как мои коллеги, друзья и подписчики в Твиттере все еще используют ключи DSA (ssh-dss в формате OpenSSH). Это тип, похожий на RSA, но ограниченный размером 1024 бит и поэтому его рекомендуется использовать в долгосрочной перспективе. Однако в последней версии OpenSSH он явно небезопасен, и есть уважительные причины, чтобы отказаться от его использования.

Печально то, что в большинстве сообщений и постов, которые пишут пользователи DSA, содержатся вопросы и советы о том, как повторно включить поддержку этих ключей, а не переходить к более безопасному типу. На самом деле, неразумно создавать инструкции для того, чтобы изменить конфигурацию для Pubkey Accepted Key Types или Host Key Algorithms (ключи хоста для более поздней публикации). Вместо этого просто обновите свои ключи!

Сравните DSA с замками, которые использовались в 19 веке для запирания амбаров. Вы бы не хотели, чтобы такое устройство защищало дверь в ваш дом, не правда ли?


Определяем текущую ситуацию

Список всех ваших ключей:

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

Повышение устойчивости паролей ко взлому

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

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

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

Применяйте (ssh-keygen) (-o) опции для другого формата ключа RFC4716 и современной деривации ключей, работающей на bcrypt. Используйте (-a ) опцию для () количества раундов. Кроме того, похоже, что при создании ключа Ed25519 также подразумевается (-o) опция.

Команды Open SSH на самом деле не объясняют «новый» формат. Я нашел очень полезной следующую статью: «new open ssh key format and bcrypt pbkdf» на www.tedunangst.com.

Создайте свой новый секси-ключ Ed25519

Protip: используйте эту же кодовую фразу для всех ваших типов ключей и наслаждайтесь.

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 раундами BDF с Bcrypt:

ssh-keygen -f ~/.ssh/id_rsa -p -o -a 100

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

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

При том, что клиент Open SSH поддерживает несколько ключей 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; просто опустите аргументы keyfile.

Поддержка программного обеспечения для Ed25519

Поддержка доступна с OpenSSH 6.5 и хорошо совместима с операционными системами Unix для рабочих станций. Ubuntu 14.04+, Debian 8+, CentOS / RedHat 7+ и т. д. все это уже поддерживают. Некоторым программным средствам, такими, как пользовательские ключевые агенты для персональных компьютеров, могут не нравиться новые ключи по нескольким причинам (см. ниже, например, о Gnome-keyring).

Между прочим, Github тоже неплохо работает. Однако Launchpad и Gerrit-код, похоже, требуют ключей RSA. PuTTY на Windows? Смотри ниже.

Мой Gnome-keyring больше не работает

Gnome-keyring, как минимум, используется в Ubuntu Unity, при этом не умеет читать новые ключи формата RFC4716, но сообщает об успехах. Это раздражает. Я бы рекомендовал отключить брандмауэр Gnome для использования SSH-агента и вместо этого использовать простой агент OpenSSH.

Я использую Windows с PuTTY

Извините, я не использую PuTTY, но могу дать подсказку. Эта страница предлагает поддержку Ed25519 с версии конца 2015 года

Является ли это идеальной защитой для ключей SSH?

Мы сделали несколько шагов, важных, но до полной безопасности еще далеко. При работе со средами с высокой степенью чувствительности, я бы отказался от использования ключа по тому принципу, что описан в этом посте, поскольку в нем содержится незашифрованный закрытый ключ в памяти. Вместо этого используйте аппаратную защиту (смарт-карты), чтобы избежать утечки ключей даже из дампов памяти. Этот прием не рассматривается в данном посте, главным образом потому, что для этого требуется аппаратное устройство, которое вам нужно купить, а также потому что ограничения зависят от устройства. Хорошим решением было бы использовать ваш TPM, уже встроенный в ваш компьютер, вероятно, но это определенно заслуживает другого поста.

Категория: 
Безопасность
5
Ваша оценка: Нет Средняя: 5 (2 оценок)
34156 / 1
Аватар пользователя admin
Публикацию добавил: admin
Дата публикации: пн, 01/22/2018 - 14:56

Что еще почитать:

Комментарии:

Бублик

Это тип, похожий на RSA, но ограниченный размером 1024 бит и поэтому его рекомендуется использовать в долгосрочной перспективе.
-------
"НЕ"

пн, 05/17/2021 - 19:13