Untuk meningkatkan keamanan server, penggunaan password atau SSH key saja kadang masih belum cukup. Salah satu cara terbaik untuk menambah lapisan keamanan adalah dengan Two-Factor Authentication (2FA) menggunakan Google Authenticator.
Dengan 2FA, selain memasukkan password atau SSH key, user juga harus memasukkan kode OTP (One Time Password) dari aplikasi authenticator.
Kenapa Harus Pakai 2FA?
Keuntungan menggunakan 2FA:
- Mencegah brute force attack
- Melindungi meskipun password bocor
- Menambah lapisan keamanan login SSH
- Cocok untuk server production
1. Install Google Authenticator PAM Module
Di server Linux, kita akan menggunakan module PAM untuk 2FA.
Ubuntu / Debian:
sudo apt install libpam-google-authenticator -y
CentOS / AlmaLinux:
sudo dnf install google-authenticator -y
2. Setup Google Authenticator untuk User
Jalankan perintah berikut di server:
google-authenticator
Nanti akan muncul beberapa pertanyaan:
Jawaban yang direkomendasikan:
- Make tokens time-based? → yes
- Update .google_authenticator file? → yes
- Disallow multiple uses? → yes
- Increase security? → yes
- Enable rate-limiting? → yes
Setelah itu akan muncul:
- QR Code
- Secret key
Scan QR Code menggunakan aplikasi seperti Google Authenticator atau Microsoft Authenticator.
3. Konfigurasi PAM SSH
Edit file berikut:
sudo nano /etc/pam.d/sshd
Tambahkan baris ini:
auth required pam_google_authenticator.so
4. Konfigurasi SSH
Edit file SSH:
sudo nano /etc/ssh/sshd_config
Tambahkan atau ubah konfigurasi berikut:
ChallengeResponseAuthentication yes
UsePAM yes
Untuk keamanan maksimal (SSH key + OTP):
AuthenticationMethods publickey,keyboard-interactive
Artinya:
- Login harus menggunakan SSH key
- Ditambah kode OTP dari authenticator
5. Restart SSH Service
sudo systemctl restart ssh
6. Test Login SSH
Coba login ke server:
ssh user@server-ip
Alur login:
- Login menggunakan SSH key atau password
- Diminta kode OTP
- Masukkan kode dari aplikasi authenticator
Jika berhasil login, berarti konfigurasi sudah sukses.
7. Backup Secret Key (PENTING ⚠️)
Simpan secret key atau QR code di tempat yang aman.
Jika perangkat authenticator hilang dan tidak ada backup, maka akses ke server bisa terkunci.
8. Tips Keamanan Tambahan
- Gunakan bersama Fail2Ban
- Disable password login
- Batasi akses SSH menggunakan firewall
- Gunakan bastion host
Kesimpulan
Dengan menambahkan 2FA pada SSH, keamanan server meningkat secara signifikan.
Layer keamanan menjadi:
SSH Key / Password + OTP (2FA)
Sehingga walaupun attacker mengetahui credential, akses tetap tidak bisa dilakukan tanpa OTP.