Kami telah berkali-kali memuji keunggulan SSH, baik untuk keamanan dan akses jarak jauh. Mari kita lihat server itu sendiri, beberapa aspek "pemeliharaan" yang penting, dan beberapa kebiasaan yang dapat menambah turbulensi ke perjalanan yang mulus.
Meskipun kami menulis panduan ini dengan mempertimbangkan Linux, ini juga dapat diterapkan pada OpenSSH di Mac OS X dan Windows 7 melalui Cygwin .
Mengapa Ini Aman
Kami telah berkali-kali menyebutkan bagaimana SSH adalah cara yang bagus untuk menghubungkan dan menyalurkan data dengan aman dari satu titik ke titik lainnya. Mari kita lihat sekilas bagaimana segala sesuatunya bekerja sehingga Anda mendapatkan gambaran yang lebih baik tentang mengapa hal-hal terkadang bisa menjadi aneh.
Ketika kami memutuskan untuk memulai koneksi ke komputer lain, kami sering menggunakan protokol yang mudah digunakan. Telnet dan FTP keduanya muncul dalam pikiran. Kami mengirimkan informasi ke server jarak jauh dan kemudian kami mendapatkan konfirmasi kembali tentang koneksi kami. Untuk membangun beberapa jenis keamanan, protokol ini sering menggunakan kombinasi nama pengguna dan kata sandi. Itu artinya mereka benar-benar aman, bukan? Salah!
Jika kami menganggap proses menghubungkan kami sebagai email, maka menggunakan FTP dan Telnet dan sejenisnya tidak seperti menggunakan amplop surat standar. Ini lebih seperti menggunakan kartu pos. Jika seseorang melangkah di tengah, mereka dapat melihat semua informasi, termasuk alamat kedua koresponden dan nama pengguna dan kata sandi yang dikirim. Mereka kemudian dapat mengubah pesan, menjaga informasi tetap sama, dan meniru satu koresponden atau yang lain. Ini dikenal sebagai serangan "man-in-the-middle", dan tidak hanya membahayakan akun Anda, tetapi juga mempertanyakan setiap pesan yang dikirim dan file yang diterima. Anda tidak dapat memastikan apakah Anda sedang berbicara dengan pengirim atau tidak, dan meskipun Anda sedang berbicara, Anda tidak dapat memastikan tidak ada orang yang melihat semuanya dari antara keduanya.
Sekarang, mari kita lihat enkripsi SSL, jenis yang membuat HTTP lebih aman. Di sini, kami memiliki kantor pos yang menangani korespondensi, yang memeriksa untuk mengetahui apakah penerima Anda adalah orang yang diklaimnya, dan memiliki undang-undang yang melindungi surat Anda agar tidak dilihat. Ini lebih aman secara keseluruhan, dan otoritas pusat - Verisign adalah salah satunya, untuk contoh HTTPS kami - memastikan bahwa orang yang Anda kirimi email untuk check out. Mereka melakukan ini dengan tidak mengizinkan kartu pos (kredensial tidak terenkripsi); sebaliknya mereka mengamanatkan amplop asli.
Terakhir, mari kita lihat SSH. Di sini, penyiapannya sedikit berbeda. Kami tidak memiliki pengautentikasi pusat di sini, tetapi semuanya masih aman. Itu karena Anda mengirim surat kepada seseorang yang alamatnya sudah Anda kenal - misalnya, mengobrol dengan mereka di telepon - dan Anda menggunakan matematika yang sangat canggih untuk menandatangani amplop Anda. Anda menyerahkannya kepada saudara laki-laki, pacar, ayah, atau anak perempuan Anda untuk dibawa ke alamat, dan hanya jika penerima yang cocok matematika Anda berasumsi bahwa alamat itu seharusnya. Kemudian, Anda mendapatkan surat kembali, juga terlindung dari pengintaian dengan matematika yang luar biasa ini. Terakhir, Anda mengirim kredensial Anda dalam amplop rahasia yang diperkuat secara algoritmik ke tujuan. Jika hitungan tidak cocok, kita dapat berasumsi bahwa penerima awal sudah pindah dan kita perlu mengonfirmasi alamat mereka lagi.
Dengan penjelasan selama itu, kami pikir kami akan memotongnya di sana. Jika Anda memiliki lebih banyak wawasan, silakan mengobrol di komentar, tentu saja. Untuk saat ini, mari kita lihat fitur SSH yang paling relevan, autentikasi host.
Kunci Host
Otentikasi tuan rumah pada dasarnya adalah bagian di mana seseorang yang Anda percayai mengambil amplop (disegel dengan matematika ajaib) dan mengkonfirmasi alamat penerima Anda. Itu adalah deskripsi yang cukup mendetail tentang alamat tersebut, dan ini didasarkan pada beberapa perhitungan matematika yang rumit yang akan kita lewatkan begitu saja. Ada beberapa hal penting yang dapat diambil dari ini, meskipun:
- Karena tidak ada otoritas pusat, keamanan sebenarnya terletak pada kunci host, kunci publik, dan kunci privat. (Dua kunci terakhir ini dikonfigurasi ketika Anda diberi akses ke sistem.)
- Biasanya, saat Anda terhubung ke komputer lain melalui SSH, kunci host disimpan. Ini membuat tindakan di masa depan lebih cepat (atau kurang bertele-tele).
- Jika kunci host berubah, kemungkinan besar Anda akan diberi tahu dan Anda harus waspada!
Karena kunci host digunakan sebelum otentikasi untuk menetapkan identitas server SSH, Anda harus memastikan untuk memeriksa kunci sebelum Anda terhubung. Anda akan melihat dialog konfirmasi seperti di bawah ini.
Namun, Anda tidak perlu khawatir! Seringkali ketika keamanan menjadi perhatian, akan ada tempat khusus di mana kunci host (sidik jari ECDSA di atas) dapat dikonfirmasi. Dalam usaha yang sepenuhnya online, sering kali situs tersebut berada di situs khusus login yang aman. Anda mungkin harus (atau memilih!) Menelepon departemen TI Anda untuk mengonfirmasi kunci ini melalui telepon. Saya bahkan pernah mendengar tentang beberapa tempat di mana kuncinya ada di lencana kerja Anda atau di daftar khusus "Nomor Darurat". Dan, jika Anda memiliki akses fisik ke mesin target, Anda juga dapat memeriksanya sendiri!
Memeriksa Kunci Host Sistem Anda
Ada 4 jenis algoritma enkripsi yang digunakan untuk membuat kunci, tetapi default untuk OpenSSH pada awal tahun ini adalah ECDSA ( dengan beberapa alasan bagus ). Kami akan fokus pada hal itu hari ini. Berikut perintah yang dapat Anda jalankan di server SSH yang aksesnya Anda miliki:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
Output Anda harus menghasilkan sesuatu seperti ini:
256 pesan: 62: еа: щц: еч: яй: 2е: аш: яч: 20: 11: дб: яц: 78: цз: чц /етц/сш/сш_хост_ецдса_кей.пуб
Angka pertama adalah panjang bit kunci, lalu kunci itu sendiri, dan terakhir Anda memiliki file tempat penyimpanannya. Bandingkan bagian tengah itu dengan yang Anda lihat saat diminta untuk masuk dari jarak jauh. Ini harus cocok, dan Anda sudah siap. Jika tidak, maka hal lain bisa terjadi.
Anda dapat melihat semua host yang telah Anda sambungkan melalui SSH dengan melihat file known_hosts Anda. Biasanya terletak di:
~ / .ssh / known_hosts
Anda dapat membukanya di editor teks apa pun. Jika Anda perhatikan, coba perhatikan bagaimana kunci disimpan. Mereka disimpan dengan nama komputer host (atau alamat web) dan alamat IP-nya.
Mengubah Kunci dan Masalah Host
Ada beberapa alasan mengapa kunci host berubah atau tidak cocok dengan yang dicatat di file known_hosts Anda.
- Sistem telah dipasang ulang / dikonfigurasi ulang.
- Kunci host diubah secara manual karena protokol keamanan.
- Server OpenSSH diperbarui dan menggunakan standar yang berbeda karena masalah keamanan.
- Sewa IP atau DNS berubah. Ini sering kali berarti Anda mencoba mengakses komputer lain.
- Sistem dikompromikan sedemikian rupa sehingga kunci host berubah.
Kemungkinan besar, masalahnya adalah salah satu dari tiga yang pertama, dan Anda dapat mengabaikan perubahannya. Jika sewa IP / DNS berubah, mungkin ada masalah dengan server dan Anda mungkin dialihkan ke mesin lain. Jika Anda tidak yakin apa alasan perubahannya, Anda mungkin harus menganggap itu yang terakhir dalam daftar.
Bagaimana OpenSSH Menangani Host Tidak Dikenal
OpenSSH memiliki pengaturan untuk bagaimana menangani host yang tidak dikenal, tercermin dalam variabel "StrictHostKeyChecking" (tanpa tanda kutip).
Bergantung pada konfigurasi Anda, koneksi SSH dengan host yang tidak dikenal (yang kuncinya belum ada di file known_hosts Anda) dapat berjalan dalam tiga cara.
- StrictHostKeyChecking disetel ke no; OpenSSH akan secara otomatis terhubung ke server SSH apa pun status kunci hostnya. Ini tidak aman dan tidak disarankan, kecuali jika Anda menambahkan banyak host setelah OS Anda diinstal ulang, setelah itu Anda akan mengubahnya kembali.
- StrictHostKeyChecking disetel untuk bertanya; OpenSSH akan menampilkan kunci host baru dan meminta konfirmasi sebelum menambahkannya. Ini akan mencegah koneksi untuk mengubah kunci host. Ini adalah defaultnya.
- StrictHostKeyChecking disetel ke yes; Kebalikan dari "tidak", ini akan mencegah Anda terhubung ke host mana pun yang belum ada di file known_hosts Anda.
Anda dapat mengubah variabel ini dengan mudah pada baris perintah dengan menggunakan paradigma berikut:
ssh -o 'StrictHostKeyChecking [option]' pengguna @ host
Ganti [option] dengan "tidak", "tanya", atau "ya". Ketahuilah bahwa ada satu tanda kutip lurus yang mengelilingi variabel ini dan pengaturannya. Ganti juga pengguna @ host dengan nama pengguna dan nama host server yang Anda sambungkan. Sebagai contoh:
ssh -o 'StrictHostKeyChecking, tanya' [email protected]
Host yang Diblokir Karena Kunci Berubah
Jika Anda memiliki server yang Anda coba akses yang kuncinya sudah diubah, konfigurasi OpenSSH default akan mencegah Anda untuk mengaksesnya. Anda dapat mengubah nilai StrictHostKeyChecking untuk host tersebut, tetapi itu tidak sepenuhnya, sepenuhnya, aman secara paranoid, bukan? Sebagai gantinya, kami cukup menghapus nilai yang melanggar dari file known_hosts kami.
Itu jelas merupakan hal yang buruk untuk ditampilkan di layar Anda. Untungnya, alasan kami untuk ini adalah OS yang diinstal ulang. Jadi, mari perbesar garis yang kita butuhkan.
Ini dia. Lihat bagaimana itu mengutip file yang perlu kita edit? Itu bahkan memberi kita nomor baris! Jadi, mari kita buka file itu di Nano:
Ini kunci pelanggaran kami, di baris 1. Yang perlu kita lakukan adalah menekan Ctrl + K untuk memotong keseluruhan baris.
Itu lebih baik! Jadi, sekarang kita tekan Ctrl + O untuk menulis (menyimpan) file, lalu Ctrl + X untuk keluar.
Sekarang kita mendapatkan prompt yang bagus, yang cukup kita tanggapi dengan “ya”.
Membuat Kunci Host Baru
Sebagai catatan, sebenarnya tidak terlalu banyak alasan bagi Anda untuk mengubah kunci host Anda sama sekali, tetapi jika Anda merasa perlu, Anda dapat melakukannya dengan mudah.
Pertama, ubah ke direktori sistem yang sesuai:
cd / etc / ssh /
Ini biasanya di mana kunci host global berada, meskipun beberapa distro menempatkannya di tempat lain. Jika ragu, periksa dokumentasi Anda!
Selanjutnya, kami akan menghapus semua kunci lama.
sudo rm / etc / ssh / ssh_host_ *
Atau, Anda mungkin ingin memindahkannya ke direktori cadangan yang aman. Hanya pemikiran saja!
Kemudian, kita dapat memberi tahu server OpenSSH untuk mengkonfigurasi ulang sendiri:
sudo dpkg-reconfigure openssh-server
Anda akan melihat perintah saat komputer Anda membuat kunci barunya. Ta-da!
Sekarang setelah Anda tahu bagaimana SSH bekerja sedikit lebih baik, Anda seharusnya bisa keluar dari titik sulit. Peringatan / kesalahan "Identifikasi Host Jarak Jauh Telah Berubah" adalah sesuatu yang membuat banyak pengguna bingung, bahkan mereka yang terbiasa dengan baris perintah.
Untuk poin bonus, Anda dapat memeriksa Cara Menyalin File dari Jarak Jauh Melalui SSH Tanpa Memasukkan Kata Sandi Anda . Di sana, Anda akan mempelajari lebih banyak tentang jenis lain dari algoritme enkripsi dan cara menggunakan file kunci untuk keamanan tambahan.