GNU/Linux >> Belajar Linux >  >> Ubuntu

Siapkan Otentikasi Dua Faktor SSH (2FA) di Server Ubuntu

Tutorial ini akan menunjukkan kepada Anda cara mengatur otentikasi dua faktor SSH di server Ubuntu menggunakan Google Authenticator yang terkenal. Ini akan sangat meningkatkan keamanan layanan SSH di server Ubuntu Anda.

Cara Kerja Otentikasi Dua Faktor

Biasanya, Anda hanya perlu memasukkan kata sandi atau menggunakan kunci SSH untuk masuk ke server Ubuntu Anda dari jarak jauh. Otentikasi dua faktor (2FA) mengharuskan Anda memasukkan dua informasi untuk masuk. Jadi, Anda juga perlu memasukkan kata sandi satu kali berbasis waktu untuk masuk ke server SSH Anda. Kata sandi satu kali ini dihitung menggunakan algoritma TOTP, yang merupakan standar IETF. Saat ini banyak situs web dan layanan (Facebook, Google, Twitter, dll) menawarkan 2FA bagi pengguna untuk mengamankan akun mereka dan sebaiknya Anda juga mengaktifkan 2FA di server SSH Anda.

Tutorial ini akan menunjukkan cara menyiapkan

  • Otentikasi sandi dengan 2FA
  • Otentikasi kunci publik dengan 2FA

Catatan :Perangkat lunak server open-source yang akan kita gunakan dalam artikel ini bernama libpam-google-authenticator , yang diinstal dari repositori default Ubuntu. Google perusahaan tidak terlibat dalam proses otentikasi dalam bentuk atau bentuk apa pun. Perangkat lunak server dan aplikasi seluler tidak memerlukan akses jaringan.

Langkah 1:Instal dan Konfigurasikan Google Authenticator di Server Ubuntu

Masuk ke server Ubuntu Anda dan jalankan perintah berikut untuk menginstal Google Authenticator dari repositori paket default Ubuntu.

sudo apt install -y libpam-google-authenticator

Kemudian jalankan google-authenticator perintah untuk membuat kunci rahasia baru di direktori home Anda.

google-authenticator

Saat ditanya “Apakah Anda ingin token autentikasi berbasis waktu?” Jawab y .

Kemudian Anda akan melihat kode QR yang dapat Anda pindai menggunakan aplikasi TOTP di ponsel Anda. Ada dua aplikasi yang saya rekomendasikan:

  • Google Authenticator adalah aplikasi seluler TOTP yang paling terkenal. Anda dapat menginstalnya melalui Google Play atau Apple app store di ponsel Anda.
  • Google Authenticator aplikasi seluler bukan sumber terbuka. Jika tidak mempercayai Google, Anda dapat menggunakan FreeOTP, aplikasi seluler TOTP open-source yang dikembangkan oleh Red Hat.

Pindai kode QR dengan Google Authenticator atau FreeOTP di ponsel Anda. Perhatikan bahwa Anda perlu memperbesar jendela terminal untuk memindai kode QR lengkap.

Kode QR mewakili kunci rahasia, yang hanya diketahui oleh server SSH Anda dan aplikasi seluler TOTP Anda. Setelah kode QR dipindai, Anda dapat melihat kata sandi satu kali enam digit di ponsel Anda. Secara default, itu berubah setiap 30 detik. Anda harus memasukkan kata sandi satu kali ini nanti untuk masuk ke server Ubuntu melalui SSH.

Di jendela terminal, Anda dapat melihat kunci rahasia, kode verifikasi, dan kode gores darurat. Sebaiknya Anda menyimpan informasi ini ke tempat yang aman untuk digunakan nanti.

Kemudian Anda dapat memasukkan y untuk menjawab semua pertanyaan yang tersisa. Ini akan memperbarui file konfigurasi Google Authenticator Anda, menonaktifkan beberapa penggunaan token autentikasi yang sama, menambah jendela waktu, dan mengaktifkan pembatasan kecepatan untuk melindungi dari upaya login paksa.

Langkah 2:Konfigurasikan SSH Daemon untuk Menggunakan Google Authenticator

  • Otentikasi sandi dengan 2FA
  • Otentikasi kunci publik dengan 2FA

Otentikasi Kata Sandi dengan 2FA

Jika Anda tidak menggunakan kunci SSH, ikuti petunjuk di bawah ini.

Buka file konfigurasi server SSH.

sudo nano /etc/ssh/sshd_config

Temukan dua parameter berikut dalam file dan pastikan keduanya disetel ke ya .

UsePAM yes

ChallengeResponseAuthentication yes

PAM singkatan dari modul otentikasi pluggable. Ini menyediakan cara mudah untuk memasukkan metode otentikasi yang berbeda ke dalam sistem Linux Anda. Untuk mengaktifkan Google Authenticator dengan SSH, autentikasi PAM dan Challenge-Response harus diaktifkan.

Jika Anda ingin mengizinkan pengguna root untuk menggunakan 2FA, cari PermitRootLogin parameter dan atur nilainya ke yes . Tidak bisa PermitRootLogin no atau PermitRootLogin prohibit-password .

PermitRootLogin yes

Simpan dan tutup file. Selanjutnya, edit file aturan PAM untuk daemon SSH.

sudo nano /etc/pam.d/sshd

