Việc nhiều người dùng có quyền truy cập vào hệ thống là việc rất bình thường, mỗi người sử dụng một tài khoản khác nhau để thực hiện các nhiệm vụ khác nhau như deploy, tracelog, xử lý hệ thống, cấu hình, phần quyền bla blo các công việc khác nhau.
Hôm nay mình sẽ hướng dẫn các bạn sử dụng Telegram để cảnh báo khi có một người dùng đăng nhập(SSH) vào hệ thống Centos.
Bản chất để người quản trị hệ thống dễ dàng nhận biết được ai là người đang truy cập vào hệ thống để có hướng xử lý thuận tiện và nhanh chóng hơn.
Để thực hiện được bài viết này các bạn cần có:
- Tạo một con bot telegram, một group chat hoặc channel để bot gửi cảnh báo
- Một server Centos 7 để thực hành
Bước 1:
Trước tiên cần tạo một con Bot trên telegram, và IDchat của một group/ channel để gửi cảnh báo tới, ở bước này mình sẽ không hướng dẫn cách tạo chi tiết bot và cách lấy IDchat vì nó khá dễ
Bước 2:
Cài đặt JQ, mục đích là để bóc tách file JSON thông tin người truy cập tới bằng ipinfo.io
dùng command sau để cài đặt JQ:
yum install epel-release -y
yum install jq -y
Bước 3:
Tiếp theo là tạo một script ở trong thư mục /etc/profile.d/
để khi một người dùng đăng nhập vào hệ thống thì script sẽ được thực thi ngay lập tức.
vi /etc/profile.d/ssh-telegram.sh
chèn nội dung sau vào file script, nhớ replace token của bot và IDchat của bạn vào:
IDCHAT="<ID_CHAT>"
TOKEN="<BOT_TOKEN>"
TIMEOUT="10"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
DATE_EXEC="$(date "+%d %b %Y %H:%M")"
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=$IDCHAT" -d text="$TEXT" > /dev/null
#Xóa file temp khi script thực hiện xong
rm $TMPFILE
fi
Bước 4:
Cấp quyền xử lý cho script
chmod +x /etc/profile.d/ssh-telegram.sh
Sau đó thực hiện ssh lại vào server để kiểm tra kết quả:
Vậy là mình đã hướng dẫn xong cách tạo bot cảnh báo người dùng truy cập ssh vào hệ thống server của mình, qua đó có thể nhanh chóng có những hướng xử lý kịp thời.
Xem thêm các bài viết khác liên quan tại đây:
- Cách cấu hình SFTP trên môi trường Centos 7
- Câu chuyện phỏng vấn online mùa Covid
- Nói sao để được chào đón, làm thế nào để được ghi nhận
- Lập trình viên lúc rảnh rỗi thì nên làm gì?
- 13 Plugin không thể thiếu khi làm việc với IntellIJ IDEA
- Crack Intellij IDEA new versions 2021
- Crack IntellIJ để code như một senior
- Shortcut Intellij hữu ích để làm việc được hiệu quả hơn
- Build hệ thống Pub Sub dùng Hazelcast và Spring boot
- Build hệ thống Pub-Sub bằng Kafka+Spring boot (phần 3)
- Biết sử dụng git cherry-pick để làm việc hiệu quả hơn
- Git stash giúp bạn trở nên chuyên nghiệp như thế nào?
- Git revert với git reset hoạt động như thế nào
- Series tìm hiểu lập trình java
- Active Jrebel để code trong IntellIJ IDEA
- Tìm hiểu cơ chế hoạt động của Apache Kafka (phần 1)
- Tìm hiểu cơ chế hoạt động của Apache Kafka (phần 2)
- Elasticsearch là gì mà bá đạo đến vậy? [Phần 1]
- Cùng nhau tìm hiểu Docker
- Cài đặt Hazelcast trên server Centos 7
- Elasticsearch và Kibana dựng bằng Docker