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

[Rsyslog] [ApacheLog] [LAB] [Phần 2] Hướng dẫn cấu hình đẩy Log Apache về Ryslog Server

Tiếp nối phần 1, ở phần 2 mình sẽ hướng dẫn 2 cách đẩy Log Apache về Server Log tập trung. ...
30/12/2020

[CI/CD] Phần 1: Hướng dẫn cài đặt Gitlab trên CentOS 7

Gitlab là một mã nguồn mở của máy chủ Git để quản lý mã nguồn dự án được sử dụng rộng...
30/12/2020

Cách sử dụng Fail2ban để bảo mật máy chủ CentOS

Mục lục Giới thiệu Cài đặt và cấu hình Giám sát cấu hình firewall và nhật ký Fail2ban Giám...
30/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

SỰ KHÁC BIỆT GIỮA RESIDENTIAL PROXY VÀ PROXY DATACENTER
17/02/2024

Mua Proxy v6 US Private chạy PRE, Face, Insta, Gmail
07/01/2024

Mua shadowsocks và hướng dẫn sữ dụng trên window
05/01/2024

Tại sao Proxy Socks lại được ưa chuộng hơn Proxy HTTP?
04/01/2024

Mua thuê proxy v4 nuôi zalo chất lượng cao, kinh nghiệm tránh quét tài khoản zalo
02/01/2024