Otentikasi dua faktor untuk SSH

SSH “Secure shell” adalah protokol jaringan untuk membuat koneksi aman antar host, secara standar melalui port 22 (yang lebih baik 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, mengirimkan aliran audio atau video melalui saluran terenkripsi, dll. Di samping itu, melalui proxy SOCKS pada host jarak jauh Anda dapat terhubung ke host lain atas nama host jarak jauh ini.

Otentikasi dilakukan menggunakan kata sandi, tetapi pengembang dan administrator sistem biasanya menggunakan kunci SSH. Masalahnya adalah kunci pribadi bisa dicuri. Menambahkan frasa sandi secara teoritis melindungi terhadap pencurian kunci pribadi, namun dalam praktiknya, ketika meneruskan dan menyimpan kunci, mereka masih dapat digunakan tanpa konfirmasi. Otentikasi dua faktor memecahkan masalah ini.

Bagaimana menerapkan otentikasi dua faktor

Pengembang dari Honeycomb baru-baru ini menerbitkan instruksi rinci, bagaimana mengimplementasikan infrastruktur yang sesuai pada klien dan server.

Petunjuknya mengasumsikan bahwa Anda memiliki host dasar tertentu yang terbuka ke Internet (benteng). Anda ingin terhubung ke host ini dari laptop atau komputer melalui Internet, dan mengakses semua perangkat lain yang ada di belakangnya. 2FA memastikan bahwa penyerang tidak dapat melakukan hal yang sama meskipun mereka 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 kuncinya. Pengembang menulis bahwa ini bukan pilihan ideal, karena penyerang dapat membangun benteng palsu, mencegat OTP Anda dan menggunakannya. Tapi itu lebih baik daripada tidak sama sekali.

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

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

Aplikasi OTP apa pun diinstal di sisi klien: Google Authenticator, Authy, Duo, Lastpass, diinstal brew install oath-toolkit или apt install oathtool openssl, lalu string (kunci) base16 acak dihasilkan. Ini dikonversi ke format Base32 yang digunakan oleh pengautentikasi seluler dan diimpor langsung ke dalam aplikasi.

Hasilnya, Anda dapat terhubung ke Bastion dan melihat bahwa Bastion sekarang tidak hanya memerlukan 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 kedua adalah otentikasi perangkat keras

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

Di sini konfigurasi Chef sedikit lebih rumit, dan konfigurasi klien bergantung pada OS. Namun setelah menyelesaikan semua langkah, klien di MacOS dapat mengonfirmasi otentikasi di SSH menggunakan frasa sandi dan meletakkan jari di sensor (faktor kedua).

Pemilik iOS dan Android mengonfirmasi login dengan menekan satu tombol di ponsel cerdas Anda. Ini adalah teknologi khusus dari Krypt.co yang bahkan lebih aman dari OTP.

Di Linux/ChromeOS ada opsi untuk bekerja dengan token USB YubiKey. Tentu saja, penyerang dapat mencuri token Anda, tetapi dia masih tidak mengetahui frasa sandinya.

Sumber: www.habr.com

Tambah komentar