Menambah keamanan SSH dengan Multi Factor Authentication

Bagi pemilik VPS kere hore seperti saya, akses SSH adalah pintu utama yang wajib dilindungi. Akibatnya akan cukup fatal apabila login SSH bisa ditembus. Password adalah salah satu kunci keamanan yang menurut saya paling lemah, untuk perlu alternative lain sebagai lapisan kedua.

Kita mengenal istilah two factor authentication yaitu adanya One Time Password setelah input password pertama selesai. Salah satu OTP yang mudah diimplementasikan adalah google authenticator. Selain mudah diinstall aplikasi generatornya dapat digunakan di android jadi tinggal cek di smartphone saja.

Kali ini saya akan memberikan tip keamanan tambahan dengan memanfaatkan google authenticator dan private key ssh. Idenya adalah menambahkan token google authenticator setelah private key berhasil load. Login ke SSH tidak bisa lagi menggunakan password dan untuk keamanan tambahannya adalah memasukkan kode OTP. Dengan cara ini apabila private key dicuri maka tetap tidak bisa login ke ssh tanpa menggunakan OTP.

Setting login SSH dengan private key

Sebelum setting SSH untuk login ke private key maka perlu kta generate dulu private key-nya. Pada langkah ini kita akan membuat 1 user ID yang bertindak sebagai sudoer untuk selanjutkan kita login dengan user ini dan login root akan dimatikan.

# adduser demo

# gpasswd -a demo sudo

sampai di sini kita sudah membuat 1 user dengan hak akses root, silahkan ganti demo dengan user id yang sesuai

Login dengan user id yang baru saja anda buat kemudian generate private key dengan perintah berikut:

$ ssh-keygen

akan muncul output lokasi file private key umumnya disimpan di folder /Users/demo/.ssh/id_rsa

setelah itu akan muncul konfirmasi apakah akan menggunakan passphrase. Fungsi passphrase adalah sebagai password dari private key. Jika anda aktifkan passphare maka pada saat private key diload akan meminta untuk input passphare. Saya tidak menggunakan passphrase, menurut saya sudah cukup dengan google authenticator saja.

File yang digenerate adalah id_rsa, id_pub di folder .ssh. Langkah selanjutnya adalah mengcopy private ke local komputer.

$ cat ~/.ssh/id_rsa.oub

copy text yang muncul ke notepad.

Langkah selanjutnya adalah setting SSH agar menggunakan private key tersebut untuk login. Pada step ini pastikan anda login dengan user yang dibuat sebelumnya

$ mkdir .ssh

$ chmod 700 .ssh

$ nano .ssh/authorized_keys

copy text pada langkah sebelumnya di sini. Save dengan ctrl+X lalu tekan Y

$ chmod 600 .ssh/authorized_keys

perintah ini untuk setting permission agar tidak dapat dirubah

Login kembali dengan root. Kali ini kita akan rubah config SSH agar login dengan private key

# nano /etc/ssh/sshd_config

Rubah baris berikut:

PermitRoot login No

# service ssh restart

Silahkan dicoba login dengan user id yang dibuat. Jika setting sudah benar maka anda tidak bisa login dengan password dan harus load private. Coba juga untuk login dengan root.

Install Google Authenticator

$ sudo apt-get update

$ sudo apt-get install libpam-google-authenticator

$ google-authenticator

Tekan y, y, y, n dan y

Copy informasi code dan recovery code. informasi ini sangat penting karena akan digunakan sebagai key generator dan recovery code.

Configure SSH untuk multi-factor authentication

$ sudo nano /etc/pam.d/ssh

. . .
# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok

tambahkan baris tersebut tepat dibawah @include common-password

rubah baris berikut

# Standard Un*x authentication.
#@include common-auth

jangan lupa menambahkan # ke baris #@include common-auth

$ sudo /etc/ssh/sshd_config

ChallengeResponseAuthentication yes

PasswordAuthentication yes

tambahkan baris berikut di baris terakhir

UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

$ sudo service ssh restart

Setup Google Authenticator

Masukan kode yang muncul setelah install google autheticator ke aplikasi google authenticator.

Akan muncul yang tergenerate otomatis dan berganti-ganti setiap menit.

Sekarang silahkan anda coba login dengan load private key yang dibuat lalu akan muncul baris untuk memasukan kode dari google authenticator