Blog chia sẻ về công nghệ ...
Published on

Cảnh báo khi người dùng login bằng cách dùng script trong /etc/profile.d

Authors

🔐 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

  1. Tổng quan ý tưởng
  2. Chuẩn bị Telegram bot
  3. Viết script cảnh báo
  4. Đặt script vào /etc/profile.d
  5. Mô hình hoạt động
  6. 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

  • /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_TOKENYOUR_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


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.