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
Ubuntu
apt-get -y install jq
CentOS
yum install epel-release -y
yum install jq -y
Bước 2: Tạo script cảnh báo
Tạo file cảnh báo
vi /etc/profile.d/telegram.sh
Sau đó nhập vào nội dung sau
USERID="<chat_id>"
KEY="<bot_token>"
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
Cấp quyền thực thi cho file
chmod +x /etc/profile.d/telegram.sh
Bên dưới là kết quả thực hiện.