Pengesahan dua faktor untuk SSH

SSH "Secure shell" ialah protokol rangkaian untuk mewujudkan sambungan selamat antara hos, secara standard melalui port 22 (yang lebih baik untuk ditukar). Pelanggan SSH dan pelayan SSH tersedia untuk kebanyakan sistem pengendalian. Hampir mana-mana protokol rangkaian lain berfungsi di dalam SSH, iaitu, anda boleh bekerja dari jauh pada komputer lain, menghantar aliran audio atau video melalui saluran yang disulitkan, dsb. selain itu, melalui proksi SOCKS pada hos jauh anda boleh menyambung ke hos lain bagi pihak hos jauh ini.

Pengesahan berlaku menggunakan kata laluan, tetapi pembangun dan pentadbir sistem secara tradisinya menggunakan kunci SSH. Masalahnya ialah kunci peribadi boleh dicuri. Menambah frasa laluan secara teorinya melindungi daripada kecurian kunci persendirian, tetapi dalam praktiknya, apabila memajukan dan menyimpan kunci, ia masih boleh digunakan tanpa pengesahan. Pengesahan dua faktor menyelesaikan masalah ini.

Bagaimana untuk melaksanakan pengesahan dua faktor

Pembangun dari Honeycomb baru-baru ini menerbitkan arahan terperinci, bagaimana untuk melaksanakan infrastruktur yang sesuai pada klien dan pelayan.

Arahan mengandaikan bahawa anda mempunyai hos asas tertentu yang terbuka kepada Internet (benteng). Anda ingin menyambung ke hos ini daripada komputer riba atau komputer melalui Internet dan mengakses semua peranti lain yang terletak di belakangnya. 2FA memastikan bahawa penyerang tidak boleh melakukan perkara yang sama walaupun mereka mendapat akses kepada komputer riba anda, contohnya dengan memasang perisian hasad.

Pilihan pertama ialah OTP

OTP - kata laluan digital sekali, yang dalam kes ini akan digunakan untuk pengesahan SSH bersama-sama dengan kunci. Pembangun menulis bahawa ini bukan pilihan yang ideal, kerana penyerang boleh menaikkan benteng palsu, memintas OTP anda dan menggunakannya. Tetapi ia lebih baik daripada tiada.

Dalam kes ini, pada bahagian pelayan, baris berikut ditulis ke dalam konfigurasi Chef:

  • metadata.rb
  • attributes/default.rb (daripada attributes.rb)
  • files/sshd
  • recipes/default.rb (salinan daripada recipe.rb)
  • templates/default/users.oath.erb

Sebarang aplikasi OTP dipasang pada bahagian klien: Pengesah Google, Authy, Duo, Lastpass, dipasang brew install oath-toolkit atau apt install oathtool openssl, maka rentetan (kunci) asas16 rawak dijana. Ia ditukar kepada format Base32 yang digunakan oleh pengesah mudah alih dan diimport terus ke dalam aplikasi.

Akibatnya, anda boleh menyambung ke Bastion dan melihat bahawa ia kini memerlukan bukan sahaja frasa laluan, tetapi juga kod OTP untuk pengesahan:

➜ ssh -A bastion
Enter passphrase for key '[snip]': 
One-time password (OATH) for '[user]': 
Welcome to Ubuntu 18.04.1 LTS...

Pilihan kedua ialah pengesahan perkakasan

Dalam kes ini, pengguna tidak perlu memasukkan kod OTP setiap kali, kerana faktor kedua menjadi peranti perkakasan atau biometrik.

Di sini konfigurasi Chef adalah sedikit lebih rumit, dan konfigurasi pelanggan bergantung pada OS. Tetapi selepas melengkapkan semua langkah, pelanggan pada MacOS boleh mengesahkan pengesahan dalam SSH menggunakan frasa laluan dan meletakkan jari pada sensor (faktor kedua).

Pemilik iOS dan Android mengesahkan log masuk dengan menekan satu butang pada telefon pintar anda. Ini adalah teknologi istimewa daripada Krypt.co, yang lebih selamat daripada OTP.

Pada Linux/ChromeOS terdapat pilihan untuk berfungsi dengan token USB YubiKey. Sudah tentu, penyerang boleh mencuri token anda, tetapi dia masih tidak tahu frasa laluan itu.

Sumber: www.habr.com

Tambah komen