Autentikasi adalah proses validasi atau pembuktian terhadap identitas atau kredensial yang hendak memasuki sebuah sistem atau layanan yang penting. Autentikasi ini dilakukan untuk membuktikan bahwa pengguna yang hendak login benar-benar pemilik akun yang sah. Secara tidak sadar sebenarnya kita sudah sering menerapkan proses autentikasi ini. Salah satu contoh proses autentikasi ini biasanya dilakukan dengan berbagai cara, misalnya seperti menggunakan password dan username pengguna. Data yang perlu dimasukan ketika autentikasi biasanya hanya diketahui oleh pengguna atau bersifat pribadi. Sehingga apabila pada proses autentikasi terjadi ketidakcocokan maka autentikasi tidak akan berhasil. Salah satu contoh nyata autentikasi yaitu Google, mereka hanya akan memberikan akses masuk apabila password-nya sudah benar dan sinkron. Autentikasi tentu tidak hanya ada satu jenis saja, berkembangnya teknologi membuat lebih banyak inovasi proses autentikasi.
Memasang Google PAM (Pluggable Authentication Module)
PAM atau dapat dijabarkan sebagai Pluggable Authenticaion Modul adalah sebuah infrastruktur otentifikasi yang menggunakan sistem Linux untuk mengidentifikasi seorang user. Dikarenakan Google membuat sebuah aplikasi OATH-TOTP, mereka juga harus membuat OAM yang menghasilkan TOTPs dan harus komplatibel dengan semua aplikasi OATH-TOTP lainya, seperti Google Authenticator itu sendiri atau sering disebut Authy.
Untuk melakukan pemasangan Google PAM langkah pertama yang kita lakukan adalah dengan menambahkan EPEL repository ke dalam repository server dikarenakan Rocky Linux merupakan distribusi enterprise. Kita dapat menggunakan command berikut.
dnf install epel-release
Last metadata expiration check: 1:02:02 ago on Wed 24 Apr 2024 07:44:58 AM UTC.
Dependencies resolved.
==============================================================================================================================================================================================================================
Package Architecture Version Repository Size
==============================================================================================================================================================================================================================
Installing:
epel-release noarch 9-7.el9 extras 19 k
Installing dependencies:
python3-dateutil noarch 1:2.8.1-7.el9 baseos 287 k
python3-dnf-plugins-core noarch 4.3.0-11.el9_3 baseos 246 k
python3-six noarch 1.15.0-9.el9 baseos 36 k
python3-systemd x86_64 234-18.el9 baseos 83 k
Installing weak dependencies:
dnf-plugins-core noarch 4.3.0-11.el9_3 baseos 37 k
Transaction Summary
==============================================================================================================================================================================================================================
Install 6 Packages
Total download size: 708 k
Installed size: 2.1 M
Is this ok [y/N]: y
Setelah menambahkan repository EPEL kita lanjutkan dengan memasang Google Authenticator melalui command sebagai berikut.
dnf install google-authenticator
Extra Packages for Enterprise Linux 9 - x86_64 6.0 MB/s | 21 MB 00:03
Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64 1.1 kB/s | 2.5 kB 00:02
Dependencies resolved.
==============================================================================================================================================================================================================================
Package Architecture Version Repository Size
==============================================================================================================================================================================================================================
Installing:
google-authenticator x86_64 1.09-5.el9 epel 55 k
Transaction Summary
==============================================================================================================================================================================================================================
Install 1 Package
Total download size: 55 k
Installed size: 119 k
Is this ok [y/N]: y
Untuk mempermudah dalam proses penyelarasan kode otentifikasi anda ke device mobile anda dapat menginstall QR Encoder ke dalam server anda. Anda dapat menggunakan command sebagai berikut.
dnf install qrencode
Last metadata expiration check: 0:22:13 ago on Sat 27 Apr 2024 01:39:57 AM UTC.
Dependencies resolved.
============================================================================================================
Package Architecture Version Repository Size
============================================================================================================
Installing:
qrencode x86_64 4.1.1-1.el9 epel 25 k
Installing dependencies:
libpng x86_64 2:1.6.37-12.el9 baseos 116 k
qrencode-libs x86_64 4.1.1-1.el9 epel 61 k
Transaction Summary
============================================================================================================
Install 3 Packages
Total download size: 202 k
Installed size: 434 k
Is this ok [y/N]: y
Setelah selesai memasang Google Autheticator dan QR Encoder selanjutnya anda dapat menginstall aplikasi Google Autheticator di mobile device anda atau menggunakan add-on pada browser untuk. Jika sudah maka kita dapat memanggil Google Authenticator pada server kita dengan command sebagai berikut.
google-authenticator
Lalu akan muncul peringatan seperti di atas, anda dapat memasukan key di atas atau melalukan scan pada barcode yang muncul. Lalu masukan code yang muncul pada aplikasi Google Authenticator atau add-on yang anda install pada browser anda. Setelah itu anda akan ditampilkan emergency codes anda, harap simpan emergency code anda. Selanjut anda dapat melihat langkah langkah dibawah.
Your emergency scratch codes are:
21169793
28357583
26391583
59309281
79786629
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, a new token is generated every 30 seconds by the mobile app.
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. This allows for a
time skew of up to 30 seconds between authentication server and client. If you
experience problems with poor time synchronization, you can increase the window
from its default size of 3 permitted codes (one previous code, the current
code, the next code) to 17 permitted codes (the 8 previous codes, the current
code, and the 8 next codes). 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
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
Setelah menyelesaikan tahap instalasi langkah selanjutnya adalah mengatur agar saat login menggunakan SSH dapat menggunakan Google Authenticator. Pertama anda dapat masuk ke dalam pengaturan SSH dan ubah setting yang terdapat seperti berikut.
nano /etc/ssh/sshd_config
KbdInteractiveAuthentication yes
Selanjutnya masuk kedalam pengaturan SSH yang lain dan ubah pengaturan sesuai command berikut, dan ubah pengaturan yang ada di dalam sebagai berikut.
nano /etc/ssh/sshd_config.d/50-redhat.conf
ChallengeResponseAuthentication yes
Langkah terakhir adalah mengatur PAM untuk dapat menjalankan Two Factor Authentication (2FA) dengan cara anda masuk ke dalam setting PAM dengan command sebagai berikut.
nano /etc/pam.d/sshd
Lalu tambahkan pengaturan berikut pada baris pertama kemudian simpan pengaturan tersebut.
auth required pam_google_authenticator.so
Setelah melakukan langkah-langkah di atas selanjutnya anda dapat melakukan pengetasan dengan mencoba login ke dalam server anda melalui SSH.