SSH вездесущ. Это де-факто решение для удаленного введения систем *NIX. Но у SSH есть довольно грубые проблемы, когда дело доходит до удобства использования, работы и безопасности.
Вы, вероятно, знакомы с этими проблемами:
- Пользовательский опыт SSH ужасен. Пользователь SSH пользователь-это медленное и ручное. Подключение к новым хозяевам создает запутанные предупреждения о безопасности. У вас остаются странные новые учетные данные, чтобы управлять с небольшим руководством о том, как это сделать.
- Работа SSH в масштабе является катастрофой. Ключевое одобрение и распространение — глупая трата времени. Имена хостов нельзя повторно использоваться. Доморощенные инструменты разбросайте ключевой материал по всему флоту, которые должны быть очищены позже, для независимых пользователей.
- SSH поощряет плохие методы безопасности. Повторное переизведение сложно, так что это не сделано. Пользователи подвергаются воздействию ключевых материалов и рекомендуются повторно использовать ключи на разных устройствах. Ключи навсегда доверяют, поэтому ошибки проваливаются.
Хорошая новость в том, что все это легко исправить.
Ни одна из этих проблем фактически не присуща SSH. Они на самом деле проблемы с SSH Аутентификация открытого ключа . Решение состоит в том, чтобы переключиться на Аутентификация сертификата .
Аутентификация сертификата SSH делает SSH проще в использовании, проще в работе и более безопасной.
Фон
В Smallstep сертификаты — это наш варенье. Мы создаем программное обеспечение с открытым исходным кодом, которое позволяет вам запустить собственный авторитет частного сертификата и управлять сертификатами X.509 (TLS/HTTPS).
Сертификаты SSH были на нашем радаре некоторое время. С нашей точки зрения они все профессионалы, ни минусы. Но никто их не использует. Почему нет? Мы задавали сотням людей, этот вопрос. Вот что мы узнали:
- Люди используют сертификаты SSH. На самом деле, в значительной степени все работа в масштабе, который знает, что они делают (делает ( Facebook , Uber , Google, Netflix , Intercom , Lyft , и т. Д.), Но …
- Сертификаты и инфраструктура общедоступного ключа (PKI) трудно для Grok. Люди не сразу понимают преимущества.
- Существует (маленький) разрыв инструментов, который усугубляет этот разрыв в знаниях. Это не сложно заполнить, но люди с осторожностью делают это сами без более глубокого понимания концепций PKI.
- Больше всего на свете сертификаты SSH не получили прессу, которую они заслуживают. Большинство Люди, которых мы просили, вообще не слышали о них.
Мы убеждены, что сертификаты SSH — это правильный способ сделать SSH. Их не так сложно понять, и это стоит усилий. Сертификаты SSH заслуживают большего пресса и более широкого использования.
Аутентификация открытого ключа
Большинство развертываний SSH используют Аутентификация открытого ключа , который использует асимметричную (общедоступную) криптографию с открытой/частной парой ключей, сгенерированной для каждого пользователя и хоста для аутентификации.
Магия асимметричной криптографии — это особое соответствие между публичным и частным ключом. Вы можете знак Данные с вашим закрытым ключом, и кто -то другой может Проверьте Ваша подпись с соответствующим открытым ключом. Как и хэш, вычислительно невозможно создать подпись. Таким образом, если вы можете проверить подпись, и вы знаете, кому принадлежит личный ключ, вы знаете, кто породил подпись.
Простая аутентификация может быть реализована, бросая вызов кому -то подписать большое случайное число. Если я открою вам розетку и отправлю случайное число, и вы ответите действительной подписью на этот номер, я должен с вами поговорить.
Это упрощение, но более или менее как работает аутентификация SSH Public Key. Аутентификация сертификата работает так же, но с важным поворотом, к которому мы доберемся через мгновение.
Для SSH хозяину, использующему аутентификацию открытого ключа, хост должен знать ваш открытый ключ. По умолчанию ваш открытый ключ должен быть добавлен в ~/.ssh/adured_keys
Анкет Поддержание этого файла для каждого пользователя через флот является оперативно сложным и подверженным ошибкам.
Пользователь SSH пользователь с аутентификацией открытого ключа обычно начинается с какого -то заклинания барокко ssh-keygen
Надеюсь, вытащил из бега, но, скорее всего, вылетел из переполнения стека. Затем вас попросят отправить свой открытый ключ для Утверждение и распространение Анкет Этот процесс, как правило, ручной и непрозрачный. Вас могут попросить отправить по электронной почте администратору или открыть билет JIRA. Тогда ты ждешь. Пока вы делаете это, какой -то плохой оператор прерывается и предлагается добавить ваш ключ к манифесту в некотором репо и вызвать развертывание. Как только это будет сделано, вы можете SSH. Поскольку ключевые привязки являются постоянными, ваш доступ SSH будет продолжаться на бессрочно, пока кто -то не изменит этот процесс.
Аутентификация сертификата
Аутентификация сертификата исключает одобрение и распределение ключа. Вместо того, чтобы разбросать общедоступные ключи по статическим файлам, вы связываете открытый ключ с именем с Сертификат Анкет Сертификат — это всего лишь структура данных, которая включает в себя открытый ключ, имя и вспомогательные данные, такие как дата истечения срока действия и разрешения. Структура данных подписана центр сертификации (CA).
$ ssh-keygen -L -f id_ecdsa-cert.pub id_ecdsa-cert.pub: Type: ecdsa-sha2-nistp256-cert-v01@openssh.com user certificate Public key: ECDSA-CERT SHA256:O6M6oIjDm5gPm1/aTY619BgC3KSpS4c3aHVWxYh/uGQ Signing CA: ECDSA SHA256:EY2EXJGoPv2LA6yEbjH+sf9JjG9Rd45FH1Wt/6H1k7Y Key ID: "mike@example.com" Serial: 4309995459650363134 Valid: from 2019-09-11T14:50:01 to 2019-09-11T18:50:01 Principals: mike Critical Options: (none) Extensions: permit-X11-forwarding permit-agent-forwarding permit-port-forwarding permit-pty permit-user-rc
Чтобы включить аутентификацию сертификата, просто настройте клиентов и хостов, чтобы доверять любым сертификатам, подписанным общедоступным ключом вашего CA.
На каждом хосте, редактировать /etc/ssh/sshd_config
, указать открытый ключ CA для проверки сертификатов пользователей, закрытого ключа хоста и сертификата хоста:
# Path to the CA public key for verifying user certificates TrustedUserCAKeys /etc/ssh/ssh_user_key.pub # Path to this host's private key and certificate HostKey /etc/ssh/ssh_host_ecdsa_key HostCertificate /etc/ssh/ssh_host_ecdsa_key-cert.pub
На каждом клиенте добавьте строку в ~/.ssh/stornal_hosts
Указание CA Public Key для проверки сертификатов хоста:
@cert-authority *.example.com ecdsa-sha2-nistp256 AAAAE...=
Вот и все. Это буквально все, что вам нужно сделать, чтобы начать использовать аутентификацию сертификата. Вы даже можете использовать его вместе с аутентификацией открытого ключа, чтобы облегчить переход.
Статические ключи в ~/.ssh/adured_keys
больше не нужны. Вместо этого сверстники изучают общественные ключи друг от друга по требованию, когда устанавливаются соединения, обменивая сертификаты. Как только сертификаты обменялись доходы от протокола, как и с аутентификацией открытого ключа.
Чтобы узнать больше о SSH -сертификатах, посетите Сайт Smallstep Анкет Вы даже можете попробовать наше бесплатное предложение и испытать стоимость сертификатов SSH менее чем за пять минут!
Оригинал: «https://dev.to/smallstep/if-you-re-not-using-ssh-certificates-you-re-doing-ssh-wrong-episode-1-keys-versus-certificates-5a0n»