Tidak ada yang berlebihan kalau berbicara menambahkan keamaan pada suatu sistem. Segala cara apapun itu harus kita tempuh untuk memastikan sistem yang kita kelola, keamanannya dapat selalu terjaga. Salah satu cara yang dapat kita tempuh untuk menambah lapisan keamanan pada sistem kita adalah menggunakan two-factor authentication atau yang biasa disebut dengan istilah 2FA.
Secara sederhana, 2FA dapat dikatakan sebagai kunci kedua dari gembok yang kita miliki. 2FA juga biasa disebut sebagai tambahan atau pelengkap dari password yang sudah ada sehingga memastikan untuk memasuki suatu sistem, diperlukan dua kunci, yaitu password dan kode dari 2FA yang kita persiapkan.
Dalam tutorial kali ini, kita akan memasang 2FA pada ssh server kita. SSH merupakan jalan masuk yang paling sering digunakan oleh penyusup untuk dapat masuk ke dalam sistem kita dan ketika berhasil masuk, maka penyusup bisa melakukan banyak hal dalam sistem kita, termasuk untuk melakukan eskalasi privilege mejadi root, memasang backdoor atau bahkan melakukan deface. Keberadaan 2FA pada login SSH diharapkan dapat mempersulit penyusup karena sekalipun dia memiliki password pada SSH kita, belum tentu dia bisa masuk karena masih membutuhkan kode tambahan dari 2FA yang kita persiapkan.
Langsung kita mulai saja tutorialnya. Pertama-tama kita harus melakukan editing pada file /etc/ssh/sshd_config
dengan command:
# nano /etc/ssh/sshd_config
Ubah parameter ChallengeResponseAuthentication no
menjadiChallengeResponseAuthentication yes
seperti tampilan pada gambar di bawah.

Keluar dari nano dengan ctrl+x
dan tekan y
untuk menyimpan perubahan konfigurasi yang kita lakukan. Untuk selanjutnya kita perlu melakukan restart pada SSH server kita dengan perintah sebagai berikut:
# systemctl restart ssh
Untuk perangkat dan aplikasi yang saya gunakan untuk menghasilkan kode 2FA dalam tutorial ini adalah smartphone Android Google Pixel 4 XL dengan aplikasinya Google Authenticator (tersedia di Google Play dan iOS). Segera download dari Google Play atau iOS.
Dari sisi server, kita juga perlu menginstall aplikasi google authenticator dengan cara sebagai berikut:
root@vpn:~# apt install libpam-google-authenticator
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
libpam-google-authenticator
0 upgraded, 1 newly installed, 0 to remove and 6 not upgraded.
Need to get 33.7 kB of archives.
After this operation, 123 kB of additional disk space will be used.
Get:1 http://mirrors.ubuntu.com/mirrors.txt Mirrorlist [515 B]
Get:2 http://mirror.deace.id/ubuntu focal/universe amd64 libpam-google-authenticator amd64 20170702-2 [33.7 kB]
Fetched 34.2 kB in 2s (22.5 kB/s)
Selecting previously unselected package libpam-google-authenticator.
(Reading database ... 109230 files and directories currently installed.)
Preparing to unpack .../libpam-google-authenticator_20170702-2_amd64.deb ...
Unpacking libpam-google-authenticator (20170702-2) ...
Setting up libpam-google-authenticator (20170702-2) ...
Setelah proses installasi selesai, saatnya kita meng-generate QR code yang untuk di-scan oleh aplikasi Google Authenticator yang sudah kita install di smartphone kita. Command-nya adalah:
root@vpn:~# 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:
Tekan y, lalu nanti akan ada QR code yang muncul pada layar terminal kita untuk kita scan menggunakan aplikasi Google Authenticator pada smartphone kita. Jangan lupa simpan emergency scratch code-nya. Lalu ikuti terus proses selanjutnya.
Proses selanjutnya adalah memastikan bahwa ketika login berikutnya ke ssh server, proses 2FA telah otomatis dapat muncul dengan cara melakukan editing sebagai berikut.
# nano /etc/pam.d/sshd
Tambahkan parameter auth required pam_google_authenticator.so
pada file tersebut. Tampilannya kurang lebih sebagai berikut.

Simpan proses editing-nya dan keluar dari nano. Prosesnya sudah hampir selesai. Sekarang kembali kita perlu lakukan restart atas Server SSH-nya dengan cara.
# systemctl restart ssh
Apabila telah selesai di-restart, mari kita coba apakah setting 2FA yang kita lakukan sudah berhasil dengan kembali login ke Server SSH kita dengan cara:
$ ssh -l [IP Address SSH Server]
Setelah login dan mengisi password, maka akan muncul kalimat “verification code” yang harus kita isi menggunakan kode yang di-generate oleh aplikasi Google Authenticator. Tampilannya kira-kira seperti berikut.

Yes! Setting 2FA yang kita pasang sudah berhasil. Semoga keberadaan 2FA ini dapat sedikit meningkatkan keamanan sistem kita atau paling tidak dapat mempersulit siapapun yang mau masuk server kita untuk login walaupun mereka telah mengetahui password kita.