✅ সম্পূর্ণ স্ক্র্যাচ থেকে Gmail Alert-Based SSH & Firewall Security System
🧱 আপনি যা পাবেন:
| কাজ | ফলাফল |
|---|---|
| 🔐 সফল SSH লগইন হলে | Gmail-এ ইমেইল |
| ❌ ব্যর্থ SSH লগইন হলে | Gmail-এ ইমেইল |
| 🔥 Firewall (UFW) ব্লক হলে | Gmail-এ ইমেইল |
| 📊 সাপ্তাহিক রিপোর্ট | Gmail-এ Login Summary |
🔰 PART 0: Gmail SMTP Relay পূর্ণ সেটআপ
🧪 Step 0.1: Gmail App Password তৈরি
- https://myaccount.google.com/security এ যান
- 2-Step Verification চালু করুন
- নিচে যান: “App passwords”
- App:
Mail, Device:Linux VPS, ক্লিক করুন → একটা 16-character password পাবেন
➡️ এটিকে কপি করে আলাদা কোথাও সেভ করে রাখুন। এটি দিয়েই VPS থেকে Gmail SMTP চালাব।
🛠️ Step 0.2: Mailutils ও Postfix ইনস্টল করুন
sudo apt update && sudo apt install mailutils postfix -y
➡️ যখন “mail configuration” আসবে, Internet Site নির্বাচন করুন।
🛠️ Step 0.3: Gmail SMTP কনফিগার করুন
sudo nano /etc/postfix/main.cf
শেষে এই লাইনগুলো যোগ করুন:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
🛠️ Step 0.4: Gmail অ্যাকাউন্ট ও App Password যোগ করুন
sudo nano /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 yourgmail@gmail.com:your_app_password
✅ Save করুন → তারপর:
sudo postmap /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo systemctl restart postfix
✅ টেস্ট করুন:
echo "Test Email from Server" | mail -s "Test Email" yourgmail@gmail.com
🎉 Gmail-এ পেলে পরের ধাপে যান।
🔐 PART 1: সফল SSH Login হলে Gmail-এ ইমেইল
🛠️ Step 1.1: PAM স্ক্রিপ্ট তৈরি
sudo nano /usr/local/bin/login-notify.sh
#!/bin/bash
IP=$(echo $SSH_CONNECTION | awk '{print $1}')
HOST=$(hostname)
USER=$(whoami)
DATE=$(date)
echo -e "✅ SSH Login Alert:\nUser: $USER\nIP: $IP\nDate: $DATE\nHost: $HOST" \
| mail -s "🔐 SSH Login to $HOST" yourgmail@gmail.com
sudo chmod +x /usr/local/bin/login-notify.sh
🛠️ Step 1.2: PAM হুক করুন
sudo nano /etc/pam.d/sshd
সবচেয়ে নিচে যোগ করুন:
session optional pam_exec.so /usr/local/bin/login-notify.sh
🔁 Step 1.3: SSH Restart করুন
sudo systemctl restart ssh
🧪 এখন অন্য টার্মিনাল দিয়ে login করলেই Gmail এ ইমেইল পাবেন!
❌ PART 2: ব্যর্থ SSH Login হলে Gmail Alert
🛠️ Step 2.1: Script তৈরি করুন
sudo nano /usr/local/bin/failed-login-alert.sh
#!/bin/bash
EMAIL="yourgmail@gmail.com"
LOGFILE="/var/log/auth.log"
LAST=$(tail -n 10 $LOGFILE | grep "Failed password")
if [[ ! -z "$LAST" ]]; then
echo -e "❌ SSH Failed Login Attempt:\n\n$LAST" | mail -s "🚨 SSH Failed Login Detected" $EMAIL
fi
sudo chmod +x /usr/local/bin/failed-login-alert.sh
🛠️ Step 2.2: Cron Job দিয়ে প্রতি ২ মিনিটে চেক করান
sudo crontab -e
*/2 * * * * /usr/local/bin/failed-login-alert.sh
🔥 PART 3: Firewall Block হলে Gmail Alert
🛠️ Step 3.1: Firewall Logging চালু
sudo ufw logging on
🛠️ Step 3.2: Firewall Alert Script
sudo nano /usr/local/bin/firewall-alert.sh
#!/bin/bash
EMAIL="yourgmail@gmail.com"
LOGFILE="/var/log/ufw.log"
ALERT=$(tail -n 20 $LOGFILE | grep "BLOCK")
if [[ ! -z "$ALERT" ]]; then
echo -e "🔥 UFW Firewall Blocked Traffic:\n\n$ALERT" | mail -s "🔥 UFW Alert from $(hostname)" $EMAIL
fi
sudo chmod +x /usr/local/bin/firewall-alert.sh
🛠️ Step 3.3: Cron Job প্রতি ৫ মিনিটে
sudo crontab -e
*/5 * * * * /usr/local/bin/firewall-alert.sh
📊 PART 4: সাপ্তাহিক SSH Summary রিপোর্ট
🛠️ Step 4.1: রিপোর্ট স্ক্রিপ্ট
sudo nano /usr/local/bin/ssh-weekly-report.sh
#!/bin/bash
EMAIL="yourgmail@gmail.com"
HOST=$(hostname)
SUCCESS=$(grep "Accepted password" /var/log/auth.log | wc -l)
FAILED=$(grep "Failed password" /var/log/auth.log | wc -l)
TOP_IPS=$(grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -5)
echo -e "📊 Weekly SSH Summary ($HOST)\n\n✅ Success: $SUCCESS\n❌ Failed: $FAILED\n\nTop Failed IPs:\n$TOP_IPS" \
| mail -s "📈 Weekly Report - $HOST" $EMAIL
sudo chmod +x /usr/local/bin/ssh-weekly-report.sh
🛠️ Step 4.2: প্রতি সোমবার সকাল ৭টায় চালান
sudo crontab -e
0 7 * * 1 /usr/local/bin/ssh-weekly-report.sh
✅ আপনার সার্ভার এখন প্রস্তুত:
| Security Feature | Active |
|---|---|
| Gmail SMTP Config | ✅ |
| PAM SSH Login Alert | ✅ |
| Failed Login Detection | ✅ |
| Firewall Alert | ✅ |
| Weekly Summary Report | ✅ |