Beranda » bagaimana » Pelajari seluk beluk OpenSSH di PC Linux Anda

    Pelajari seluk beluk OpenSSH di PC Linux Anda

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

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

    Mengapa Aman?

    Kami telah menyebutkan berkali-kali bagaimana SSH adalah cara yang bagus untuk menghubungkan dan menyalurkan data dengan aman dari satu titik ke titik lainnya. Mari kita lihat secara singkat bagaimana hal-hal bekerja sehingga Anda mendapatkan ide yang lebih baik tentang mengapa hal-hal terkadang 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 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 berarti mereka benar-benar aman, bukan? Salah!

    Jika kita menganggap proses menghubungkan kita sebagai surat, 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 dari kedua koresponden dan nama pengguna dan kata sandi yang dikirim. Mereka kemudian dapat mengubah pesan, menjaga informasi tetap sama, dan berkedok sebagai salah satu koresponden. Ini dikenal sebagai serangan "man-in-the-middle", dan tidak hanya mengganggu akun Anda, tetapi juga mempertanyakan setiap pesan yang dikirim dan diterima. Anda tidak dapat memastikan apakah Anda berbicara dengan pengirim atau tidak, dan bahkan jika Anda melakukannya, Anda tidak dapat memastikan tidak ada yang melihat semuanya di 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 yang ia klaim, dan memiliki undang-undang yang melindungi surat Anda agar tidak dilihat. Secara keseluruhan lebih aman, dan otoritas pusat - Verisign adalah satu, untuk contoh HTTPS kami - memastikan bahwa orang yang Anda kirimi surat akan check out. Mereka melakukan ini dengan tidak mengizinkan kartu pos (kredensial tidak terenkripsi); alih-alih mereka memberi mandat amplop yang asli.

    Akhirnya, mari kita lihat SSH. Di sini, pengaturannya sedikit berbeda. Kami tidak memiliki autentikator pusat di sini, tetapi semuanya masih aman. Itu karena Anda mengirim surat ke seseorang yang alamatnya sudah Anda kenal - katakanlah, dengan mengobrol dengan mereka di telepon - dan Anda menggunakan matematika yang sangat bagus untuk menandatangani amplop. Anda menyerahkannya kepada saudara laki-laki, pacar, ayah, atau anak perempuan Anda untuk membawanya ke alamat, dan hanya jika matematika mewah penerima cocok, Anda menganggap bahwa alamat itu memang seharusnya. Kemudian, Anda mendapatkan surat kembali, juga dilindungi dari pengintaian oleh matematika yang luar biasa ini. Akhirnya, Anda mengirim kredensial Anda ke dalam amplop lain yang dirangkum secara algoritmik secara rahasia 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 wawasan lebih lanjut, silakan mengobrol di komentar, tentu saja. Untuk saat ini, mari kita lihat fitur SSH yang paling relevan, otentikasi host.

    Tombol Tuan Rumah

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

    1. Karena tidak ada otoritas pusat, keamanan sebenarnya terletak pada kunci host, kunci publik dan kunci pribadi. (Dua kunci terakhir ini dikonfigurasikan ketika Anda diberikan akses ke sistem.)
    2. Biasanya, ketika Anda terhubung ke komputer lain melalui SSH, kunci host disimpan. Ini membuat tindakan di masa depan lebih cepat (atau kurang bertele-tele).
    3. Jika kunci host berubah, kemungkinan besar Anda 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 seharusnya tidak khawatir! Seringkali ketika keamanan menjadi perhatian, akan ada tempat khusus bahwa kunci host (sidik jari ECDSA di atas) dapat dikonfirmasi. Dalam sepenuhnya usaha online, seringkali itu akan berada di situs hanya masuk 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 pada lencana pekerjaan Anda atau pada 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 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 yang 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 akan menghasilkan 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

    Angka pertama adalah panjang bit kunci, lalu kunci itu sendiri, dan akhirnya Anda memiliki file tempat penyimpanannya. Bandingkan bagian tengah itu dengan apa yang Anda lihat ketika Anda diminta untuk login jarak jauh. Itu harus cocok, dan Anda siap. Jika tidak, maka sesuatu yang lain bisa terjadi.

    Anda dapat melihat semua host yang terhubung dengan Anda melalui SSH dengan melihat file diketahui_hosts Anda. Biasanya terletak di:

    ~ / .ssh / known_hosts

    Anda dapat membukanya di editor teks apa pun. Jika Anda melihat, 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 apa yang dicatat dalam file known_hosts Anda.

    • Sistem diinstal 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 berarti Anda mencoba mengakses komputer yang berbeda.
    • Sistem dikompromikan sedemikian rupa sehingga kunci host berubah.

    Kemungkinan besar, masalahnya adalah salah satu dari tiga yang pertama, dan Anda dapat mengabaikan perubahan itu. Jika sewa IP / 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 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 belum ada di file known_hosts Anda) dapat berlangsung tiga cara.

    • StrictHostKeyChecking diatur ke tidak; OpenSSH akan secara otomatis terhubung ke server SSH apa pun terlepas dari 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 kepada Anda kunci host baru dan meminta konfirmasi sebelum menambahkannya. Ini akan mencegah koneksi masuk ke kunci host yang diubah. Ini standarnya.
    • StrictHostKeyChecking diatur ke yes; Kebalikan dari "tidak," ini akan mencegah Anda menghubungkan ke host apa pun yang belum ada dalam file known_hosts Anda.

    Anda dapat mengubah variabel ini dengan mudah di baris perintah dengan menggunakan paradigma berikut:

    ssh -o 'StrictHostKeyChecking [option]' user @ host

    Ganti [opsi] dengan "tidak," "tanyakan," atau "ya." Sadarilah bahwa ada tanda kutip langsung tunggal di sekitar variabel ini dan pengaturannya. Juga ganti pengguna @ host dengan nama pengguna dan nama host dari server yang Anda hubungkan. Sebagai contoh:

    ssh -o 'StrictHostKeyPeriksa tanyakan' [email protected]

    Host yang Diblokir Karena Perubahan Kunci

    Jika Anda memiliki server yang Anda coba akses yang kuncinya sudah diubah, konfigurasi OpenSSH default akan mencegah Anda mengaksesnya. Anda bisa mengubah nilai StrictHostKeyChecking untuk host itu, tetapi itu tidak sepenuhnya, sepenuhnya, aman secara paranoid, bukan? Sebagai gantinya, kami cukup menghapus nilai yang menyinggung dari file known_hosts kami.

    Itu benar-benar hal yang buruk di layar Anda. Untungnya, alasan kami untuk ini adalah OS yang diinstal ulang. Jadi, mari kita perbesar jalur yang kita butuhkan.

    Itu dia. Lihat bagaimana mengutip file yang perlu kita edit? Itu bahkan memberi kita nomor baris! Jadi, mari kita buka file itu di Nano:

    Inilah kunci menyinggung kita, di baris 1. Yang perlu kita lakukan adalah menekan Ctrl + K untuk memotong seluruh 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 sebagai gantinya, di mana kita bisa merespons dengan "ya."

    Membuat Kunci Host Baru

    Sebagai catatan, sebenarnya tidak ada 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 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 bisa memberi tahu server OpenSSH untuk mengkonfigurasi ulang sendiri:

    sudo dpkg-mengkonfigurasi openssh-server

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


    Sekarang setelah Anda tahu bagaimana SSH bekerja sedikit lebih baik, Anda harus bisa keluar dari titik sulit. Peringatan / Kesalahan "Remote Host Identification Berubah" adalah sesuatu yang membuat banyak pengguna tidak nyaman, bahkan mereka yang akrab dengan baris perintah.

    .