Script #3 : Giám sát truy cập ssh vào hệ thống

30/12/2020

Để quản lý việc đăng nhập vào hệ thống, ta cần có những cảnh báo khi có người đăng nhập thành công vào hệ thống.

Giải pháp đơn giản là ta sẽ sử dụng bot của Telegram để gửi cảnh báo qua một kênh Telegram.

Chuẩn bị

  • Máy chủ với IP public (hoặc IP private có thể ra ngoài internet)
  • Có kết nối internet
  • Đã có tài khoản Telegram
  • Thao tác với user root

Thực hiện

1. Tạo bot telegram

Nếu bạn đã có bot Telegram thì có thể sử dụng luôn.

Tham khảo cách tạo bot telegram tại đây.

Sau khi tạo bot xong, ta sẽ lưu lại 2 thông số sau để sử dụng trong script:

  • Bot API token.
  • ID chat mà bạn muốn bot gửi cảnh báo.

2. Cài đặt jq

jq là ứng dụng để đọc thông tin file JSON trên Linux.

Xem thêm thông tin và cách sử dụng jq tại : https://stedolan.github.io/jq/

Trên Ubuntu

apt-get -y install jq

Trên CentOS 7

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

3. Tạo file script

Ta sẽ 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

Nội dung script:

# 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_EXECnUser: ${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 

Cấp quyền thực thi:

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

Lưu ý: USERID và TOKEN sẽ là ID chat và API token của bot Telegram của bạn.

Kiểm tra

Tiến hành ssh vào server. Ta sẽ thấy cảnh báo từ Telegram tương tự như sau:

Chúc các bạn thành công!

Chuỗi bài viết về script.

Tham khảo: https://gist.github.com/matriphe/9a51169508f266d97313

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Moodle [Part 7] – Hướng dẫn tạo bài học và thêm các nội dung vào bài học trên Moodle

Tiếp tục series hướng dẫn sử dụng Moodle. Trong bài viết này, Onet sẽ hướng dẫn bạn tạo bài...
30/12/2020

Performance Testing [Phần 3] Hướng dẫn sử dụng Gatling Recoder

Gatling Recorder hỗ trợ người dùng sinh ra kịch bản test nhanh chóng bằng cách thu thập các request HTTP...
30/12/2020

Moodle [Part 8] – Hướng dẫn tạo bài kiểm tra, bài thi trên Moodle

Tiếp tục series hướng dẫn sử dụng Moodle. Trong bài viết này, Onet sẽ hướng dẫn bạn tạo bài...
30/12/2020