NỘI DUNG
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.
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é.
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.
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. 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, từ đó 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.
- Tài liệu tham khảo: https://gist.github.com/matriphe/9a51169508f266d97313