- Published on
Cảnh báo khi người dùng login bằng cách dùng script trong /etc/profile.d
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
🔐 Cảnh báo khi người dùng login bằng cách dùng script trong /etc/profile.d
Đây là cách đơn giản – nhanh chóng – không cần thay đổi PAM để thiết lập cảnh báo mỗi khi có người dùng login bằng shell (qua SSH hoặc console).
📑 Mục Lục
- Tổng quan ý tưởng
- Chuẩn bị Telegram bot
- Viết script cảnh báo
- Đặt script vào /etc/profile.d
- Mô hình hoạt động
- Kiểm thử kết quả
🧠 Tổng quan ý tưởng
- Mỗi khi người dùng login shell, Linux sẽ thực thi các script trong
/etc/profile.d/
. - Ta viết một shell script gửi thông báo đến Telegram bot mỗi lần login.
- Gửi thông tin: username, IP, hostname, thời gian.
📨 1. Tạo Telegram bot & lấy chat ID
Bước 1: Tạo bot với @BotFather
- Gõ
/newbot
- Lấy token trả về (ví dụ
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
)
Bước 2: Gửi tin nhắn bất kỳ tới bot
- Sau đó mở:
https://api.telegram.org/bot<token>/getUpdates
- Lấy
chat_id
từ JSON trả về
📜 2. Tạo script gửi cảnh báo
Tạo file /etc/profile.d/login_alert.sh
:
#!/bin/bash
USER=$(whoami)
IP=$(who | grep $USER | awk '{print $5}' | tr -d '()')
HOST=$(hostname)
TIME=$(date "+%Y-%m-%d %H:%M:%S")
TOKEN="YOUR_TELEGRAM_BOT_TOKEN"
CHAT_ID="YOUR_CHAT_ID"
# Lấy thông tin vị trí địa lý từ IP (ipinfo.io)
GEO_INFO=$(curl -s "https://ipinfo.io/$IP/json")
CITY=$(echo "$GEO_INFO" | jq -r '.city')
REGION=$(echo "$GEO_INFO" | jq -r '.region')
COUNTRY=$(echo "$GEO_INFO" | jq -r '.country')
ORG=$(echo "$GEO_INFO" | jq -r '.org')
MESSAGE="⚠️ SSH Login Alert
👤 User: $USER
📍 Host: $HOST
🌐 IP: $IP
📅 Time: $TIME
📌 Location: $CITY, $REGION, $COUNTRY
🏢 ISP: $ORG"
# Gửi về Telegram
curl -s -X POST https://api.telegram.org/bot$TOKEN/sendMessage \
-d chat_id="$CHAT_ID" \
-d text="$MESSAGE"
Thay
YOUR_TELEGRAM_BOT_TOKEN
vàYOUR_CHAT_ID
bằng giá trị thực tế.
📂 3. Đặt script vào /etc/profile.d
sudo chmod +x /etc/profile.d/login_alert.sh
- Script sẽ tự chạy khi user login shell
- Áp dụng cho mọi user dùng bash/zsh/sh
📦 4. Mô hình hoạt động
[User SSH Login]
↓
/etc/profile.d/login_alert.sh
↓
curl gửi tin nhắn đến Telegram Bot API
↓
[Telegram của Admin]
🔬 5. Kiểm thử
- SSH từ máy khác vào server:
ssh user@your-server-ip
- Kiểm tra xem Telegram đã nhận thông báo chưa.
📚 Tài liệu tham khảo
- https://core.telegram.org/bots
- https://man7.org/linux/man-pages/man5/profile.5.html
- https://tldp.org/LDP/Bash-Beginners-Guide/html/
Việc thêm script cảnh báo vào /etc/profile.d
là cách dễ dàng giúp bạn kiểm soát truy cập shell – đặc biệt quan trọng với server sản xuất hoặc môi trường DevOps cần kiểm soát an toàn.