Khi quản lý một máy chủ hoặc hệ thống, việc theo dõi các hoạt động SSH là một phần quan trọng để bảo đảm an ninh và kiểm soát truy cập. Để giúp bạn tự động hóa quá trình này, chúng tôi đã phát triển một script đơn giản để cảnh báo qua Telegram khi có người truy cập vào máy chủ thông qua SSH. Bằng cách kết hợp với việc truy vấn thông tin về địa chỉ IP của người truy cập, script này cung cấp cho bạn cái nhìn tổng quan về thiết bị máy tính và địa điểm từng người truy cập.
Trong bài viết này, chúng tôi sẽ giới thiệu script được viết bằng bash shell để thực hiện cảnh báo qua Telegram khi có người SSH vào máy chủ.
Hãy tiếp tục đọc để tìm hiểu cách triển khai và cấu hình các script này, đồng thời tận dụng khả năng cung cấp thông tin chi tiết về người truy cập SSH và máy tính từ địa chỉ IP.
Yêu cầu:
- ID bot Telegram hoặc ID Group Telegram
- Token Telegram
Đối với các điều kiện trên bạn có thể search các tài liệu ở Google để tạo nhanh chóng.
Bước 1: Cài đặt ứng dụng bổ sung
Trước khi sử dụng script này, bạn cần cài đặt một số công cụ như, curl
và jq
.
- Đối với Rhel/CentOS
yum install epel-release -y
yum install jq -y
- Đối với Ubuntu/Debian
apt-get -y install jq
Bước 2: Tạo script cảnh báo SSH về Telegram
Bạn SSH vào máy chủ và tạo một file sau
vi /etc/profile.d/alert_ssh_telegram.sh
Sau đó copy đoạn script sau dán vào file alert_ssh_telegram.sh
. Và trong script này bạn cần sửa lại 2 dòng sau
- USERID=””: Nhập vào ID bot hoặc ID Group Telegram
- KEY=””: Nhập vào mã Token của Telegram
#!/bin/bash
# Author: QuantriVPS.com
USERID="XXXXX"
KEY="YYYYY"
TIMEOUT="10"
URL="https://api.telegram.org/bot$KEY/sendMessage"
DATE_EXEC="$(date "+%d %b %Y %H:%M")"
TMPFILE='/tmp/ipinfo-$DATE_EXEC.txt'
if [ -n "$SSH_CLIENT" ]; then
IP=$(echo $SSH_CLIENT | awk '{print $1}')
PORT=$(echo $SSH_CLIENT | awk '{print $3}')
HOSTNAME=$(hostname -f)
IPADDR=$(hostname -I | awk '{print $1}')
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')
TEXT="🆘🆘🆘🆘 $DATE_EXEC: ${USER} logged in to $HOSTNAME ($IPADDR) from $IP - $ORG - $CITY, $REGION, $COUNTRY on port $PORT"
curl -s --max-time $TIMEOUT -d "chat_id=$USERID&disable_web_page_preview=1&text=$TEXT" $URL > /dev/null
rm $TMPFILE
fi
Bây giờ phân quyền thực thi cho file
chmod +x /etc/profile.d/alert_ssh_telegram.sh
Bây giờ mọi phiên SSH vào Server đều được cảnh báo về Telegram. Điều này giúp bạn giám sát máy chủ được chặt chẽ hơn. Và bên dưới là kết quả sau khi tôi thực hiện.