If-Koubou

Pelajari Ins dan Out OpenSSH di PC Linux Anda

Pelajari Ins dan Out OpenSSH di PC Linux Anda (Bagaimana caranya)

Kami telah memuji kelebihan SSH beberapa kali, baik untuk keamanan maupun akses jarak jauh. Mari kita lihat server itu sendiri, beberapa aspek "pemeliharaan" penting, dan beberapa quirks yang dapat menambah turbulensi ke perjalanan yang mulus.

Meskipun kami telah menulis panduan ini dengan Linux, ini juga dapat berlaku untuk OpenSSH di Mac OS X dan Windows 7 via Cygwin.

Mengapa Ini Aman

Kami telah menyebutkan berkali-kali bagaimana SSH adalah cara yang bagus untuk menghubungkan dan menghubungkan data secara aman dari satu titik ke titik lainnya. Mari kita lihat sekilas bagaimana cara kerjanya sehingga Anda mendapatkan ide yang lebih baik tentang mengapa hal-hal dapat menjadi aneh kadang-kadang.

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, kan? Salah!

Jika kita berpikir tentang proses penghubung kita sebagai email, maka menggunakan FTP dan Telnet dan sejenisnya tidak seperti menggunakan amplop surat biasa. Ini lebih seperti menggunakan kartu pos. Jika seseorang kebetulan melangkah di tengah, mereka dapat melihat semua informasi, termasuk alamat dari kedua koresponden dan nama pengguna dan kata sandi yang dikirim. Mereka kemudian dapat mengubah pesan, menyimpan informasi yang sama, dan meniru satu koresponden atau yang lain. Ini dikenal sebagai serangan "man-in-the-middle", dan bukan hanya kompromi akun Anda, tetapi juga dipertanyakan setiap pesan yang dikirim dan file diterima. Anda tidak bisa yakin jika Anda berbicara dengan pengirim atau tidak, dan bahkan jika Anda, Anda tidak bisa yakin tidak ada 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 melihat apakah penerima Anda adalah orang yang dia klaim, dan memiliki undang-undang yang melindungi surat Anda agar tidak dilihat. Ini lebih aman secara keseluruhan, dan otoritas pusat - Verisign adalah satu, untuk contoh HTTPS kami - memastikan bahwa orang yang Anda kirimi email untuk memeriksa. Mereka melakukan ini dengan tidak mengijinkan kartu pos (kredensial yang tidak terenkripsi); sebaliknya mereka mewajibkan amplop nyata.

Akhirnya, mari kita lihat SSH. Di sini, pengaturannya sedikit berbeda. Kami tidak memiliki autentikator sentral di sini, tetapi semuanya masih aman. Itu karena Anda mengirim surat kepada seseorang yang alamatnya sudah Anda kenal - katakan, dengan mengobrol dengan mereka di telepon - dan Anda menggunakan beberapa matematika yang sangat keren untuk menandatangani amplop Anda. Anda menyerahkannya kepada saudara laki-laki, pacar, ayah, atau anak perempuan Anda untuk membawanya ke alamat, dan hanya jika matematika khayalan penerima cocok Anda berasumsi bahwa alamat adalah apa yang seharusnya. Kemudian, Anda mendapatkan surat kembali, juga dilindungi dari mata-mata dengan matematika yang luar biasa ini. Akhirnya, Anda mengirim kredensial Anda dalam amplop rahasia-keanehan rahasia lain ke tujuan. Jika matematika tidak cocok, kita dapat berasumsi bahwa penerima asli pindah dan kita perlu mengkonfirmasi alamat mereka lagi.

Dengan penjelasan selama itu, kami pikir kami akan memotongnya di sana. Jika Anda memiliki lebih banyak wawasan, silakan ngobrol di komentar, tentu saja. Untuk saat ini, mari kita lihat fitur SSH yang paling relevan, otentikasi host.

Kunci Tuan Rumah

