Protokol Secure Shell (SSH) adalah pintu gerbang utama administrasi server Linux di seluruh dunia. Karena signifikansinya, port SSH (por...
Protokol Secure Shell (SSH) adalah pintu gerbang utama administrasi server Linux di seluruh dunia. Karena signifikansinya, port SSH (port 22) menjadi target paling favorit bagi botnet global yang melancarkan serangan brute-force, credential stuffing, hingga eksploitasi kunci yang bocor. Menggunakan SSH Key (seperti Ed25519) memang meningkatkan keamanan dibandingkan password statis, namun tetap memiliki celah jika laptop teknisi terinfeksi malware infostealer atau private key tersalin tanpa sengaja.
Untuk mencapai tingkat keamanan standar defense-in-depth, sistem autentikasi server wajib menerapkan Two-Factor Authentication (2FA / MFA) berbasis Time-based One-Time Password (TOTP). Dengan modul PAM Google Authenticator, setiap kali seseorang melakukan SSH ke server, mereka wajib memasukkan dua faktor validasi: sesuatu yang Anda miliki (kunci privat SSH) dan kode token 6 digit dinamis dari ponsel yang berganti setiap 30 detik.
1. Instalasi Modul PAM Google Authenticator di Linux
Modul autentikasi PAM (Pluggable Authentication Modules) untuk Google Authenticator tersedia di repositori resmi distro Linux berbasis Debian/Ubuntu maupun RHEL/Rocky Linux:
# Update repository dan instal paket PAM Google Authenticator (Ubuntu/Debian)
sudo apt update
sudo apt install -y libpam-google-authenticator
# Untuk Rocky Linux / AlmaLinux / RHEL 9
# sudo dnf install -y epel-release
# sudo dnf install -y google-authenticator
2. Generate Secret Key dan QR Code TOTP per User
Konfigurasi 2FA dilakukan secara individual untuk setiap user yang berhak login. Jalankan wizard interaktif di terminal dengan user yang bersangkutan (hindari menjalankan sebagai root jika ingin mengamankan user reguler):
# Eksekusi wizard pembuatan kunci TOTP
google-authenticator
Wizard akan mengajukan serangkaian pertanyaan krusial. Jawab sesuai rekomendasi keamanan produksi berikut:
Do you want authentication tokens to be time-based (y/n)?→ y (Memilih skema TOTP berbasis waktu standar RFC 6238).- Terminal akan mencetak QR Code ASCII berukuran besar, Secret Key, Verification Code, dan 5 buah Emergency Scratch Codes.
- Buka aplikasi authenticator di smartphone Anda (Google Authenticator, Aegis, 2FAS, atau Bitwarden Authenticator), lalu scan QR code tersebut.
Do you want me to update your "~/.google_authenticator" file (y/n)?→ y (Menyimpan secret key ke file konfigurasi user).Do you want to disallow multiple uses of the same authentication token (y/n)?→ y (Mencegah serangan replay attacks, 1 token hanya valid sekali pakai).By default, a new token is generated every 30 seconds... Increase window size? (y/n)?→ n (Menolak pelebaran jendela waktu untuk menjaga presisi keamanan ketat).Do you want to enable rate-limiting (y/n)?→ y (Membatasi maksimal 3 percobaan login per 30 detik untuk menangkis brute-force).
# CONTOH EMERGENCY SCRATCH CODES (Wajib Catat dan Simpan di Password Manager):
# 48291048
# 19284756
# 83920194
# 57483920
# 92837401
3. Konfigurasi Integrasi PAM (/etc/pam.d/sshd)
Buka konfigurasi PAM untuk OpenSSH daemon menggunakan editor teks dengan hak akses sudo:
sudo nano /etc/pam.d/sshd
Gulir ke baris paling bawah file, lalu tambahkan direktif berikut:
# Integrasi TOTP Google Authenticator
auth required pam_google_authenticator.so nullok
Catatan parameter nullok: Parameter ini memungkinkan masa transisi yang aman. Pengguna yang belum menjalankan perintah google-authenticator masih dapat login menggunakan SSH key tanpa 2FA. Setelah seluruh sysadmin mengonfigurasi TOTP, hapus kata nullok agar 2FA menjadi kewajiban mutlak tanpa toleransi.
4. Mengonfigurasi OpenSSH Server (/etc/ssh/sshd_config)
Selanjutnya, instruksikan daemon SSH agar meminta tantangan interaktif keyboard setelah kunci publik berhasil diverifikasi:
sudo nano /etc/ssh/sshd_config
# Atau edit file drop-in: /etc/ssh/sshd_config.d/2fa.conf
Pastikan baris-baris parameter berikut disetel dengan tepat:
# Aktifkan otentikasi interaktif keyboard untuk PAM
KbdInteractiveAuthentication yes
UsePAM yes
# Wajibkan kombinasi Public Key DIIKUTI DENGAN Kode TOTP
AuthenticationMethods publickey,keyboard-interactive
Uji validitas sintaks konfigurasi SSH sebelum me-restart daemon:
# Cek apakah ada error penulisan sintaks
sudo sshd -t
# Restart service OpenSSH
sudo systemctl restart ssh
# Pada CentOS/RHEL: sudo systemctl restart sshd
5. Pengujian Skenario Login 2FA
Buka terminal client baru dan lakukan koneksi SSH:
ssh user@server-ip
# Output:
# Authenticated with partial success.
# (Verifikasi SSH Key berhasil, sistem meminta faktor kedua)
# Verification code: [Ketik 6 digit angka dari aplikasi TOTP]
Jika kode yang dimasukkan tepat, Anda akan langsung masuk ke shell Linux. Jika kode salah atau kedaluwarsa, akses akan ditolak seketika (Permission denied).
Kesimpulan
Menerapkan Two-Factor Authentication (2FA) pada layanan SSH adalah salah satu langkah mitigasi paling efektif dalam melindungi server Linux dari ancaman kompromi kredensial. Kombinasi pasangan kunci publik Ed25519 dan token TOTP Google Authenticator memastikan bahwa pencurian private key sekalipun tidak cukup bagi peretas untuk menembus benteng pertahanan infrastruktur Anda.
COMMENTS