Setup Telegram Alert When an SSH Login is Successful

Pengenalan

Secure Shell (SSH) adalah protokol yang digunakan untuk mengakses dan mengelola server secara remote dengan aman. Dalam lingkungan server yang kritis, penting untuk mendapatkan notifikasi ketika ada akses SSH yang berhasil. Salah satu cara efektif untuk mendapatkan notifikasi ini adalah dengan menggunakan Telegram Bot.

Telegram menyediakan API yang memungkinkan kita mengirim pesan otomatis ke sebuah chat atau grup ketika terjadi login SSH. Dalam artikel ini, kita akan mengatur skrip sederhana yang akan mengirimkan alert ke Telegram setiap kali ada login SSH yang berhasil.

 

Konfigurasi

Jika Anda ingin mendapatkan notifikasi Telegram setiap kali ada login SSH berhasil ke Ubuntu Server, cara paling stabil dan profesional adalah menggunakan PAM (Pluggable Authentication Modules).

Metode ini lebih baik dibanding /etc/ssh/sshrc karena bekerja langsung di level autentikasi, sehingga berlaku untuk semua user.

Kenapa Menggunakan PAM?

  • ✅ Berlaku untuk semua user (misalnya: server, aldo, dll)
  • ✅ Tidak tergantung shell interaktif
  • ✅ Tetap berjalan meskipun SSH login menggunakan command non-interaktif
  • ✅ Lebih stabil dan cocok untuk server production

Persiapan

Pastikan Anda sudah memiliki:

  • Token Bot Telegram (BOT_TOKEN)
  • Chat ID Telegram (CHAT_ID)
  • Akses root / sudo di Ubuntu Server

Langkah 1: Buat Script Notifikasi Telegram

Buat file script baru di /usr/local/bin:

sudo nano /usr/local/bin/ssh-telegram-notify.sh

Isi file dengan script berikut:

#!/bin/bash

BOT_TOKEN="ISI_TOKEN_BOT_ANDA"
CHAT_ID="ISI_CHAT_ID_ANDA"

USER="$PAM_USER"
IP="$PAM_RHOST"
HOSTNAME="$(hostname)"

TEXT="🔐 SSH Login Berhasil
User: $USER
IP: $IP
Host: $HOSTNAME"

curl -s -G "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
  --data-urlencode "chat_id=${CHAT_ID}" \
  --data-urlencode "text=${TEXT}" \
  > /dev/null 2>&1

Catatan: Jangan lupa ganti:

  • ISI_TOKEN_BOT_ANDA dengan token bot Telegram Anda
  • ISI_CHAT_ID_ANDA dengan Chat ID Telegram Anda

Langkah 2: Berikan Hak Eksekusi

Jalankan perintah berikut agar script bisa dieksekusi:

sudo chmod +x /usr/local/bin/ssh-telegram-notify.sh

Langkah 3: Tambahkan pam_exec ke PAM SSH

Edit konfigurasi PAM untuk SSH:

sudo nano /etc/pam.d/sshd

Tambahkan baris berikut di bagian paling bawah file:

session optional pam_exec.so /usr/local/bin/ssh-telegram-notify.sh

Penting: Pastikan penulisan path benar. Jika salah, bisa menyebabkan masalah pada sesi login SSH.

Langkah 4: Restart SSH Service

Restart service SSH agar konfigurasi aktif:

sudo systemctl restart ssh

Langkah 5: Uji Coba Login SSH

Silakan login ulang SSH ke server:

ssh username@ip-server

Jika konfigurasi berhasil, Anda akan menerima pesan Telegram otomatis setiap kali ada SSH login berhasil.

Tips Keamanan Tambahan

Untuk keamanan lebih baik, Anda bisa menambahkan:

  • Firewall UFW
  • Disable root login
  • Ubah port SSH
  • Gunakan SSH Key Authentication
  • Install Fail2ban

Penutup

Dengan metode PAM pam_exec, notifikasi SSH Login akan jauh lebih stabil dibanding metode /etc/ssh/sshrc. Cara ini cocok digunakan pada server production agar administrator dapat memonitor akses login secara real-time.

The power of documents

Kami sajikan dengan bahasa yang mudah dengan disertai command line yang bisa di copy-paste sehingga memudahkan untuk melakukan modifikasi command line