Di awal file ini, Anda dapat melihat baris berikut, yang mengaktifkan otentikasi kata sandi saat ChallengeResponseAuthentication disetel ke yes .

@include common-auth

Untuk mengaktifkan 2FA di SSH, tambahkan dua baris berikut.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Simpan dan tutup file. Kemudian restart daemon SSH agar perubahan diterapkan.

sudo systemctl restart ssh

Mulai sekarang daemon SSH akan meminta Anda memasukkan kata sandi pengguna dan kode verifikasi (kata sandi satu kali yang dibuat oleh Google Authenticator). Tangkapan layar berikut menunjukkan sesi login SSH dari kotak CentOS ke server Ubuntu 20.04.

Otentikasi Kunci Publik dengan 2FA

Jika Anda menggunakan kunci SSH untuk masuk ke server SSH, ikuti petunjuk di bawah ini.

Buka file konfigurasi server SSH.

sudo nano /etc/ssh/sshd_config

Temukan dua parameter berikut dalam file dan pastikan keduanya disetel ke ya .

UsePAM yes

ChallengeResponseAuthentication yes

PAM singkatan dari modul otentikasi pluggable. Ini menyediakan cara mudah untuk memasukkan metode otentikasi yang berbeda ke dalam sistem Linux Anda. Untuk mengaktifkan Google Authenticator dengan SSH, autentikasi PAM dan Challenge-Response harus diaktifkan.

Jika Anda ingin mengizinkan pengguna root untuk menggunakan 2FA, cari PermitRootLogin parameter dan atur nilainya ke yes . Tidak bisa PermitRootLogin no atau PermitRootLogin prohibit-password .

PermitRootLogin yes

Selanjutnya, tambahkan baris berikut di akhir file ini. Ini memberi tahu daemon SSH bahwa pengguna harus melewati otentikasi kunci publik dan otentikasi respons tantangan.

AuthenticationMethods publickey,keyboard-interactive

Simpan dan tutup file. Selanjutnya, edit file aturan PAM untuk daemon SSH.

sudo nano /etc/pam.d/sshd

Di awal file ini, Anda dapat melihat baris berikut, yang mengaktifkan otentikasi kata sandi saat ChallengeResponseAuthentication disetel ke yes . Kami perlu mengomentari baris ini, karena kami akan menggunakan kunci SSH alih-alih kata sandi.

@include common-auth

Untuk mengaktifkan 2FA di SSH, tambahkan dua baris berikut.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Simpan dan tutup file. Kemudian restart daemon SSH agar perubahan diterapkan.

sudo systemctl restart ssh

Mulai sekarang Anda perlu menggunakan kunci SSH dan kode verifikasi Google Authenticator untuk login.

Catatan

  • Setiap pengguna di server Ubuntu Anda perlu menjalankan google-authenticator perintah dan pindai kode QR untuk menggunakan otentikasi dua faktor. Jika pengguna tidak menyiapkan dan mencoba masuk, pesan kesalahan “Izin ditolak (interaktif keyboard) ” akan ditampilkan.
  • Kode Goresan Darurat adalah kode cadangan Anda. Jika Anda kehilangan ponsel, Anda dapat memasukkan salah satu dari lima kode gores darurat alih-alih kata sandi satu kali untuk menyelesaikan verifikasi dua langkah. Kode ini hanya untuk sekali pakai.
  • Jika Anda ingin mengubah kunci rahasia, cukup masuk ke server Anda dan jalankan google-authenticator perintah lagi untuk memperbarui ~/.google_authenticator berkas.
  • Karena sandi satu kali dihitung menggunakan kunci rahasia bersama dan waktu saat ini, jadi sebaiknya aktifkan sinkronisasi waktu NTP di server Ubuntu Anda untuk menjaga waktu yang akurat, meskipun sebelumnya kami telah mengizinkan kemiringan waktu 4 menit antara server Ubuntu dan aplikasi seluler. Server Ubuntu Anda dan aplikasi seluler TOTP dapat menggunakan zona waktu yang berbeda.

Cara Menonaktifkan Otentikasi Dua Faktor SSH

Edit file aturan PAM untuk daemon SSH.

sudo nano /etc/pam.d/sshd

Komentari baris berikut.

auth   required   pam_google_authenticator.so

Simpan dan tutup file. Jika Anda menambahkan baris berikut di /etc/ssh/sshd_config berkas,

AuthenticationMethods publickey,keyboard-interactive

Hapus keyboard-interactive metode otentikasi.

AuthenticationMethods publickey

Simpan dan tutup file. Kemudian restart daemon SSH.

sudo systemctl restart ssh

Ubuntu
  1. Amankan SSH menggunakan otentikasi dua faktor di Ubuntu 16.04

  2. Mengatur Otentikasi Multi-Faktor untuk SSH di Ubuntu 20.04

  3. Siapkan autentikasi dua faktor dengan menggunakan Google Authenticator

  1. Cara Menghasilkan Kunci SSH di Ubuntu 18.04

  2. Server SSH Ubuntu 20.04

  3. Cara menginstal dan mengatur server sftp di Ubuntu 20.04

  1. Instal server SSH Ubuntu 22.04

  2. Cara Mengatur Kunci SSH di Ubuntu 18.04

  3. Cara Mengatur Server OpenVPN di Ubuntu 18.04