Script #4: Script cảnh báo file lạ trên server Linux (Detect Strange Files Script)

30/12/2020

Việc các máy chủ bị hacker tấn công là việc thường xuyên xảy ra. Trong đó, có một lỗ hổng giúp hacker đẩy file mã độc vào máy chủ làm cho dịch vụ chạy theo hướng tiêu cực hoặc sai lệch, ….

Vì vậy, Onet sẽ chỉ các bạn một cách sử dụng script để giám sát và cảnh báo thì xuất hiện file là hay là bị mất file trong thư mục chạy dịch vụ của máy chủ.

MỤC LỤC
I. Mô hình lab
II. Kịch bản script
III. Script cảnh báo qua mail
IV. Script cảnh báo qua Telegram
V. Đặt crontab
VI. Kiểm tra kết quả

I. Mô hình

Máy chạy dịch vụ wordpress:

  • IP : 10.10.34.163/24
  • OS : CentOS-7
  • Thư mục root của wordpress: /var/www/html/
  • Đã cài dịch vụ gửi mail ssmtp (Nếu sử dụng mail để cảnh báo)

II. Kịch bản của script

  1. Ban đầu, ta sẽ tạo 1 file /opt/listPHP để lưu danh sách các file ban đầu của dịch vụ.
  2. Thêm 1 hoặc nhiều file vào thư mục /var/www/html/
  3. Khi script chạy sẽ lấy danh sách các file vào thời điểm đó lưu vào /opt/listPHP.temp và so sánh với danh sách file trước đó.
    • 3.1. Nếu danh sách các file không thay đổi thì dừng lại. Đồng thời ghi log /var/log/listPHP.log
    • 3.2. Nếu danh sách các file có sự khác nhau thì sẽ gửi cảnh báo về mail hoặc Telegram với tên các file khác nhau. Đồng thời ghi log vào /var/log/listPHP.log
  4. Sau khi kiểm tra và gửi cảnh báo (Nếu có khác nhau), script sẽ tiến hành lưu lại danh sách file hiện tại vào file /opt/listPHP và xóa file /opt/listPHP.temp.

III. Script cảnh báo qua mail

Tạo file script tại thư mục /opt

vi /opt/detect_strange_files.sh

Nội dung script:

#!/bin/bash  #~~~ SCRIPT DETECT STRANGE FILES WITH MAIL~~~#  DATE=$(date) IP=$(hostname -I) HOSTNAME=$(hostname -f) MAIL='[email protected]'  DIR='/var/www/html/' FILE_LIST='/opt/listPHP' TEMP_FILE='/opt/listPHP.temp' FILE_CHANGE=''  #-----------------------------------#  # Hàm kiểm tra thay đổi danh sách file f_check_change(){     ls $DIR > $TEMP_FILE      if diff $FILE_LIST $TEMP_FILE ; then         return 1     else         return 0     fi }  # Lấy danh sách file thay đổi f_get_file_change(){     cat $FILE_LIST >> $TEMP_FILE     FILE_CHANGE=$(sort $TEMP_FILE | uniq -u) }  # Gửi cảnh báo f_send_alert(){     # Nội dung cảnh báo     MESS=$(echo -e "Subject: Detect_Strange_FilennThời gian: $DATEnHostname: $HOSTNAME  IP:  $IPnDanh sách các file bị mất hoặc mới được thêm vào:n-------n$FILE_CHANGE")          echo "$MESS" | /usr/sbin/ssmtp $MAIL }  # Xóa bỏ file temp f_remove_temp(){     rm -f $TEMP_FILE }  #-----------------MAIN-----------------# main(){     if f_check_change; then         echo "$DATE error : Have strange file !!!!" >> /var/log/listPHP.log         f_get_file_change         f_send_alert         ls $DIR > $FILE_LIST     else         echo "$DATE OK" >> /var/log/listPHP.log     fi      f_remove_temp } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#  main exit

Cấp quyền thực thi:

chmod +x /opt/detect_strange_files.sh

