Hướng dẫn tạo BOT cảnh báo truy cập SSH qua Telegram.

by Lê Thạch

Chào các bạn, trong bài viết lần này Blog Lê Thạch sẽ hướng dẫn cho toàn thể anh em, bạn bè gần xa biết về cách tạo một con BOT đơn giản trên Telegram để có thể đưa ra các cảnh báo giám sát lượt truy cập Server thông qua SSH.

Như các bạn biết, SSH (Secure Socket Shell) là giao thức đăng nhập vào server từ xa, cho phép người dùng kiểm soát, chỉnh sửa và quản trị dữ liệu của server/vps thông qua nền tảng Internet. Nói cách khác, khi bạn đã truy cập được vào Server thì bạn sẽ có quyền quản trị máy chủ này. Vậy để giám sát việc đăng nhập vào Server qua SSH, bạn cần phải có một công cụ để thực hiện việc đó. Giải pháp đơn giản của mình là sử dụng BOT của Telegram. Đây cũng là một ứng dụng chat mà mình thường xuyên sử dụng để trao đổi công việc, do đó việc nhận được cảnh báo qua ứng dụng này một điều rất tiện cho bản thân mình.

Để thực hiện các bạn hãy theo dõi bài viết dưới đây cùa mình nhé ^^.

1. Chuẩn bị

  • Sử dụng quyền root của Server
  • IP public hoặc private để có thể kết nối Internet ra ngoài.
  • Tài khoản Telegram để tạo 1 con BOT.
  • Một script, mình sẽ cung cấp script mẫu ở phía dưới bài viết.

2. Cài đặt jq

jq là một ứng dụng để đọc file JSON trên Linux. Để tìm hiểu thêm về nó bạn có thể xem thêm thông tin tại đây.

  • Trên Unbutu, các bạn gõ lệnh sau:
apt-get -y install jq

Đối với những bạn sử dụng CentOS, chúng ta có thể dùng lệnh sau để cài đặt:

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

3. Tạo BOT trên Telegram

  • Tại khung Search của Telegram, bạn tìm BotFather (Bạn sẽ thấy BotFather có tích xanh).
  • Để tạo 1 BOT mới, các bạn nhập /newbot vào khung chat của BotFather.
  • Đặt tên cho con BOT. Ở đây mình nhập một tên bất kỳ là VPS_LeThach.
  • Đặt username cho BOT của bạn và kết thúc sẽ có tiền tố _bot nhé. Ví dụ user Bot của mình là lethach_bot

Quá trình tạo BOT sẽ được diễn ra như sau:

Kiểm tra mã TOKEN. Để kiểm tra bạn truy cập link sau và thay TOKEN bằng mã TOKEN của bạn vào.

  • https://api.telegram.org/bot<TOKEN>/getMe

Khi đã có BOT rồi, bạn cần phải biết ID của con BOT đó để có thể cấu hình nhận cảnh báo. Cũng tại khung Search bạn nhập vào @myidbot sẽ thấy hình ảnh như phía dưới.

4. Tạo Script cảnh báo

Bạn hãy tạo file script tại thư mục /etc/profile.d/. Để khi đăng nhập vào hệ thống thì script sẽ thực hiện ngay lập tức.

Tạo file bash script ssh-telegram.sh bằng công cụ Vim:

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

Các bạn dán nội dung sau vào file ssh-telegram.sh vừa tạo. Hãy nhớ thay ID chat và API Token vừa tạo vào nơi mình gạch đỏ như ở dưới hình ảnh.

# ID chat Telegram
USERID="<target_user_id>"

# API Token bot
TOKEN="<bot_private_TOKEN>"

TIMEOUT="10"

# URL gửi tin nhắn của bot
URL="https://api.telegram.org/bot$TOKEN/sendMessage"

# Thời gian hệ thống
DATE_EXEC="$(date "+%d %b %Y %H:%M")"

# File temp
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=$USERID" -d text="$TEXT" > /dev/null

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

Bạn lưu lại nội dung script vừa tạo và cấp quyền thực thi cho script bằng lệnh sau.

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

Bây giờ việc cuối cùng là bạn hãy thử đăng nhập SSH vào Server trên xem thử. Ta sẽ thấy có cảnh báo từ Telegram tương tự như sau:

5. Lời kết

Bài viết của mình tới đây là kết thúc rồi, như vậy mình đã hướng dẫn các bạn thực hiện tạo một con BOT cảnh báo việc đăng nhập Server thông qua giao thức SSH. Sau này các bạn có thể yên tâm hơn về vấn đề đăng nhập SSH trái phép vào máy chủ của mình, nó sẽ giúp cho bạn quản lý chặt chẽ hơn để tránh các trường hợp đăng nhập trái phép mà bạn không biết trước được. Nếu bạn có bất kỳ thắc mắc nào liên quan tới bài viết này thì hãy comment vào phía dưới bài viết. Cảm ơn các bạn đã theo dõi bài viết, hẹn gặp lại các bạn ở những bài viết tiếp theo!

TÀI LIỆU THAM KHẢO:

[1] https://dotrungquan.info/huong-dan-thiet-lap-zabbix-canh-bao-qua-telegram 
[2] https://news.cloud365.vn/script-3-giam-sat-truy-cap-ssh-vao-he-thong

Bài viết liên quan

1 bình luận

Mẫn Nhi 16 Tháng Ba, 2024 - 4:46 chiều

Hay quá, cảm ơn bạn

Trả lời

Thêm bình luận