Otentikasi host pada dasarnya adalah bagian di mana seseorang yang Anda percayai mengambil amplop (disegel dengan matematika ajaib) dan mengkonfirmasi alamat penerima Anda. Ini adalah deskripsi alamat yang cukup detail, dan ini didasarkan pada beberapa matematika rumit yang akan kita lewati. Ada beberapa hal penting untuk diambil dari ini, meskipun:

  1. Karena tidak ada otoritas pusat, keamanan sebenarnya terletak pada kunci tuan rumah, kunci publik dan kunci privat. (Dua kunci terakhir ini dikonfigurasi saat Anda diberi akses ke sistem.)
  2. Biasanya, ketika Anda terhubung ke komputer lain melalui SSH, kunci host disimpan. Ini membuat tindakan di masa mendatang lebih cepat (atau kurang verbose).
  3. Jika kunci host berubah, Anda kemungkinan besar akan diberitahu 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.

Anda tidak perlu khawatir! Seringkali ketika keamanan menjadi perhatian, akan ada tempat khusus bahwa kunci host (sidik jari ECDSA di atas) dapat dikonfirmasi. Dalam bisnis online sepenuhnya, sering kali hanya di situs masuk log yang aman. Anda mungkin harus (atau memilih untuk!) 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 "Nomor Darurat" khusus. Dan, jika Anda memiliki akses fisik ke mesin target, Anda juga dapat memeriksa sendiri!

Memeriksa Kunci Host Sistem Anda

Ada 4 jenis jenis algoritma enkripsi yang digunakan untuk membuat kunci, tetapi standar untuk OpenSSH pada awal tahun ini adalah ECDSA (dengan beberapa alasan bagus). Kami akan fokus pada yang satu ini hari ini. Inilah perintah yang dapat Anda jalankan di server SSH yang Anda miliki aksesnya:

ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l

Output Anda harus mengembalikan sesuatu seperti ini:

256 ca: 62: ea: 7c: e4: 9e: 2e: a6: 94: 20: 11: db: 9c: 78: c3: 4c /etc/ssh/ssh_host_ecdsa_key.pub

Nomor pertama adalah bit-length dari kunci, kemudian adalah kunci itu sendiri, dan akhirnya Anda memiliki file itu disimpan masuk. Bandingkan bagian tengah itu dengan apa yang Anda lihat ketika Anda diminta untuk login dari jarak jauh.Ini harus cocok, dan Anda sudah siap. Jika tidak, maka sesuatu yang lain bisa terjadi.

Anda dapat melihat semua host yang telah Anda hubungkan melalui SSH dengan melihat file known_hosts Anda. Biasanya terletak di:

~ / .ssh / known_hosts

Anda dapat membuka itu di editor teks apa pun. Jika Anda melihat, cobalah untuk memperhatikan bagaimana kunci disimpan. Mereka disimpan dengan nama komputer host (atau alamat web) dan alamat IP-nya.

Mengubah Tombol dan Masalah Host

Ada beberapa alasan mengapa kunci host berubah atau mereka tidak cocok dengan apa yang dicatat dalam file known_hosts Anda.

  • Sistem ini diinstal ulang / dikonfigurasi ulang.
  • Kunci host secara manual diubah karena protokol keamanan.
  • Server OpenSSH diperbarui dan menggunakan standar yang berbeda karena masalah keamanan.
  • IP atau sewa DNS berubah. Ini sering berarti Anda mencoba mengakses komputer yang berbeda.
  • Sistem dikompromikan dengan cara tertentu sehingga kunci host berubah.

Kemungkinan besar, masalahnya adalah salah satu dari tiga yang pertama, dan Anda dapat mengabaikan perubahan. Jika IP / sewa DNS berubah, maka mungkin ada masalah dengan server dan Anda mungkin dialihkan ke mesin yang berbeda. Jika Anda tidak yakin apa alasan perubahan itu maka Anda mungkin harus berasumsi ini adalah yang terakhir dalam daftar.

Bagaimana OpenSSH Menangani Host Tidak Dikenal

