Penggunaan SSH Two-Factor Authentication (2FA) dapat anda gunakan sebagai solusi meningkatan keamanan atas akses SSH anda. Hal tersebut dikarenakan dengan 2FA anda perlu melakukan verifikasi 2 langkah yakni menggunakan password/public key server dan juga diperlukannya memasukkan kode yang diinformasikan melalui authenticator. Kode yang dikirimkan bersifat time based one time password dengan menggunakan algoritma TOTP dimana standar IETF sehingga kode akan berbeda setiap waktunya.
Pada kali ini penulis akan menjelaskan cara menerapkan penggunaan SSH Two-Factor Authentication (2FA) pada server CentOS
Persiapan
- Server CentOS 7
- Handphone (Diinstall Aplikasi Autentikator)
Penyelesaian
Instalalasi dan Konfigurasi Google Authenticator
Silakan dapat login ke server CentOS anda dan jalankan command berikut untuk melakukan penginstallan qreencode yang berfungsi sebagat QR Code generator
$ sudo yum install -y epel-release
$ sudo yum install -y google-authenticator qrencode qrencode-libs
Selanjutnya jalankan command google-authenticator untuk membuat secret key baru pada directory ~/.ssh/
$ google-authenticator -s ~/.ssh/google_authenticator
Ketika muncul pertanyaan “Do you want authentication tokens to be time-based?” bisa dijawab “y”
Setelah itu QR code akan tergenerate, anda dapat melakukan scan menggunakkan aplikasi TOTP seperti Google authenticator yang dapat diinstall melalui Google Play Store atau Apple App Store.
Panduan lengkap seputar penggunaan google authenticator dapat dilihat pada laman berikut https://support.google.com/accounts/answer/1066447
Lakukan juga penyimpanan key berikut apabila terjadi kasus data pada handphone terhapus dan perlu dilakukannya setup kembali.
Selanjutnya anda dapat menjawab pertanyaan lanjutan sisanya dengan menjawab “y” seperti berikut:
Konfigurasi SSH Daemon
Pada kali ini kita akan melakukan konfigurasi dari sisi SSH Daemon. Konfigurasi dapat dilakukan dan disesuaikan apabila server anda apakah menggunakan Password atau Public Key sebagai autentikasinya. Silakan dapat menggunakan editor pada file sshd_config :
$ sudo vi /etc/ssh/sshd_config
Lakukan enable pada ChallengeResponseAuthentication dan UsePam seperti berikut:
[Opsional] Apabila anda ingin melakukan allow pada root untuk menggunakan 2FA silakan dapat melakukan enable pada PermitRootLogin seperti berikut:
# Public Key Authentication with 2FA
Apabila anda menggunakan SSH Key untuk login ke server silakan dapat melakukan penambahan line berikut pada file sshd_config seperti berikut :
$ sudo vi /etc/ssh/sshd_config
Selanjutnya lakukan konfigurasi PAM rule dan tambahkan line berikut :
$ sudo vi /etc/pam.d/sshd
#two-factor authentication via Google Authenticator
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticator
Dan juga lakukan comment pada line berikut (Dapat ditambah #) :
auth substack password-auth
Sehingga akan tampak seperti ini
Simpan lalu restart service SSH daemon untuk melakukan perubahan:
$ sudo systemctl restart sshd
# Password Authentication with 2FA
Apabila anda menggunakan password untuk login ke server silakan dapat melakukan lakukan konfigurasi PAM rule dan tambahkan line berikut
$ sudo vi /etc/pam.d/sshd
#two-factor authentication via Google Authenticator
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticator
Sehingga akan tampak seperti ini
Simpan lalu restart service SSH daemon untuk melakukan perubahan:
$ sudo systemctl restart sshd
Berikut tampilan apabila anda mengakses SSH kembali (contoh menggunakan Public Key Authentication)
Cara Disable SSH Two Factor Authentication
Pergi ke file pada saat melakukan konfigurasi PAM rule :
$ sudo vi /etc/pam.d/sshd
Lakukan comment pada line berikut (Dapat ditambah #) :
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticator
Selanjutnya apabila sebelumnya anda menambahkan line berikut pada file sshd_config
AuthenticationMethods publickey,keyboard-interactive
Silakan dapat dihapus kalimat keyboard-interactive menjadi seperti berikut:
AuthenticationMethods publickey
Simpan lalu restart service SSH daemon untuk melakukan perubahan:
$ sudo systemctl restart sshd
Mengubah Secret Key Authenticator
Apabila anda ingin mengubah secret key anda dapat menjalankan command google-authenticator kembali untuk membuat secret key baru pada directory file ~/.ssh/google_authenticator.
$ google-authenticator -s ~/.ssh/google_authenticator
Selesai anda telah menerapkan penggunaan SSH Two-Factor Authentication (2FA) pada server CentOS.
I Hear and I Forget
Confucius
I See and I Remember
I Do and I Understand