Rabu, 25 September 2024

OTP-ssh dg email

 Mengamankan SSH di Linux dengan One-Time Password (OTP) yang dikirim melalui email adalah pendekatan yang lebih rumit daripada menggunakan aplikasi autentikator, tetapi masih mungkin dilakukan. Berikut adalah langkah-langkah untuk mengatur OTP melalui email:

Prasyarat

  1. Server Email: Anda harus memiliki server email yang dapat digunakan untuk mengirim email. Ini bisa menggunakan SMTP server seperti Postfix atau menggunakan layanan pihak ketiga seperti Gmail.

  2. Paket yang Diperlukan: Pastikan Anda memiliki mail dan openssl terinstal.

Langkah 1: Instalasi Paket

  1. Instal Paket: Untuk Debian/Ubuntu:

    bash
    sudo apt-get install mailutils openssl

    Untuk Red Hat/Fedora:

    bash
    sudo yum install mailx openssl

Langkah 2: Buat Skrip untuk Mengirim OTP

  1. Buat Skrip OTP: Buat skrip untuk menghasilkan dan mengirim OTP. Misalnya, buat file bernama send_otp.sh:

    bash
    sudo nano /usr/local/bin/send_otp.sh

    Tambahkan kode berikut ke dalam skrip:

    bash
    #!/bin/bash # Menghasilkan OTP OTP=$(openssl rand -hex 3) # Mengirim email dengan OTP echo "Your OTP is: $OTP" | mail -s "Your OTP Code" <your-email@example.com> # Simpan OTP di file sementara echo $OTP > /tmp/otp_$USER # Hapus OTP setelah 5 menit (sleep 300; rm -f /tmp/otp_$USER) &

    Gantilah <your-email@example.com> dengan alamat email Anda.

  2. Beri Izin Eksekusi pada Skrip:

    bash
    sudo chmod +x /usr/local/bin/send_otp.sh

Langkah 3: Konfigurasi SSH untuk Menggunakan OTP

  1. Edit File PAM untuk SSH: Edit file PAM untuk SSH:

    bash
    sudo nano /etc/pam.d/sshd

    Tambahkan baris berikut di bagian atas file:

    plaintext
    auth required pam_exec.so /usr/local/bin/send_otp.sh
  2. Edit File Konfigurasi SSH: Buka file konfigurasi SSH:

    bash
    sudo nano /etc/ssh/sshd_config

    Pastikan baris berikut ada dan tidak dikomentari:

    plaintext
    ChallengeResponseAuthentication yes

Langkah 4: Verifikasi OTP

  1. Buat Skrip untuk Memverifikasi OTP: Buat skrip lain untuk memverifikasi OTP:

    bash
    sudo nano /usr/local/bin/verify_otp.sh

    Tambahkan kode berikut:

    bash
    #!/bin/bash read -p "Enter OTP: " INPUT_OTP STORED_OTP=$(cat /tmp/otp_$USER 2>/dev/null) if [[ "$INPUT_OTP" == "$STORED_OTP" ]]; then rm -f /tmp/otp_$USER exit 0 # Token valid else exit 1 # Token tidak valid fi

    Beri Izin Eksekusi pada Skrip:

    bash
    sudo chmod +x /usr/local/bin/verify_otp.sh

Langkah 5: Tambahkan Verifikasi OTP ke PAM

  1. Edit File PAM untuk SSH: Edit kembali file PAM untuk SSH:

    bash
    sudo nano /etc/pam.d/sshd

    Tambahkan baris berikut setelah baris yang mengirim OTP:

    plaintext
    auth required pam_exec.so /usr/local/bin/verify_otp.sh

Langkah 6: Restart Layanan SSH

  1. Restart SSH: Setelah melakukan perubahan, restart layanan SSH:
    bash
    sudo systemctl restart sshd

Langkah 7: Uji Koneksi SSH

  1. Uji Koneksi SSH: Cobalah untuk terhubung melalui SSH. Anda akan menerima OTP melalui email, dan setelah itu Anda akan diminta untuk memasukkan OTP.

Catatan Tambahan

  • Keamanan Email: Pastikan email Anda aman, karena ini adalah cara utama untuk menerima OTP.
  • Penghapusan OTP: Skrip ini menghapus OTP setelah 5 menit. Anda dapat menyesuaikannya sesuai kebutuhan.
  • Backup: Pertimbangkan untuk mengamankan skrip dan kredensial Anda.

Jika Anda memiliki pertanyaan lebih lanjut atau membutuhkan penjelasan tambahan, silakan tanyakan!

Tidak ada komentar:

Posting Komentar