Bagaimana cara menggulirkan kunci host ssh?

17

Saya mencoba untuk memutakhirkan server ssh saya dari kunci RSA 2048-bit ke kunci yang lebih besar, karena rekomendasi segera menghapus tombol 2048-bit segera.

Saya membuat kunci baru, lalu menambahkannya ke sshd config, seperti ini:

HostKey / etc / ssh / ssh_host_rsa_key             (kunci 2-bit lama dulu) 
HostKey / etc / ssh / ssh_host_rsa4096_key         (kunci baru yang lebih besar ke-2 )

Setelah restart sshd, saya ssh ke tuan rumah, saya tidak mendapatkan peringatan identifikasi berubah, namun baru juga tidak di-cache di ~/.ssh/known_hosts. Jika saya meletakkan garis dalam urutan yang berlawanan, saya mendapatkan identifikasi berubah peringatan. Demikian pula, ketika saya menambahkan kunci ed25519, tidak peduli bagaimana saya memasukkannya, klien tidak menambahkan kunci baru ke file host yang dikenal.

Hal ini tampaknya membuat rollover kunci host SSH tidak mungkin — sulit untuk dipercaya bahwa memang itulah masalahnya, mengingat keamanan secara rutin memerlukan peningkatan kunci.

Saya tahu Anda hanya bisa menukar kunci, maka setiap klien harus menjalankan ssh-keygen -Runtuk menghapus kunci lama, lalu memverifikasi secara manual dan menerima kunci baru — tapi itu sangat menyebalkan, terutama jika Anda memiliki banyak klien yang terhubung atau tidak mengelola semua klien. Belum lagi, jika Anda tidak mengelola klien, ada peluang yang sangat bagus mereka tidak akan benar-benar memeriksa kunci host dan malah menekan Y — jadi upaya untuk meningkatkan keamanan kemungkinan akan benar-benar membuka Anda untuk man-in- serangan tengah-gantinya.

Apakah ada cara untuk membuat pemutakhiran kunci host SSH berfungsi? Artinya, klien harus mempelajari kunci baru yang lebih aman (dan juga semoga tidak mempelajari kunci usang). Dan tanpa memberikan kunci host berubah peringatan man-in-the-middle.

derobert
sumber
Silakan lihat ini . Meskipun tidak memberikan solusi untuk apa yang Anda inginkan saat ini, itu mungkin membantu Anda untuk mencapai tujuan akhir Anda di masa depan.
rda

Jawaban:

14

Rotasi Host Key didukung sejak OpenSSH 6.8 (baik klien dan server menambahkan dukungan dalam versi ini).

Jadi prosesnya harus bekerja seperti ini:

  • Buat dan tambahkan kunci baru dengan opsi HostKey newkey(setelah yang ada) ke menu/etc/ssh/sshd_config
  • Mengulang kembali sshd
  • Klien harus mengatur UpdateHostKeys yesdalam konfigurasi mereka (baik secara global, atau per-host)
  • Klien yang terhubung akan mengambil semua kunci baru
  • Setelah beberapa waktu (bulan?) Anda dapat menghapus kunci lama dari sshd_configdan restartsshd
  • Klien (yang terhubung selama periode transisi) sudah memiliki kunci baru (yang lama tidak akan dihapus, yang merupakan satu-satunya masalah di sini) dan mereka tidak akan menampilkan peringatan serangan MitM.

Klien yang cukup baru akan dapat mengambil kunci baru. Fitur ini tidak diaktifkan secara default, mungkin karena ini cukup baru dan segera menunjukkan beberapa pertimbangan keamanan. Tetapi hari-hari ini, seharusnya tidak masalah untuk menggunakannya.

Jakuje
sumber
-4

sshd selalu menggunakan baris pertama, jadi hapus saja, kemudian restart sshd.

Ipor Sircer
sumber
1
... yang menghasilkan kunci host yang menakutkan telah mengubah peringatan. Mencoba menghindarinya, dengan meminta klien mempelajari kunci baru (dan menghapus yang lama).
derobert
Kamu benar. Anda tidak dapat menggunakan 2 tombol berbeda sekaligus. ssl bukan tls. Tidak ada fitur penambahan kunci yang hanya berubah.
Ipor Sircer
4
Ini bukan SSL atau TLS. Protokol mendukung beberapa kunci host — misalnya, dulu semua orang memiliki kunci RSA dan DSA. Sekarang biasanya tombol ED25519, ECDSA, dan RSA.
derobert