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 4] – Hướng dẫn tích hợp Moodle với LDAP để xác thực

Ở các bài viết trước Onet đã có những bài viết chia sẻ về cách cài đặt Moodle và cài đặt...
30/12/2020

MegaCLI Cheatsheet

Megaraid CLI hay còn được gọi tắt MegaCLI là một công cụ thao tác trên dòng lệnh command line nhằm...
30/12/2020

Openstack Kolla [Phần 1] Hướng dẫn cài đặt Openstack Train all-in-one bằng Kolla Ansible

Openstack Kolla là Project hay công cụ sử dụng để triển khai, vận hành Openstack. Kolla được phát hành...
30/12/2020