OpenSSH memiliki pengaturan untuk bagaimana ia 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 tidak ada dalam file known_hosts Anda) dapat berjalan tiga cara.

  • StrictHostKeyChecking diatur ke no; OpenSSH akan secara otomatis terhubung ke server SSH apa pun status kunci host. Ini tidak aman dan tidak disarankan, kecuali jika Anda menambahkan banyak host setelah menginstal ulang OS Anda, setelah itu Anda akan mengubahnya kembali.
  • StrictHostKeyChecking diatur untuk bertanya; OpenSSH akan menunjukkan kunci tuan rumah baru dan meminta konfirmasi sebelum menambahkannya. Ini akan mencegah koneksi dari beralih ke kunci host. Ini adalah default.
  • StrictHostKeyChecking diatur ke ya; Kebalikan dari "tidak," ini akan mencegah Anda menghubungkan ke host yang belum ada dalam 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 [opsi] dengan "tidak," "minta," atau "ya." Sadarilah bahwa ada tanda kutip tunggal yang mengelilingi variabel ini dan pengaturannya. Juga ganti pengguna @ host dengan nama pengguna dan nama host dari server yang Anda hubungi. Sebagai contoh:

ssh -o 'StrictHostKeyChecking bertanya' [email protected]

Host Diblokir Karena Kunci Berubah

Jika Anda memiliki server yang Anda coba akses yang kuncinya sudah diubah, konfigurasi OpenSSH default akan mencegah Anda mengaksesnya. Anda dapat mengubah nilai StrictHostKeyChecking untuk host itu, tetapi itu tidak akan sepenuhnya, secara menyeluruh, aman secara paranoid, kan? Sebagai gantinya, kita dapat dengan mudah menghapus nilai yang menyinggung dari file known_hosts kita.

Itu benar-benar hal yang jelek di layar Anda. Untungnya, alasan kami untuk ini adalah OS yang diinstal ulang. Jadi, mari kita memperbesar garis yang kita butuhkan.

Di sana kami pergi. Lihat bagaimana ia mengutip file yang perlu kita edit? Bahkan memberi kami nomor baris! Jadi, mari kita buka file itu di Nano:

Inilah kunci yang menyinggung kita, di baris 1. Yang perlu kita lakukan adalah menekan Ctrl + K untuk memotong seluruh baris.

Itu lebih baik! Jadi, sekarang kita menekan Ctrl + O untuk menulis (menyimpan) file, lalu Ctrl + X untuk keluar.

Sekarang kita mendapatkan prompt yang bagus, yang dapat kita tanggapi dengan “ya.”

Membuat Kunci Inang Baru

Sebagai catatan, ada benar-benar tidak terlalu banyak alasan bagi Anda untuk mengubah kunci host Anda sama sekali, tetapi jika Anda pernah menemukan kebutuhan, Anda dapat melakukannya dengan mudah.

Pertama, ubah ke direktori sistem yang sesuai:

cd / etc / ssh /

Ini biasanya di mana kunci host global, meskipun beberapa distro telah ditempatkan di tempat lain. Jika ragu, periksa dokumentasi Anda!

Selanjutnya, kami akan menghapus semua kunci lama.

sudo rm / etc / ssh / ssh_host_ *

Sebagai alternatif, Anda mungkin ingin memindahkannya ke direktori cadangan yang aman. Hanya pemikiran saja!

Kemudian, kita dapat memberitahu server OpenSSH untuk mengkonfigurasi ulang dirinya sendiri:

sudo dpkg-konfigurasi ulang openssh-server

Anda akan melihat perintah saat komputer Anda membuat kunci baru. Ta-da!

Sekarang Anda tahu bagaimana SSH bekerja sedikit lebih baik, Anda harus bisa keluar dari tempat-tempat sulit. Peringatan "Remote Host Identification Has Changed" / kesalahan adalah sesuatu yang membuat banyak pengguna tidak aktif, bahkan mereka yang akrab dengan baris perintah.

Untuk poin bonus, Anda dapat memeriksa Cara Menyalin File Secara Lebih Jauh Melalui SSH Tanpa Memasuki Kata Sandi Anda. Di sana, Anda akan belajar sedikit lebih banyak tentang jenis-jenis algoritma enkripsi lainnya dan bagaimana menggunakan file-file kunci untuk keamanan tambahan.