Việc theo dõi tính toàn vẹn trả lời một câu hỏi mà cả phần mềm diệt virus lẫn tường lửa đều không trả lời: từ tuần trước đến giờ có gì thay đổi trên máy chủ này. Trình quét chữ ký tìm những thứ đã biết là xấu; AIDE chẳng biết gì về sự xấu cả, nó biết rằng tệp này hôm qua khác. Để tìm một cửa hậu nối vào cuối một tệp có sẵn thì đó là cách tiếp cận duy nhất có tác dụng.

AIDE cài trong hai lệnh. Cấu hình nó sao cho các báo cáo của nó được đọc mới là phần khó hơn — và đó thường là thứ giết chết nó: báo cáo đầu tiên đến với mười nghìn dòng, cái thứ hai chẳng ai mở, và một tháng sau tác vụ bị xóa.

Cài đặt và cơ sở dữ liệu đầu tiên

sudo apt install aide aide-common
sudo aideinit

Việc khởi tạo mất từ vài phút đến nửa giờ: hàm băm được tính cho mọi tệp. Kết quả được đặt cạnh cơ sở dữ liệu đang dùng với hậu tố .new, và phải được đưa vào sử dụng:

sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Từ đó phép kiểm tra chạy bằng:

sudo aide --check

Nên loại trừ gì để báo cáo còn đọc được

Cấu hình nằm trong /etc/aide/aide.conf và trong thư mục /etc/aide/aide.conf.d/. Cấu hình mặc định của Debian kiểm tra quá nhiều, và việc đầu tiên cần làm là bỏ đi những gì tự thay đổi liên tục:

  • /var/log — thay đổi từng giây;
  • toàn bộ /var/lib — cơ sở dữ liệu, trạng thái gói, trạng thái dịch vụ;
  • /var/cache, /tmp, /proc, /sys, /run;
  • các thư mục tải lên và bộ nhớ đệm của trang web — nội dung của chúng do khách truy cập thay đổi.

Những gì đáng kiểm tra với cấu hình nghiêm ngặt nhất là một danh sách hẹp:

  • /bin, /sbin, /usr/bin, /usr/sbin — các tệp thực thi của hệ thống;
  • /lib, /usr/lib — thư viện;
  • /etc — cấu hình;
  • /root/.ssh và các thư mục .ssh của người dùng của bạn;
  • mã của trang web, nhưng không gồm thư mục tải lên và bộ nhớ đệm.

Thước đo: một báo cáo hằng ngày bình thường phải vừa một màn hình. Dài hơn thì nghĩa là các loại trừ chưa đủ và nó sẽ thôi được đọc.

Giữ cơ sở dữ liệu ở đâu

Một điểm quan trọng thường bị bỏ qua. Nếu người khác có root thì việc thay một tệp rồi cập nhật ngay cơ sở dữ liệu AIDE chẳng tốn gì của họ — và phép kiểm tra sau đó sẽ báo rằng mọi thứ đều ổn. Một cơ sở dữ liệu nằm trên cùng máy và ghi được chỉ bảo vệ trước tai nạn.

Mức tối thiểu hợp lý cho một máy chủ đơn lẻ:

  • sao chép cơ sở dữ liệu sang máy khác sau mỗi lần cập nhật, và chạy phép kiểm tra với bản sao đó được đặt vào đúng chỗ;
  • hoặc ít nhất giữ checksum của cơ sở dữ liệu riêng và đối chiếu nó trước khi kiểm tra:
sha256sum /var/lib/aide/aide.db

Ngay cả một biện pháp đơn giản như thế cũng biến một lần đánh tráo lặng lẽ thành một sự kiện nhận ra được.

Cập nhật cơ sở dữ liệu là một hành động có chủ ý

Sau các thay đổi hợp lệ — cập nhật hệ thống, triển khai phiên bản mới của trang web — cơ sở dữ liệu được dựng lại:

sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Làm việc đó khi nào là điều quan trọng. Cách đúng: đọc báo cáo, tự thuyết phục rằng mọi thay đổi đều giải thích được, rồi mới cập nhật. Cách sai và rất phổ biến: chạy aide --update theo lịch để báo cáo ra sạch sẽ. Ở trường hợp hai, hệ thống chạy, báo cáo vẫn đến, và các thay đổi được ghi nhận là bình thường đúng vào thời điểm chúng xảy ra — tức là toàn bộ ý nghĩa đã mất sạch.

Lịch chạy và tải

Gói aide-common tự cài một tác vụ hằng ngày. Phép kiểm tra tạo tải cho đĩa và bộ xử lý trong vài phút, nên đáng chạy vào giờ yên tĩnh và với mức ưu tiên hạ thấp:

0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check

Đọc báo cáo thế nào

Ba mục: tệp được thêm, bị gỡ và bị thay đổi. Với mỗi thay đổi nó cho thấy chính xác cái gì khác đi: nội dung, quyền, chủ sở hữu, thời gian.

Nên phản ứng với cái gì trước:

  • thay đổi của bất kỳ tệp nào trong /bin, /sbin, /usr/bin ngoài khung thời gian cập nhật;
  • tệp mới trong các thư mục hệ thống;
  • thay đổi trong authorized_keys, /etc/passwd, /etc/sudoers, /etc/crontab/etc/cron.d;
  • tệp /etc/ld.so.preload xuất hiện — nó không bao giờ tự xuất hiện.

Một trăm tệp thay đổi ngay sau apt upgrade là bình thường, và dấu thời gian của báo cáo xác nhận điều đó. Ba tệp thay đổi trong /usr/bin vào một ngày thứ Tư không có bản cập nhật nào là lý do để dừng lại và tìm hiểu.

AIDE và debsums

Hai công cụ giải quyết những bài toán liền kề, nhưng chuẩn mực đối chiếu của chúng khác nhau. AIDE so với ảnh chụp của chính bạn — nên nó thấy thay đổi ở bất kỳ tệp nào, kể cả mã của trang web. debsums so với checksum trong các gói của bản phân phối — nên nó thấy các tệp hệ thống bị thay mà chẳng cần chuẩn bị gì trước, nhưng chẳng biết gì về những thứ bạn cài ngoài gói. Giữ cả hai là hợp lý; trên thực tế debsums thường được cài trước, vì nó không cần cấu hình lẫn cơ sở dữ liệu.

Chúng cũng có chung một điểm yếu: báo cáo đến qua thư, và thư thì thất lạc. Nên điều quan trọng không phải là phép kiểm tra đã chạy mà là có một nơi nhìn thấy được kết quả mới nhất của nó. Trông ra sao — xem ở trang demo bên dưới.