Pelajari Ins dan Out OpenSSH di PC Linux Anda

Daftar Isi:

Pelajari Ins dan Out OpenSSH di PC Linux Anda
Pelajari Ins dan Out OpenSSH di PC Linux Anda

Video: Pelajari Ins dan Out OpenSSH di PC Linux Anda

Video: Pelajari Ins dan Out OpenSSH di PC Linux Anda
Video: Hackintosh Dual Boot (Mountian Lion & Windows 7) System - 2013 Build - YouTube 2024, Mungkin
Anonim
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 menambahkan turbulensi ke perjalanan yang mulus.
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 menambahkan 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, bukan? Salah!
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 penghubung kami sebagai email, maka menggunakan FTP dan Telnet dan sejenisnya tidak suka 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 dapat yakin apakah Anda berbicara dengan pengirim atau tidak, dan bahkan jika Anda, Anda tidak dapat 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.

Image
Image

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 memberikannya kepada saudara laki-laki, pacar, ayah, atau anak perempuan Anda untuk membawanya ke alamat, dan hanya jika pertandingan matematika khayalan penerima Anda berasumsi bahwa alamat tersebut 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, kami dapat berasumsi bahwa penerima asli dipindahkan dan kami perlu mengonfirmasi 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, autentikasi 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 uraian alamat yang cukup detail, dan ini didasarkan pada beberapa matematika rumit yang akan langsung 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!
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 Inang 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.Berikut adalah 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 panjang kunci, lalu kunci itu sendiri, dan akhirnya Anda memiliki file yang disimpan. Bandingkan bagian tengah itu dengan apa yang Anda lihat ketika Anda diminta untuk masuk 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 menganggap itu alasan 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).
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 kunci-nya 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]' user@host

Ganti [opsi] dengan "tidak," "minta," atau "ya." Sadarilah bahwa ada tanda kutip tunggal yang mengelilingi variabel ini dan pengaturannya. Ganti juga pengguna @ host dengan nama pengguna dan nama host dari server yang Anda hubungi. Sebagai contoh:

ssh -o 'StrictHostKeyChecking ask' [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 tersebut, tetapi itu tidak sepenuhnya, sepenuhnya, aman secara paranoid, kan? Sebagai gantinya, kita dapat dengan mudah menghapus nilai yang menyinggung dari file known_hosts kita.

Itu jelas hal yang jelek di layar Anda. Untungnya, alasan kami untuk ini adalah OS yang diinstal ulang. Jadi, mari kita perbesar garis yang kita butuhkan.
Itu jelas hal yang jelek di layar Anda. Untungnya, alasan kami untuk ini adalah OS yang diinstal ulang. Jadi, mari kita perbesar 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:
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:
Image
Image
Inilah kunci menyinggung kami, di baris 1. Yang perlu kami lakukan adalah menekan Ctrl + K untuk memotong seluruh baris.
Inilah kunci menyinggung kami, di baris 1. Yang perlu kami 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.
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.”

Image
Image

Membuat Kunci Inang Baru

Sebagai catatan, benar-benar tidak ada terlalu banyak alasan bagi Anda untuk mengubah kunci host Anda sama sekali, tetapi jika Anda pernah merasa perlu, 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-reconfigure openssh-server

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

Image
Image

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.

Direkomendasikan: