Trang chủ Thủ thuật Hướng dẫn tạo BOT giám sát truy cập SSH thông qua ứng...

Hướng dẫn tạo BOT giám sát truy cập SSH thông qua ứng dụng Telegram

78
0
Chia sẻ
AZDIGI Hosting Số 1 Việt Nam

Như các bạn cũng biết, SSH là một giao thức truy cập quản lý máy chủ server/vps, khi bạn đã truy cập được vào VPS thì sẽ toàn quyền quản trị máy chủ này, vậy để giám sát việc đăng nhập SSH này cần có một công cụ để thực hiện giám sát, và ở bài viết này mình sẽ hướng dẫn bạn thực hiện giám sát thông qua ứng dụng Telegram, một công cụ chat mà mình sử dụng thường xuyên để trao đổi công việc do đó việc nhận được cảnh báo đăng nhập SSH qua ứng dụng này rất tiện cho mình.

Để làm được cảnh báo này bạn cần thực hiện như sau.

  • Sử dụng quyền root để thực hiện
  • IP public, hoặc private có thể internet ra ngoài
  • Tài khoản Telegram để làm một con BOT(sử dụng ID và Token)
  • Một script, mình sẽ để script bên dưới.

Bước 1: Cài đặt jq

jq là một ứng dụng để  đọc thông tin file JSON trên linux. Để tìm hiểu bạn có thể truy cập link sau để  xem thông tin và các phiên bản của jq.

Cài đặt js trên CentOS

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

Cài đặt js trên Ubuntu

apt-get -y install jq

Bước 2: Tạo bot telegram

Nếu bạn đã có BOT rồi có thể bỏ qua bước này và thực hiện luôn bước 3 để tạo script cảnh báo.

Hướng dẫn tạo BOT.

  • Tại ô Search của Telegram chọn BotFather
  • Chat /newbot vào khung chat với BotFather
  • Nhập tên cho bot. Ở đây mình chọn là botcuaquan_bot
  • Chọn username cho bot. Ở đây mình chọn là botcuaquan_bot

P/s: Do mình đã có sẳn một con bot rồi, nên mình sẽ dùng con cũ, ảnh bên dưới mình vẫn hướng dẫn bạn tạo một con mới.

tao bot telegram

tao bot telegram

Sau khi đã có được API, bước tiếp theo bạn cần lấy ID chat bằng cách truy cập vào link sau để lấy ID.

Bạn mở khung chat xong, bạn nhập vàp /my_id sẽ hiện ra ID chat cho bạn.

Bạn đã có API TOKEN và ID CHAT, hãy thực hiện bước 3 và viết 1 script nhận cảnh báo nhé.

get id bot

Bước 3: Tạo script

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 script ssh-telegram.sh:

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

Dán nội dung sau vào file ssh-telegram.sh. Hãy nhớ thay vào ID chat vào API TOKEN vừa tạo vào nơi minh bôi màu đỏ.

# 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 save lại nội dung script vừa tạo và hãy cấp quyền thực thi cho script vừa tạo bằng lệnh sau.

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

Bây giờ bạn hãy thử đăng nhập SSH vào máy chủ trên đi nào, bạn sẽ nhận được cảnh báo từ BOT vừa tạo như ảnh sau.

dotrungquan 2020 07 21 at

Như vậy là mình vừa hướng dẫn bạn thực hiện một con BOT cảnh báo  việc đăng nhập SSH thành công. Như vậy bạn có thể an tâm về vấn đề đăng nhập SSH trái phép vào máy chủ của mình, giúp bạn quản lý được chặt chẽ hơn và có thể ngăn chặn kịp lúc việc đăng nhập SSH  trái phép.

 

 

Khi bạn nói chưa biết cuộc chơi vẫn còn. Khi bạn nói không biết cuộc chơi sẽ kết thúc.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây