Otentikasi dua faktor untuk SSH

"Secure Shell" SSH adalah protokol jaringan untuk membuat koneksi aman antara host, standar pada port 22 (yang lebih baik untuk diubah). Klien SSH dan server SSH tersedia untuk sebagian besar sistem operasi. Hampir semua protokol jaringan lain berfungsi di dalam SSH, yaitu, Anda dapat bekerja dari jarak jauh di komputer lain, mentransmisikan aliran audio atau video melalui saluran terenkripsi, dll. Selain itu, melalui proxy SOCKS pada host jarak jauh, Anda dapat terhubung ke host lain atas nama host jarak jauh ini.

Otentikasi dilakukan dengan kata sandi, tetapi pengembang dan administrator sistem secara tradisional menggunakan kunci SSH. Masalahnya adalah kunci rahasia bisa dicuri. Menambahkan frasa sandi secara teoritis melindungi terhadap pencurian kunci rahasia, tetapi dalam praktiknya, saat meneruskan dan kunci caching, mereka masih dapat digunakan tanpa konfirmasi . Otentikasi dua faktor menyelesaikan masalah ini.

Cara menerapkan otentikasi dua faktor


Pengembang Honeycomb baru-baru ini menerbitkan instruksi terperinci tentang bagaimana mengimplementasikan infrastruktur yang sesuai pada klien dan server.

Instruksi ini mengasumsikan bahwa Anda memiliki host dasar tertentu yang terbuka di Internet (bastion). Anda ingin terhubung ke host ini dari laptop atau komputer melalui Internet, dan mendapatkan akses ke semua perangkat lain yang ada di belakangnya. 2FA memastikan bahwa penyerang tidak dapat melakukan hal yang sama bahkan jika ia mendapatkan akses ke laptop Anda, misalnya, dengan menginstal malware.

Opsi pertama adalah OTP


OTP - kata sandi digital satu kali, yang dalam hal ini akan digunakan untuk otentikasi SSH bersama dengan kunci. Pengembang menulis bahwa ini bukan pilihan yang ideal, karena penyerang dapat mengambil benteng palsu, mencegat OTP Anda dan menggunakannya. Tapi ini lebih baik daripada tidak sama sekali.

Dalam hal ini, baris berikut ditulis ke konfigurasi Chef di sisi server:

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

Semua aplikasi OTP diinstal pada sisi klien: Google Authenticator, Authy, Duo, Lastpass, brew install oath-toolkit atau apt install oathtool openssl , kemudian string base16 acak (kunci) dihasilkan. Itu dikonversi ke format Base32, yang digunakan oleh autentikator ponsel, dan diimpor langsung ke dalam aplikasi.

Sebagai hasilnya, Anda dapat terhubung ke bastion dan memastikan bahwa sekarang tidak hanya membutuhkan frasa sandi, tetapi juga kode OTP untuk otentikasi:

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

Opsi Dua - Otentikasi Perangkat Keras


Dalam hal ini, pengguna tidak perlu memasukkan kode OTP setiap kali, karena faktor kedua adalah perangkat perangkat keras atau biometrik.

Di sini, konfigurasi Chef sedikit lebih rumit, dan konfigurasi klien tergantung pada OS. Tetapi setelah menyelesaikan semua langkah, klien di MacOS dapat mengkonfirmasi otentikasi dalam SSH menggunakan frasa sandi dan menerapkan jari ke sensor (faktor kedua).

Pemilik iOS dan Android mengkonfirmasi entri dengan menekan satu tombol di smartphone . Ini adalah teknologi khusus dari Krypt.co, yang bahkan lebih aman daripada OTP.

Di Linux / ChromeOS, ada opsi untuk bekerja dengan token USB YubiKey. Tentu saja, seorang penyerang dapat mencuri token Anda, tetapi dia masih tidak tahu kata sandi.





Source: https://habr.com/ru/post/id448970/


All Articles