Việc nhiều người dùng có quyền truy cập vào hệ thống là việc rất bình thường, mỗi người sử dụng một tài khoản khác nhau để thực hiện các nhiệm vụ khác nhau như deploy, tracelog, xử lý hệ thống, cấu hình, phần quyền bla blo các công việc khác nhau.

Hôm nay mình sẽ hướng dẫn các bạn sử dụng Telegram để cảnh báo khi có một người dùng đăng nhập(SSH) vào hệ thống Centos.

Bản chất để người quản trị hệ thống dễ dàng nhận biết được ai là người đang truy cập vào hệ thống để có hướng xử lý thuận tiện và nhanh chóng hơn.

Để thực hiện được bài viết này các bạn cần có:

  • Tạo một con bot telegram, một group chat hoặc channel để bot gửi cảnh báo
  • Một server Centos 7 để thực hành

Bước 1: Trước tiên cần tạo một con Bot trên telegram, và IDchat của một group/ channel để gửi cảnh báo tới, ở bước này mình sẽ không hướng dẫn cách tạo chi tiết bot và cách lấy IDchat vì nó khá dễ

Bước 2:Cài đặt JQ, mục đích là để bóc tách file JSON thông tin người truy cập tới bằng ipinfo.io

dùng command sau để cài đặt JQ:

yum install epel-release -y
yum install jq -y

Bước 3: Tiếp theo là tạo một script ở trong thư mục /etc/profile.d/ để khi một người dùng đăng nhập vào hệ thống thì script sẽ được thực thi ngay lập tức.

vi /etc/profile.d/ssh-telegram.sh

chèn nội dung sau vào file script, nhớ replace token của bot và IDchat của bạn vào:

IDCHAT="<ID_CHAT>"
TOKEN="<BOT_TOKEN>"
TIMEOUT="10"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
DATE_EXEC="$(date "+%d %b %Y %H:%M")"

TMPFILE='/tmp/ipinfo.txt'

if [ -n "$SSH_CLIENT" ]; then
    IP=$(echo $SSH_CLIENT | awk '{print $1}')
    PORT=$(echo $SSH_CLIENT | awk '{print $3}')
    HOSTNAME=$(hostname -f)
    IPADDR=$(echo $SSH_CONNECTION | awk '{print $3}')

    #Lấy các thông tin từ IP người truy cập theo trang ipinfo.io
    curl http://ipinfo.io/$IP -s -o $TMPFILE
    CITY=$(cat $TMPFILE | jq '.city' | sed 's/"//g')
    REGION=$(cat $TMPFILE | jq '.region' | sed 's/"//g')
    COUNTRY=$(cat $TMPFILE | jq '.country' | sed 's/"//g')
    ORG=$(cat $TMPFILE | jq '.org' | sed 's/"//g')

    #Nội dung cảnh báo
    TEXT=$(echo -e "Thời gian: $DATE_EXEC\nUser: ${USER} logged in to $HOSTNAME($IPADDR) \nFrom $IP - $ORG - $CITY, $REGION, $COUNTRY on port $PORT")

    #Gửi cảnh báo
    curl -s -X POST --max-time $TIMEOUT $URL -d "chat_id=$IDCHAT" -d text="$TEXT" > /dev/null

    #Xóa file temp khi script thực hiện xong
    rm $TMPFILE
fi

Bước 4: Cấp quyền xử lý cho script

chmod +x /etc/profile.d/ssh-telegram.sh

Sau đó thực hiện ssh lại vào server để kiểm tra kết quả:

Vậy là mình đã hướng dẫn xong cách tạo bot cảnh báo người dùng truy cập ssh vào hệ thống server của mình, qua đó có thể nhanh chóng có những hướng xử lý kịp thời.