Multi-factor authentication (MFA) atau two-factor authentication (2FA) mewajibkan adanya faktor tambahan dalam authentikasi, selain password. Sebagai contoh, selain kombinasi username dan password yang tepat, user juga harus mengisikan one-time password yang misalnya dihasilkan setiap 30 detik. Dengan demikian, hanya dengan mengetahui username dan password saja tidak cukup.
Di dalam tutorial ini, kita akan mengkonfigurasi agar authentikasi pada SSH (untuk akses komputer lewat protokol secure shell) dapat memanfaatkan MFA berupa time-based one-time password.
Tutorial ini mengasumsikan sistem operasi yang digunakan adalah Alma Linux 8, dimana semua yang dibutuhkan tersedia sebagai package yang siap diinstalasi.
Catatan:
Berikanlah perintah berikut untuk melakukan instalasi google-authenticator (dari repo EPEL):
dnf install google-authenticator
Kemudian, jalankanlah program google-authenticator dan jawablah pertanyaan interaktif yang diberikan. Pada tutorial ini, apa yang dijawab akan diformat tebal.
google-authenticator Do you want authentication tokens to be time-based (y/n) y
Pada tahap ini, kita akan diberikan OTP secret, yang dapat kita isikan pada aplikasi authenticator pada smartphone (instalasilah terlebih dahulu apabila diperlukan). Sebagai contoh, apabila menggunakan app Google Authenticator, maka bisa menambahkan dengan Enter a setup key, dengan tipe key adalah time-based.
Kode yang dihasilkan pada authenticator di smartphone perlu diisikan kembali untuk dikonfirmasi.
Consider typing the OTP secret into your app manually. Your new secret key is: [OTP secret yang dihasilkan, untuk diisikan pada authenticator di smartphone] Enter code from app (-1 to skip): [isikan kode yang dihasilkan oleh authenticator di smartphone, setelah OTP secret sebelumnya ditambahkan] Code confirmed 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 ... ... This will permit for a time skew of up to 4 minutes between client and server. Do you want to do so? (y/n) n Do you want to enable rate-limiting? (y/n) y
Editlah file /etc/pam.d/sshd dan tambahkanlah baris berikut pada akhir file, untuk mewajibkan MFA dengan google authenticator pada SSH server.
auth required pam_google_authenticator.so
Editlah file /etc/ssh/sshd_config dan sesuaikanlah baris-baris berikut:
PasswordAuthentication yes ChallengeResponseAuthentication yes
Kemudian, restartlah service sshd dengan perintah berikut:
systemctl restart sshd
Konfigurasi pun selesai. Disarankan untuk mencoba memulai sesi SSH baru (dengan konfigurasi yang baru diterapkan), dan baru logout dari sesi aktif (apabila konfigurasi ini dilakukan lewat SSH) apabila MFA berfungsi dengan baik.
Terima kasih telah membaca :)