Cara Mengatur Otentikasi Dua Faktor Untuk SSH Di Linux


Secara default, SSH sudah menggunakan komunikasi data yang aman antar mesin jarak jauh, namun jika Anda ingin menambahkan beberapa lapisan keamanan tambahan ke koneksi SSH, Anda dapat menambahkan Google Authenticator (< modulautentikasi dua faktor) yang memungkinkan Anda memasukkan kode verifikasi kata sandi satu kali (TOTP) secara acak saat terhubung ke server SSH. Anda harus memasukkan kode verifikasi dari ponsel pintar atau PC saat terhubung.

Google Authenticator adalah modul sumber terbuka yang mencakup implementasi token verifikasi kode sandi satu kali (TOTP) yang dikembangkan oleh Google.

Ini mendukung beberapa platform seluler, serta PAM (Pluggable Authentication Module). Kode sandi sekali pakai ini dibuat menggunakan standar terbuka yang dibuat oleh OATH Inisiatif untuk Otentikasi Terbuka).

Pada artikel ini, saya akan menunjukkan cara menyiapkan dan mengonfigurasi SSH untuk autentikasi dua faktor pada distribusi Linux berbasis RedHat dan Debian seperti Fedora, CentOS Stream, Rocky Linux, dan AlmaLinux, Ubuntu, Debian, dan Mint.

Menginstal Google Authenticator di Linux

Buka mesin yang ingin Anda siapkan autentikasi dua faktornya dan instal pustaka PAM berikut beserta pustaka pengembangan yang diperlukan agar modul PAM dapat berfungsi dengan benar dengan < modul>pengautentikator Google yang kuat.

Pada sistem berbasis RedHat, instal paket ‘pam-devel‘ menggunakan perintah yum berikut.

yum install google-authenticator -y

Pada sistem berbasis Debian, instal paket ‘libpam0g-dev‘ menggunakan perintah apt berikut.

sudo apt install libpam-google-authenticator -y

Hasilkan Token Otentikasi Google

Setelah Anda menjalankan perintah 'google-authenticator', Anda akan ditanyai serangkaian pertanyaan.

google-authenticator

Cukup ketik “y” (ya) sebagai jawaban di sebagian besar situasi. Jika terjadi kesalahan, Anda dapat mengetikkan kembali perintah ‘google-authenticator‘ untuk mengatur ulang pengaturan.

  • Apakah Anda ingin token autentikasi berbasis waktu (y/n) y

Setelah pertanyaan ini, Anda akan mendapatkan 'kunci rahasia' dan 'kode darurat'. Tuliskan detail ini di suatu tempat, nanti kita memerlukan 'kunci rahasia' untuk menyiapkan aplikasi Google Authenticator.

google-authenticator

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
  https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1 Code confirmation skipped Your emergency scratch codes are: 83714291 53083200 80975623 57217008 77496339

Selanjutnya, ikuti panduan pengaturan dan biasanya ketikkan jawabannya sebagai “y” (ya) seperti yang ditunjukkan di bawah ini.

Do you want me to update your "/root/.google_authenticator" file (y/n) y Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) y If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y

Mengonfigurasi SSH untuk Menggunakan Google Authenticator di Linux

Buka file konfigurasi PAM '/etc/pam.d/sshd' dan tambahkan baris berikut ke bagian bawah file.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Selanjutnya, buka file konfigurasi SSH '/etc/ssh/sshd_config' dan gulir ke bawah untuk menemukan baris yang bertuliskan.

ChallengeResponseAuthentication no

Ubah menjadi “ya”. Jadi, menjadi seperti ini.

ChallengeResponseAuthentication yes

Terakhir, mulai ulang layanan SSH untuk melakukan perubahan baru.

systemctl restart sshd
Or
sudo systemctl restart sshd

Mengonfigurasi Aplikasi Google Authenticator

Luncurkan aplikasi Google Authenticator di ponsel cerdas Anda. Tekan + dan pilih “Masukkan kunci pengaturan“. Jika Anda tidak memiliki aplikasi ini, Anda dapat mengunduh dan memasang aplikasi Google Authenticator di perangkat Android/iPhone/Blackberry Anda.

Tambahkan 'Nama' akun Anda dan masukkan 'kunci rahasia' yang dibuat sebelumnya.

Ini akan menghasilkan kata sandi satu kali (kode verifikasi) yang akan terus berubah setiap 30 detik di ponsel Anda.

Sekarang coba masuk melalui SSH, Anda akan diminta memasukkan kode Google Authenticator (Kode verifikasi) dan Sandi setiap kali Anda mencoba masuk melalui SSH. Anda hanya memiliki waktu 30 detik untuk memasukkan kode verifikasi ini, jika Anda melewatkannya, kode verifikasi baru akan dibuat ulang.

login as: tecmint
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125
[root@tecmint ~]#

Jika Anda tidak memiliki ponsel cerdas, Anda juga dapat menggunakan add-on Firefox yang disebut Authenticator untuk melakukan autentikasi dua faktor.

Penting: Autentikasi dua faktor berfungsi dengan login SSH berbasis kata sandi. Jika Anda menggunakan sesi SSH kunci pribadi/publik, ini akan mengabaikan autentikasi dua faktor dan membuat Anda login secara langsung.