Trong đó:

  • MAIL : email nhận cảnh báo
  • DIR : Thư mục chứa các file dịch vụ cần giám sát
  • FILE_LIST : File chứa danh sách các file trước lúc cảnh báo
  • TEMP_FILE : File tạm để chứa danh sách các file lúc cảnh báo và để xử lý lấy tên các file lạ
  • FILE_CHANGE : Danh sách các file lạ

IV. Script cảnh báo qua Telegram

Cách tạo bot và sử dụng bot Telegram để cảnh báo.

Tạo file script tại thư mục /opt

vi /opt/detect_strange_files_telegram.sh

Nội dung script

#!/bin/bash  #~~~ SCRIPT DETECT STRANGE FILES ~~~#  DATE=$(date) IP=$(hostname -I) HOSTNAME=$(hostname -f)  TOKEN="API_bot_Token" ID="ID chat" URL="https://api.telegram.org/bot$TOKEN/sendMessage"  DIR='/var/www/html/' FILE_LIST='/opt/listPHP' TEMP_FILE='/opt/listPHP.temp' FILE_CHANGE=''  #-----------------------------------#  f_check_change(){     ls $DIR > $TEMP_FILE      if diff $FILE_LIST $TEMP_FILE ; then         return 1     else         return 0     fi }  f_get_file_change(){     cat $FILE_LIST >> $TEMP_FILE     FILE_CHANGE=$(sort $TEMP_FILE | uniq -u) }  f_send_alert(){     # Nội dung cảnh báo     MESS=$(echo -e "Subject: Detect_Strange_FilennThời gian: $DATEnHostname: $HOSTNAME  IP:  $IPnDanh sách các file bị mất hoặc mới được thêm vào:n-------n$FILE_CHANGE")          curl -s -X POST $URL -d chat_id=$ID -d text="$MESS" }  f_remove_temp(){     rm -f $TEMP_FILE }  #-----------------------------------# main(){     if f_check_change; then         echo "$DATE error : Have strange file !!!!" >> /var/log/listPHP.log         f_get_file_change         f_send_alert         ls $DIR > $FILE_LIST     else         echo "$DATE OK" >> /var/log/listPHP.log     fi      f_remove_temp }  main exit

Cấp quyền thực thi:

chmod +x /opt/detect_strange_files_telegram.sh

Trong đó:

  • TOKEN : API Token của bot bạn sử dụng để bắn cảnh báo
  • ID : ID chat bạn nhận cảnh báo

V. Set Crontab

Đặt crontab 30 phút kiểm tra một lần:

crontab -e

Thêm dòng sau:

*/30 * * * * /opt/detect_strange_files.sh > /dev/null 2>&1 */30 * * * * /opt/detect_strange_files_telegram.sh > /dev/null 2>&1

Bạn có thể đặt thời gian ngắn để kiểm tra trước khi cho hoạt động chính thức.

VI. Kết quả

Thử thêm một file hacker.php vào thư mục /var/www/html/

touch /var/www/html/hacker.php

Đợi khi script chạy, ta sẽ nhận được cảnh báo ở mail ta sử dụng nhận cảnh báo tương tự như sau:

Hay khi cảnh báo qua Telegram:

Kiểm tra log trên máy chủ

tail -f /var/log/listPHP.log

Ta sẽ thấy log tương tự như sau:

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

Chuỗi bài viết về script của Onet.

Tham khảo: https://ixnfo.com/en/script-for-email-notifications-when-detecting-prohibited-files.html

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

CLI #2: Giới thiệu lệnh sysbench để benchmark hệ thống

Hôm nay Onet sẽ giới thiệu đến các bạn một công cụ dùng để benchmark hệ thống Linux (CPU, File...
30/12/2020

Hướng dẫn cài đặt VestaCP trên máy chủ Cloud Server

VestaCP là một Bảng điều khiển (Control Panel) rất chuyên nghiệp, dễ sử dụng với giao diện trực...
25/12/2020

Hướng dẫn sử dụng Wireshark cơ bản

Wireshark là một chương trình phần mềm phân tích giao thức mạng nguồn mở do Gerald Combs khởi xướng...
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