Semenjak bekerja sebagi freelance full-stack developer, saya harus ngapa-gapain sendiri, termasuk setup server, monitoring, maintenance, bikin kopi, nyuci baju masak, dll. Malah curhat 😐
Pada saat saya bekerja sebagai project manager atau lead engineer, ada beberapa pekerjaan yang saya delegasikan kepada staf saya untuk mengeksekusi tugas tersebut. Sebagai contoh, beberapa hal pada pekerjaan yang berhubungan dengan infrastruktur atau server, menambahkan firewall, iptables, monitoring dan lain-lain. Tugas utama saya adalah memastikan hal-hal tersebut berjalan dengan baik dengan menginstruksikan kepada staf SysAdmin atau DevOps. Tugas utama saya bukanlah eksekutor, namun director, yaitu mengarahkan. Namun, di pekerjaan saya saat ini, saya harus melakukan pekerjaan-pekerjaan tersebut secara mandiri.
Beberapa waktu lalu, saya diminta untuk bekerja sebagai IT Consultant di sebuah perusahaan di Indonesia, juga sekaligus sebagai Fullstack Engineer/Developer. Dalam melakukan pekerjaan ini, ternyata saya menjumpai bahwa perusahaan tersebut telah bekerja sama dengan freelance programmer lain yang sudah bekerja bersama mereka sebelum hiring saya. Kemudian, kami harus melakukan beberapa pekerjaan berbeda pada satu server yang sama.
Untuk menghindari conflik hak akses terhadap server, kami membuat beberapa user dan password untuk masing-masing dari kami, namun ada di antara kami yang sering menggunakan akses root pada server. Kemudian ada risiko untuk saling menyalahkan, siapa yang mengubah file, kapan terakhir login dll, akhirnya kami membuat Notifikasi Login SSH melalui Telegram.
Notifikasi ini bertujuan untuk mengetahui siapa yang terakhir login ke dalam server, menggunakan username apa, sehingga dapat digunakan sebagai catatan atau logs untuk diaudit di kemudian hari.
Langkah-langkah yang perlu dilakukan untuk membuat Notifikasi Login SSH melalui Telegram adalah sebagai berikut:
1. Buat Bot Telegram
- Buka Telegram, cari
@BotFather
, dan buat bot baru. - Dapatkan
API Token
dari bot yang dibuat.
2. Dapatkan Chat ID
- Kirim pesan ke bot yang baru dibuat.
- Buka URL berikut di browser untuk mendapatkan Chat ID: https://api.telegram.org/bot<API_TOKEN>/getUpdates
- Ganti
<API_TOKEN>
dengan token bot. - Catat
chat.id
dari respons JSON.
3. Buat Skrip Notifikasi Telegram
Buat skrip untuk mengirim notifikasi ke Telegram:
sudo nano /usr/local/bin/ssh-login-notify-telegram.sh
Isi skrip dengan berikut:
#!/bin/bash
# Informasi login
# USER=$(whoami)
USER="$PAM_USER"
IP=$(echo $SSH_CONNECTION | awk '{print $1}')
HOSTNAME=$(hostname)
DATE=$(date)
if [ "$PAM_TYPE" = "open_session" ]; then
# Konfigurasi Telegram
API_TOKEN="your-telegram-bot-token"
CHAT_ID="your-chat-id"
MESSAGE="Login SSH sukses pada $HOSTNAME:
- User: $USER
- IP: $IP
- Waktu: $DATE"
# Kirim notifikasi ke Telegram
curl -s -X POST https://api.telegram.org/bot$API_TOKEN/sendMessage \
-d chat_id=$CHAT_ID \
-d text="$MESSAGE"
fi
- Ganti
your-telegram-bot-token
danyour-chat-id
dengan token bot dan chat ID.
4. Berikan Hak Akses Eksekusi
Berikan hak akses eksekusi pada skrip:
sudo chmod +x /usr/local/bin/ssh-login-notify-telegram.sh
5. Integrasikan dengan PAM
Edit file PAM untuk SSH (/etc/pam.d/sshd
):
sudo nano /etc/pam.d/sshd
Tambahkan baris berikut di akhir file:
session optional pam_exec.so /usr/local/bin/ssh-login-notify-telegram.sh
6. Restart Layanan SSH
Restart layanan SSH untuk menerapkan perubahan:
sudo systemctl restart sshd
7. Testing
- Lakukan login SSH ke server dari client lain.
- Telegram untuk memastikan notifikasi terkirim.
8. Catatan Tambahan
- Pastikan skrip memiliki hak akses yang tepat dan dapat dijalankan oleh sistem.
- Jika menggunakan Telegram, pastikan server memiliki akses internet untuk mengirim pesan.
- Kita dapat menyesuaikan pesan notifikasi sesuai kebutuhan.
Dengan langkah-langkah di atas, kita akan menerima notifikasi setiap kali ada login SSH yang sukses ke server.
Silakan dicoba, semoga bermanfaat. Kalau punya cara yang lebih efektif dan efisien, silakan tambahkan di kolom komentar ya.. Terima kasih.