Saya bekerja pada perangkat tertanam yang menjalankan FreeBSD dan SSH.
Seperti yang Anda ketahui, sshd suka secara acak membuat satu set kunci server saat boot pertama kali. Masalahnya adalah bahwa kita akan mengirimkan produk dengan sistem file sd-card read-only (tidak dapat dinegosiasikan).
Dua opsi saya seperti yang saya lihat adalah:
- Kirim kunci server sshd yang sama di semua perangkat
- Pasang sistem file memori dan buat kunci server pada setiap boot (lambat ...)
Apakah ini masalah keamanan utama untuk mengirim kunci server yang sama pada semua perangkat? Barang-barang ini tidak akan langsung di internet. Terkadang akan ada beberapa perangkat yang dimiliki oleh orang yang sama dan pada jaringan yang sama.
Sebagian besar waktu perangkat tidak akan terhubung ke internet.
Masuk dengan SSH bukan bagian dari operasi normal. Sebagian besar untuk kenyamanan para programmer dan teknisi. Pelanggan tidak akan masuk ke perangkat dengan SSH.
Apa konsekuensi menggunakan kunci server yang sama pada beberapa perangkat perangkat keras?
PS bisakah seseorang membuat tag internet-of-things?
EDIT : Saya berbicara tentang menginstal kunci privat host yang sama di semua server (perangkat). Sejauh kunci publik / pribadi pengguna, saat ini tidak ada rencana untuk menggunakan login berbasis kunci - itu akan menjadi login kata sandi. Sekali lagi, kata sandi yang sama di semua server (perangkat).
Saya tahu ini mungkin ide yang buruk. Saya ingin tahu mengapa tepatnya itu adalah ide yang buruk sehingga saya bisa mengerti pengorbanannya.
Jawaban:
Daripada menyimpan data khusus host seperti kunci host ssh pada kartu SD atau media hanya baca lainnya, Anda dapat menyimpan ini dalam NVRAM, yang digunakan untuk sistem embedded. Anda harus melakukan beberapa skrip khusus untuk menyimpan dan mengambil kunci pada saat boot, tetapi skrip akan persis sama untuk setiap perangkat.
sumber
Dampak pengiriman pasangan kunci yang sama dengan semua perangkat Anda secara langsung terkait dengan keamanan klien yang terhubung dengannya, karena itu berarti bahwa tidak ada cara (dari klien SSH) untuk secara unik mengidentifikasi perangkat yang mungkin terhubung ke perangkat tersebut. Jika pasangan kunci Anda bocor, itu dapat digunakan untuk serangan MITM.
Di sisi lain, regenerasi tombol pada setiap boot, juga akan memicu peringatan pada klien.
Untuk referensi, dari
man ssh(1)
:sumber
Kedengarannya seperti pada opsi pertama, kunci SSH akan tersedia pada kartu SD. Jadi setiap pengguna dapat mengambil kartu dan membacanya. Jadi pada dasarnya kunci pribadi Anda telah menjadi (kebanyakan) publik.
Ini akan memungkinkan serangan man-in-the-middle, seperti berikut:
Namun, Anda seharusnya tidak menggunakan kata sandi root terlebih dahulu, gunakan kunci ssh untuk otentikasi. Maka dampak dari kunci server bersama cukup kecil jika Anda hanya masuk dari LAN.
SSH juga menyediakan kerahasiaan ke depan, sehingga penyerang harus dapat mengatur server palsu untuk mendapatkan manfaat dari kunci; mengendus lalu lintas secara pasif tidak akan mengizinkan mendekripsi itu.
sumber
Saya membaca ini dengan ngeri! Saya yang telah melakukan banyak mesin di cluster yang sama dengan kunci host ssh yang sama tidak akan pernah berani melakukan ini. Jangan dalam keadaan apa pun mengizinkan mesin dengan set administrator yang berbeda untuk membagikan kunci host ssh. Dengan begitu terletak kegilaan dan teriakan ngeri ketika Anda diposting karena kurangnya keamanan Anda.
Lihatlah Aku berkata kepadamu yang sebenarnya, dia yang berkompromi dengan satu perangkat mengkompromikan semuanya. Setelah mendapatkan satu, harapkan orang jahat melompat dari satu ke yang lain sesuka hati dan keamanan berguling kembali seolah itu kertas tipis.
sumber
Karena Anda menyebutkan bahwa akses SSH tidak digunakan oleh pengguna akhir / pelanggan, Anda mungkin ingin mematikan akses SSH secara default dan hanya mengaktifkannya sementara ketika perangkat dimasukkan ke mode "debug".
Anda kemudian dapat mengirim semua perangkat dengan kunci yang sama, dengan asumsi bahwa Anda telah melindungi mode "debug" sehingga tidak dapat dipicu dari jarak jauh oleh seseorang yang mencoba meretas perangkat.
Atau Anda memiliki kunci baru yang dihasilkan ketika perangkat masuk ke mode "debug" - jadi Anda tidak perlu membuang waktu boot untuk menghasilkan kunci setiap kali perangkat dinyalakan.
sumber
Berikut ini contoh skenario serangan berdasarkan kendala yang Anda miliki:
Jika perangkat Anda, katakanlah Raspberry Pi misalnya. Jika saya berjalan dan menarik kartu SD dari satu, saya dapat menempelkan kartu SD di komputer saya sendiri, menemukan kunci sshd dan menyalinnya ke mana pun saya inginkan. Mungkin saya ambil pi raspberry saya sendiri dan kartu ethernet USB. Sekarang saya dapat menempel di antara perangkat target dan ke mana pun mereka pergi dan memantau koneksi ssh. Ketika saya melihat bahwa perangkat target mencoba membuat koneksi ssh, saya melakukan ini:
Oh apa itu? Kata sandi Anda adalah "Saya suka kucing"? Wah, ini email menarik yang Anda kirim ke istri Anda. Saya yakin akan lebih menarik lagi jika dia membaca email ini yang Anda kirim ke tetangga tetangga.
Kemungkinannya tidak terbatas . Dan target tidak akan pernah tahu, karena kunci sshd identik dengan yang ditemukan di server sebenarnya. Tergantung pada keamanan fisik dari fasilitas yang menerima perangkat Anda, ini bisa sangat sepele. Jangan lakukan ini.
Alih-alih, lakukan apa yang sudah Anda usulkan tetapi perbaiki . Sebelum Anda menulis gambar, jalankan sesuatu seperti ini:
Dan sekarang setiap server memiliki kunci baru . Karena Anda benar- benar tidak ingin membagikan salinan kunci. Maksud saya jujur itu setidaknya sama buruknya dengan mengambil gambar kunci rumah Anda dan mengunggahnya ke Internet dengan alamat rumah Anda.
sumber