Dalam panduan ini, kita akan mempelajari apa itu autentikasi Multi-Faktor dan kepentingannya, dan terakhir, bagaimana menyiapkan autentikasi Multi-Faktor untuk SSH di Linux menggunakan aplikasi Google Authenticator.
Pengantar
Keamanan adalah bisnis yang serius. Jumlah kompromi meningkat secara signifikan dari hari ke hari dan diperkirakan pada tahun 2025 kejahatan dunia maya akan menyebabkan perusahaan 10,5 triliun USD.
Lapisan keamanan yang kuat harus diterapkan di semua lapisan tumpukan teknologi. Dalam artikel ini, kita akan melihat salah satu implementasi keamanan untuk ssh menggunakan otentikasi multi-faktor.
SSH, singkatan dari Secure Shell, adalah protokol jaringan yang memungkinkan pengguna terhubung ke mesin jarak jauh (server) dan mengakses sumber daya.
Protokol ssh menerapkan dua jenis keamanan yaitu Otentikasi berbasis kata sandi , dan Autentikasi berbasis kunci .
Otentikasi berbasis kunci (publik -> pribadi) dianggap lebih aman dibandingkan dengan autentikasi berbasis kata sandi dan sebagian besar instruksi pengerasan SSH merekomendasikan untuk menonaktifkan autentikasi berbasis kata sandi dan hanya mengaktifkan autentikasi berbasis kunci.
Terlepas dari mekanisme autentikasi yang Anda pilih, Anda dapat membuat ssh lebih aman dengan menerapkan pengaturan autentikasi multi-faktor.
Apa itu Otentikasi Multi-Faktor?
Otentikasi multi-faktor (singkatnya MFA ) adalah proses autentikasi yang aman yang memerlukan lebih dari satu teknik autentikasi yang dipilih dari kategori kredensial independen.
Otentikasi Multi-Faktor terkadang juga disebut sebagai "Otentikasi dua faktor (2FA)" .
Ada dua faktor yang terlibat dalam memvalidasi siapa yang Anda katakan. Faktor pertama adalah kata sandi yang dibuat saat akun pengguna Anda dibuat.
Faktor kedua adalah aplikasi apa pun yang menghasilkan OTP atau protokol apa pun yang mengirimi Anda pesan teks atau melakukan panggilan ke perangkat Anda.
Bergantung pada bagaimana aplikasi diimplementasikan, cara Anda mengautentikasi bervariasi. Beberapa alat umum yang Anda gunakan untuk MFA adalah:
- Aplikasi yang diinstal pada perangkat seluler yang menghasilkan token.
- Perangkat eksternal seperti Yubikey.
- Sidik jari.
- Pengenalan wajah.
- SMS atau sandi OTP berbasis panggilan masuk.
Untuk mengaktifkan autentikasi multi-faktor untuk ssh, kami akan menggunakan "Google Authenticator" aplikasi yang menggunakan protokol OATH-TOTP. Ada alat alternatif lain seperti Twilio Authy atau GratisOTP yang dapat Anda instal dan coba.
Kami akan mulai dengan menginstal aplikasi Google Authenticator di server dan perangkat seluler dan mencoba mengaktifkan MFA dan memvalidasi.
Instal Google Authenticator
Instal terlebih dahulu aplikasi Google Authenticator di perangkat Android atau iOS Anda melalui playstore /Itunes .
Sekarang, instal aplikasi Google Authenticator di sistem Linux Anda.
Bergantung pada distribusi Anda, jalankan perintah penginstalan berikut.
Di Ubuntu dan distribusi turunannya menjalankan perintah berikut.
$ sudo apt install libpam-google-authenticator
Di RHEL distribusi berbasis menjalankan perintah berikut.
$ sudo dnf install google-authenticator -y
Untuk Lengkungan distribusi berbasis jalankan perintah berikut.
$ sudo pacman -S libpam-google-authenticator
Buat Token Awal Untuk Pengguna
Sebagai langkah pertama dalam menyiapkan MFA, Anda harus menjalankan perintah berikut dari terminal Anda. Ini akan menangani pengaturan awal dengan membuat kunci TOTP. Kunci ini untuk pengguna yang menjalankan perintah dan tidak berlaku untuk semua pengguna di sistem.
$ google-authenticator
Ada beberapa urutan langkah di mana Anda akan diminta dengan (y /n ) pilihan.
LANGKAH 1 - Ini akan meminta Anda untuk memilih token otentikasi berbasis waktu. Token otentikasi berbasis waktu akan menghasilkan kode baru setiap 30 detik. Tekan "y" untuk melanjutkan.
LANGKAH 2 - Token rahasia akan dibuat bersama dengan kode QR. Buka aplikasi seluler Google Authenticator dan pindai kode QR atau ketikkan kunci rahasia secara manual untuk mendaftarkan perangkat. Setelah selesai, sekarang aplikasi akan mulai menghasilkan token setiap 30 detik.
LANGKAH 3 - Pada langkah ini, Anda akan diminta untuk memperbarui .google_authenticator
file di bawah direktori home Anda. Semua kunci rahasia, kode verifikasi, kode gores darurat disimpan dalam file ini. Tekan "y" untuk melanjutkan.
LANGKAH 4 - Memilih "y" pada langkah ini token akan segera kedaluwarsa setelah Anda menggunakannya untuk mengautentikasi. Dalam hal ini, meskipun beberapa peretas mendapatkan token Anda, token tersebut akan kedaluwarsa.
LANGKAH 5 - Langkah ini memutuskan berapa banyak token yang diizinkan dan jangka waktunya. Saat saya memilih "n" , itu akan memungkinkan 3 token dalam 90 detik jendela. Jika saya menekan "y" , itu akan memungkinkan 17 token dalam 240 detik jendela waktu.
LANGKAH 6 - Langkah ini akan meminta Anda untuk mengaktifkan pembatasan tarif. Pembatasan tingkat memungkinkan penyerang untuk mencoba hanya 3 upaya masuk setiap 30 detik . Jika token salah maka mereka harus menunggu N saatnya mencoba lagi.
Kami telah menyelesaikan langkah pertama. Buka file ~/.google_authenticator
dan Anda dapat menemukan semua setelan dan kode rahasia yang kami buat melalui semua langkah ini.
$ cat ~/.google_authenticator
Anda juga dapat meneruskan argumen ke perintah google-authenticator yang akan membuat kunci dan setelan lainnya tanpa melalui urutan langkah ini.
$ google-authenticator -q -t -d -f -r 3 -R 30 -w 3
Lihat bagian bantuan Google authenticator untuk menemukan apa yang akan dilakukan argumen tersebut.
$ google-authenticator –-help
Konfigurasikan SSH Untuk Otentikasi Multi-Faktor
Kita harus membuat beberapa perubahan konfigurasi pada openSSH sehingga kita dapat mulai menggunakan MFA.
Catatan:
- Sebagai praktik terbaik, selalu buat cadangan file konfigurasi Anda sebelum membuat perubahan apa pun. Jika ada yang kacau, perubahan dapat dikembalikan.
- Karena Anda membuat perubahan pada file konfigurasi SSH, pastikan Anda memiliki sesi yang dibuka secara terpisah, sehingga Anda tidak akan terkunci dari diri Anda sendiri secara tidak sengaja.
Jalankan perintah berikut untuk mencadangkan file konfigurasi SSH.
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
Pertama, aktifkan SSH untuk menggunakan MFA dengan mengatur ChallengeResponseAuthentication
opsi untuk "ya" .
Selanjutnya, edit /etc/pam.d/sshd
berkas:
$ sudo vi /etc/pam.d/sshd
Dan tambahkan baris berikut ke bagian bawah file.
auth required pam_google_authenticator.so nullok auth required pam_permit.so
Jika Anda ingin membuat MFA wajib bagi semua pengguna, hapus kata "nullok" .
Mulai ulang layanan ssh untuk membuat perubahan efektif.
$ sudo systemctl restart sshd
Uji Otentikasi Dua Faktor
Saatnya menguji apakah perubahan yang kita buat efektif.
Hubungkan ke server melalui SSH dan Anda akan dimintai kata sandi sebagai faktor pertama diikuti dengan kode verifikasi sebagai otentikasi faktor kedua seperti yang ditunjukkan pada gambar di bawah ini.
$ ssh [email protected]/IPaddress
Setelah Anda memasukkan kata sandi SSH dan kode verifikasi, Anda akan dapat masuk.
Apakah Anda ingat bahwa kami belum mengaktifkan MFA sebagai kewajiban untuk semua pengguna? Mari kita uji dan lihat apakah saya dapat terhubung dengan pengguna lain yang belum membuat dan menyiapkan token.
Saya memiliki penguji dan saya berhasil terhubung tanpa meminta kode verifikasi.
Lihat? Saya juga bisa login tanpa kode verifikasi.
Otentikasi Multi-Faktor Untuk Otentikasi Berbasis Kunci
Jika Anda telah menyiapkan otentikasi berbasis kunci, maka Anda tidak akan dipromosikan untuk kata sandi atau kode verifikasi. Mengapa?
Karena, secara default ssh menggunakan otentikasi kunci publik terlebih dahulu dan jika ada kunci yang ditemukan maka diautentikasi menggunakan itu. Jika kunci tidak ditemukan, itu akan menggunakan otentikasi berbasis kata sandi.
Anda dapat menggunakan verbose mode untuk memeriksa ini.
$ ssh -v [email protected]/IPaddress ## With verbose
Tambahkan baris berikut di bawah /etc/ssh/sshd_config
berkas:
AuthenticationMethods publickey,password publickey,keyboard-interactive
Selanjutnya buka /etc/pam.d/sshd
dan komentari baris berikut.
Jika Anda tidak berkomentar "@include common-auth"
, maka itu akan memungkinkan lebih dari dua faktor untuk mengautentikasi. Ini pertama-tama akan mengautentikasi menggunakan kunci diikuti dengan kata sandi dan token. Yang saya butuhkan hanyalah kunci dan token untuk autentikasi saya, jadi saya menonaktifkannya.
Mulai ulang sshd
layanan dan uji apakah perubahan berfungsi dengan baik.
$ sudo systemctl restart sshd
Sekarang Jika saya mencoba untuk terhubung, ia menggunakan kunci publik sebagai faktor pertama dan kode verifikasi sebagai faktor kedua untuk mengautentikasi.
Langkah Pemulihan
Mungkin ada skenario di mana Anda mungkin kehilangan atau mengubah perangkat seluler Anda. Dalam hal ini, Anda harus menginstal ulang aplikasi google-authenticator dan mendaftarkan kunci rahasia untuk mulai membuat token.
Jika Anda terkunci dari sistem, maka Anda harus menghubungi administrator sistem Anda untuk memberi Anda kunci rahasia baru untuk mendaftar dan menggunakannya. Tetapi ada pendekatan alternatif di mana Anda dapat masuk dan membuat kunci sendiri.
Ingat kode yang dihasilkan selama langkah awal? Anda dapat menggunakan kode gores darurat sebagai token untuk login. Setiap kode awal hanya dapat digunakan sekali. Simpan di tempat yang aman sehingga dapat digunakan saat dibutuhkan.
Kode disimpan di ~/.google_authenticator
berkas.
$ cat ~/.google_authenticator
Sekarang Anda dapat membuat kembali kunci Anda sendiri dengan menjalankan perintah berikut.
$ google-authenticator
Kesimpulan
Dalam artikel ini, saya telah menunjukkan cara menginstal google authenticator dan mengaktifkan Multi-factor Authentication untuk SSH dengan konfigurasi berbeda.
Sebagai administrator, Anda juga dapat menulis skrip bash untuk mengotomatisasi proses pembuatan kunci rahasia dan membaginya dengan pengguna. Anda juga harus mengeraskan ssh sebelum mengatur MFA, sehingga sistem Anda lebih aman. Kami berencana untuk membahasnya dalam artikel terpisah. Tetap disini!
Bacaan Terkait:
- Cara Mengonfigurasi Otentikasi Berbasis Kunci SSH Di Linux
- Temukan Jika Seorang Pengguna Menggunakan Otentikasi SSH Berbasis Kata Sandi Atau Berbasis Kunci
- Cara Mengizinkan Atau Menolak Akses SSH Ke Pengguna Atau Grup Tertentu Di Linux
- Nonaktifkan Otentikasi Kata Sandi SSH Untuk Pengguna Atau Grup Tertentu