Percayai server SSH berdasarkan kunci daripada jika kunci + IP cocok

8

Apakah mungkin untuk membuat klien ssh tidak peduli apa IP server ssh berada di belakang (dan jika server yang berbeda berada di belakang IP itu sebelumnya) tetapi sebaliknya mempercayai kunci server tertentu? (Dan mungkin julukan kunci-kunci itu?) Saya menggunakan DNS dinamis dan saya memiliki ekstensi privasi IPv6 diaktifkan di beberapa komputer dan saya selalu ditanya apakah menurutnya aman untuk terhubung. Kemungkinan lain adalah alamat yang diberikan oleh DHCP ditugaskan ke server ssh yang berbeda dan menyebabkan semua jenis 'kunci tidak cocok dengan kesalahan IP'.

Azendale
sumber
Seharusnya saya juga menyebutkan bahwa saya memiliki daftar kunci publik untuk masing-masing server ssh saya pada halaman web yang disajikan melalui SSL, jadi saya memiliki cara mudah untuk memeriksa apakah saya benar-benar mempercayai kumpulan kunci server tertentu.
Azendale

Jawaban:

7

Tambahkan nama panggilan untuk server Anda ~/.ssh/config, dan matikan CheckHostIPuntuk server ini.

Host nickname
HostName example.dyndns.org
CheckHostIP no

Sebelum Anda terhubung ke server untuk pertama kalinya, Anda dapat menyalin out-of-band kunci publik: ambil /etc/ssh/ssh_host_rsa_key.pubdari server, hapus root@hostnamebagian di akhir baris, tambahkan example.dyndns.orgdi awal, dan tambahkan baris ke ~/.ssh/known_hosts. Secara opsional jalankan ssh-keygen -Huntuk meng-hash nama host (ini hanya berguna jika Anda khawatir tentang privasi entri itu jika seseorang mencuri hard disk atau cadangan Anda, yang bagi 99,99% orang tidak berguna karena informasinya ada di beberapa lokasi terdekat lainnya) lokasi tetap).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Dengan Host nickname, apakah itu berarti saya bisa melakukannya ssh nickname? Jika demikian, itu cukup rapi.
Azendale
@ Azendale: Persis, itulah fitur umum untuk memberikan nama panggilan ke nama host dan sekumpulan opsi (nama pengguna, opsi boolean, terowongan, ...).
Gilles 'SO- stop being evil'
2

Di /etc/ssh/ssh_configtambahkan baris

CheckHostIP no

Namun, ini menghilangkan sedikit Secure di SSH, karena mesin apa pun dapat bersembunyi di balik nama IP atau DynDNS yang Anda sambungkan.

htorque
sumber
1
Ini tidak menghilangkan keamanan sama sekali. Inti dari menyimpan kunci host adalah untuk mengidentifikasi komputer lain. Nama dan alamat IP tidak relevan untuk keamanan ketika Anda memiliki kunci host. Menghapus pesan palsu sebenarnya merupakan keuntungan untuk keamanan (pesan palsu menghabiskan perhatian Anda, yang merupakan sumber daya yang langka).
Gilles 'SANGAT berhenti menjadi jahat'
1
@Gilles: Halaman manual tidak setuju. Ya, Anda tidak kehilangan keamanan untuk koneksi di mana tidak ada hubungan IP-ke-host yang terkenal, dalam kasus lain Anda memberikan perlindungan terhadap serangan spoofing DNS (seperti yang dinyatakan dalam manual).
htorque
Saya tidak tahu bagian apa di halaman manual yang Anda maksud. Jika itu deskripsi CheckHostIP, maka tidak, itu tidak mengatakan Anda melepaskan perlindungan apa pun. Dengan CheckHostIP no, spoofer masih harus mendapatkan kunci pribadi server, dan jika dia bisa melakukan itu, tidak mungkin dia juga tidak bisa menipu alamat IP-nya.
Gilles 'SANGAT berhenti menjadi jahat'
Bisakah Anda memberi saya contoh bagaimana spoofing DNS akan berbahaya jika saya tahu saya percaya kuncinya? Saya menggunakan otentikasi kunci publik untuk masuk, yang membuatnya jadi server jahat tidak bisa mendapatkan kata sandi, tetapi bagaimana jika saya menggunakan kata sandi?
Azendale
Menggunakan otentikasi kunci publik tidak benar-benar melindungi kata sandi Anda, server dapat MITM Anda dan mendapatkan kata sandi Anda ketika Anda sudoatau serupa.
remram