Script #1 : File Integrity Monitor (FIM) – Giám sát sự thay đổi của file trên Linux

30/12/2020

Khi sử dụng một máy chủ, ta cần theo dõi tính toàn vẹn của file. Khi file bị thay đổi ta cần được cảnh báo để có giải pháp xử lý.

Thông thường, ta sẽ có các máy chủ thực hiện giám sát. Tuy nhiên, ta không cần thiết phải cài đặt hệ thống giám sát nếu như chỉ để thực hiện việc này.

Trong bài viết này, Onet sẽ giới thiệu giải pháp đơn giản sử dụng script với Crontab để thực hiện việc cảnh báo.

MỤC LỤC
Đặt vấn đề
1. Sử dụng md5sum kiểm tra file
2. Hướng dẫn tạo script để cảnh báo bằng email sự thay đổi của file
3. Hướng dẫn tạo script để cảnh báo qua Telegram

Đặt vấn đề

Việc giám sát sự thay đổi của file thực sự quan trọng. Ví dụ, hệ thống của bạn đang chạy một dịch vụ web và hacker tấn công và thay đổi file index.php để redirect sang trang web khác.

Khi đó, ta sẽ có một số câu hỏi đặt ra như: hacker đã làm thế nào, thời điểm bị tấn công, …. Thì việc sử dụng một giải pháp giám sát file sẽ giúp bạn biết được file nào đã bị thay đổi và thời điểm đã bị thay đổi.

Một số file quan trọng nên giám sát trên hệ thống:

  • File user hệ thống : /etc/passwd
  • File lưu thông tin user và password của hệ thống: /etc/shadow
  • Các file cấu hình dịch vụ

1. Sử dụng md5sum để kiểm tra sự thay đổi của file

Mỗi file đều có một giá trị hash gồm 32 ký tự (128 bits).

Ví dụ: file1.txt

Hello! I'm Onet.

Ta sẽ kiểm tra mã md5 của file1.txt

md5sum file1.txt 481e81caeaac9019b9feb2c45ccea2c4  file1.txt

Ta thử thay đổi nội dung của file thành:

Hi! I am Onet.

Kiểm tra lại mã md5:

md5sum file1.txt c13f6dc26687f17da94114bf1b8ec355  file1.txt

Ta thấy : giá trị hash của file đã thay đổi khi ta có thay đổi về file.

2. Cảnh báo qua email

Yêu cầu của ví dụ:

Thực hiện:

1. Cài đặt dịch vụ gửi mail SSMTP

2. Tạo một file để lưu mã hash của file /etc/passwd

touch /opt/passwd.md5

3. Tạo script

Vị trí để file trong bài viết này, ta để tại /opt/scripts/checkuser.sh. Và mỗi lần script chạy, ta sẽ ghi lại log tại /var/log/checkuser.log

#!/bin/bash DATE=$(date "+%d %b %Y %H:%M") MAIL="youremail@gmail.com"  if md5sum -c /opt/passwd.md5; then         echo "$DATE : OK"  >> /var/log/checkuser.log else         (echo "Subject:File changed"; echo "File /etc/passwd changed on $HOSTNAME!";) | /usr/sbin/sendmail $MAIL         md5sum /etc/passwd > /opt/passwd.md5         echo "$DATE : error : File /etc/passwd changed" >> /var/log/checkuser.log fi

Trong đó: MAIL sẽ là biến lưu địa chỉ mail bạn muốn nhận cảnh báo

4. Phân quyền cho file script

chmod +x /opt/scripts/checkuser.sh

5. Đặt crontab

crontab -e

Thêm cronjob thực hiện chạy file script kiểm tra 30 phút 1 lần

*/30 * * * * /opt/scripts/checkuser.sh > /dev/null 2>&1

6. Kiểm tra

File /etc/passwd sẽ thay đổi khi ta thêm hoặc xóa user. Ta sẽ thử thêm user vào hệ thống:

useradd Onet

Ta có thể chạy trực tiếp bằng cách chạy file script. Hoặc đặt crontab khoảng thời gian ngắn khoảng 2, 3 phút để kiểm tra. Sau đó, ta sẽ nhận được một email cảnh báo sự thay đổi của file tương tự như sau:

Kiểm tra file log, ta cũng sẽ thấy quá trình chạy script được ghi lại.

tail -f /var/log/checkuser.log

3. Cảnh báo qua telegram

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

Tương tự như cảnh báo qua mail. Ta sẽ sử dụng bot Telegram để bắn cảnh báo.

Nội dung script:

#!/bin/bash DATE=$(date "+%d %b %Y %H:%M") TOKEN="<token_IP_Telegram_bot>" ID="<ID_chat>" URL="https://api.telegram.org/bot$TOKEN/sendMessage" IP=$(hostname -I)  if md5sum -c /root/passwd.md5 ; then     echo "$DATE : OK" >> /var/log/checkuser.log else     MESS=$(echo -e "$DATE nIP $IP nFile /etc/passwd changed on $HOSTNAME!")     curl -s -X POST $URL -d chat_id=$ID -d text="$MESS"     md5sum /etc/passwd > /root/passwd.md5     echo "$DATE : error : File /etc/passwd changed" >> /var/log/checkuser.log fi 

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

Kiểm tra tương tự như gửi mail. Ta sẽ thấy thông báo 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://ixnfo.com/en/file-integrity-check-script.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

How to Install and Configure Samba Share with Windows and CentOS 7

Samba is a windows compatible file sharing system. It is used to set up windows share on Linux systems. Samba is a Linux...
28/12/2020

Hướng dẫn cài đặt các gói trên CentOS-7 sử dụng file .rpm

RPM (Red Hat Package Manager) là những dạng gói phần mềm được sử dụng cho các hệ điều hành như...
30/12/2020

Cài đặt và cấu hình SSMTP trên Linux để gửi mail

SSMTP (secure Simple Mail Transfer Protocol)là một sự thay thế cho sendmail để gửi thư trên Linux. Nó...
30/12/2020