Как пролонгировать ключи хоста ssh?

17

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

Я сгенерировал новый ключ, затем добавил его в конфигурацию sshd, например так:

HostKey / etc / ssh / ssh_host_rsa_key ( сначала             старый 2-битный ключ) 
HostKey / etc / ssh / ssh_host_rsa4096_key         (новый больший ключ 2-й )

После перезапуска sshdя ssh'd к хосту, я не получаю предупреждение об изменении идентификации, однако новое также не кэшируется ~/.ssh/known_hosts. Если я поставлю строки в обратном порядке, я получу предупреждение об изменении идентификации. Точно так же, когда я добавляю ключ ed25519, независимо от того, в каком порядке я его поместил, клиент не добавляет новый ключ в файл известных хостов.

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

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

Есть ли способ заставить работать обновления ключа хоста SSH? То есть клиенты должны изучить новый более безопасный ключ (а также, надеюсь, не изучить устаревший ключ). И без предоставления ключа хоста изменилось предупреждение «человек посередине».

derobert
источник
Пожалуйста, посмотрите на это . Хотя это не дает решения для того, что вы хотите прямо сейчас, оно может помочь вам достичь ваших конечных целей в будущем.
RDA

Ответы:

14

Ротация Host Key поддерживается начиная с OpenSSH 6.8 (и клиент, и сервер добавляют поддержку в этой версии).

Так что процесс должен работать так:

  • Создайте и добавьте новые ключи с опцией HostKey newkey(после существующих) к/etc/ssh/sshd_config
  • Начать сначала sshd
  • Клиенты должны настраиваться UpdateHostKeys yesв своей конфигурации (глобально или для каждого хоста)
  • Подключающиеся клиенты заберут все новые ключи
  • Через некоторое время (месяцы?) Вы можете удалить старые ключи из sshd_configи перезапуститьsshd
  • Клиенты (подключенные в течение переходного периода) уже будут иметь новые ключи (старые не будут удалены, что является единственной проблемой здесь), и они не будут отображать предупреждение об атаке MitM.

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

Jakuje
источник
-4

sshd всегда использует первую строку, поэтому удалите ее и перезапустите sshd.

Ипор Сирсер
источник
1
... что приводит к тому, что страшный ключ хоста изменил предупреждение. Попытка избежать этого, заставляя клиентов изучать новый ключ (и постепенно исключать старый).
Дероберт
Вы правы. Вы не можете использовать 2 разных ключа одновременно. ССЛ не ТЛС. Там нет функции добавления ключа просто меняется.
Ипор Сирсер
4
Это ни SSL, ни TLS. Протокол поддерживает несколько ключей хоста - например, раньше все имели ключи RSA и DSA. Теперь это, как правило, ключи ED25519, ECDSA и RSA.
Дероберт