Dùng debsums kiểm tra tính toàn vẹn Ubuntu: Đừng để Rootkit ‘làm tổ’ trên Server

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

Khi lệnh ls bỗng nhiên “phản chủ”

2 giờ sáng, chiếc điện thoại rung bần bật trên bàn. Hệ thống giám sát báo con server Nginx Production chạy Ubuntu 22.04 liên tục trả về lỗi 500. Mình SSH vào kiểm tra, log Nginx sạch bong, file config không hề thay đổi so với bản backup trên Git. Tuy nhiên, khi gõ ls -l /usr/sbin/nginx, mình khựng lại. Kích thước file binary lệch khoảng 12KB so với bản build chuẩn trên môi trường Staging.

Một kịch bản tồi tệ hiện ra: Server đã bị xâm nhập. Kẻ tấn công có thể đã thay thế file thực thi bằng một bản chèn backdoor. Những lệnh cơ bản như ls hay stat lúc này không còn đáng tin nữa. Để biết chắc chắn file trên đĩa cứng có còn nguyên bản hay không, mình cần một công cụ đối soát mã băm (checksum) với kho lưu trữ gốc của Ubuntu.

3 lý do khiến file hệ thống bị “biến chất”

Trong quá trình vận hành, mình đúc kết được 3 nguyên nhân chính khiến các file binary hoặc thư viện hệ thống bị thay đổi:

  • Lỗi vật lý (Bit Rot): Dữ liệu trên ổ cứng hoặc RAM bị ghi sai lệch do lão hóa linh kiện. Tỉ lệ này rất nhỏ nhưng hoàn toàn có thể xảy ra với các server chạy liên tục nhiều năm.
  • Sai sót con người: Một đồng nghiệp có quyền sudo vô tình dùng vim sửa trực tiếp file trong /usr/bin để debug nhanh rồi quên không rollback.
  • Sự cố bảo mật: Hacker thay thế các công cụ quản lý như ps, netstat hoặc sshd bằng mã độc nhằm che giấu tiến trình và đánh cắp dữ liệu.

Đừng vội vàng format và cài lại OS ngay. Việc đó tốn hàng giờ đồng hồ cấu hình lại từ đầu. Chúng ta cần bằng chứng xác thực để đưa ra quyết định xử lý đúng đắn.

Debsums: “Kính hiển vi” soi lỗi hệ thống

Nhiều bạn sẽ nghĩ đến việc so sánh thủ công mã MD5/SHA256 của từng file. Cách này bất khả thi vì một hệ thống Ubuntu tiêu chuẩn có tới hơn 50.000 file trong /usr. Một số người dùng dpkg -V, nhưng output của nó khá rối mắt và khó lọc thông tin.

Debsums vượt trội hơn nhờ khả năng đối chiếu trực tiếp file trên đĩa với database MD5 chuẩn tại /var/lib/dpkg/info/*.md5sums. Nếu có bất kỳ sự sai lệch dù chỉ 1 bit, nó sẽ cảnh báo ngay lập tức.

1. Cài đặt debsums

Công cụ này không đi kèm mặc định. Bạn hãy cài đặt nhanh qua apt:

sudo apt update
sudo apt install debsums -y

2. Quét nhanh các file đã bị thay đổi

Để tìm những file thực thi không còn giống bản gốc, hãy dùng lệnh:

sudo debsums -c

Flag -c (changed) giúp bạn lọc bỏ các file bình thường. Nếu lệnh không trả về kết quả, hệ thống của bạn vẫn an toàn. Nếu xuất hiện danh sách file, đó chính là những vị trí cần rà soát lại ngay.

3. Kiểm tra cả file cấu hình (Configuration files)

Mặc định, debsums bỏ qua thư mục /etc vì admin thường xuyên chỉnh sửa file config tại đây. Tuy nhiên, nếu nghi ngờ có ai đó chèn cấu hình lạ, hãy dùng flag -a (all):

sudo debsums -ca

4. Kiểm tra đích danh một gói phần mềm

Quay lại case Nginx của mình. Thay vì quét toàn bộ ổ cứng, mình chỉ tập trung kiểm tra gói Nginx để tiết kiệm thời gian:

sudo debsums nginx

Nếu kết quả hiện FAILED như dưới đây, chắc chắn file binary đã bị can thiệp:

/usr/sbin/nginx                                     FAILED

Khôi phục file hệ thống về trạng thái sạch

Khi đã xác định được file bị lỗi hoặc bị hack, cách an toàn nhất là yêu cầu apt tải lại gói đó và ghi đè lên các file hiện tại. Giả sử gói nginx-core bị báo lỗi, bạn chạy lệnh:

sudo apt install --reinstall nginx-core

Sau khi cài lại, hãy chạy lại debsums. Nếu kết quả trả về OK, file của bạn đã sạch sẽ.

Kinh nghiệm thực chiến: Tự động hóa để kê cao gối ngủ

Đừng đợi đến khi server gặp sự cố mới đi kiểm tra. Mình thường thiết lập một script nhỏ chạy cron hàng tuần. Script này sẽ tự động quét hệ thống và bắn cảnh báo về Telegram nếu phát hiện file FAILED.

#!/bin/bash
# Kiểm tra file hệ thống bị thay đổi
LOG_FILE="/var/log/debsums_check.log"
RESULTS=$(debsums -c 2>&1)

if [ ! -z "$RESULTS" ]; then
  echo "Cảnh báo: Phát hiện file bị thay đổi vào ngày $(date)" > $LOG_FILE
  echo "$RESULTS" >> $LOG_FILE
  # Thêm lệnh curl gửi thông báo Telegram tại đây
fi

Lưu ý quan trọng: Debsums không phải là “viên đạn bạc”. Nếu hacker chiếm quyền root đủ lâu, chúng có thể sửa cả database checksum trong /var/lib/dpkg/info/. Trong trường hợp đó, bạn cần đối chiếu với một server sạch khác hoặc dùng các công cụ kiểm tra file ngoại vi (offline check).

Tổng kết

Quản trị server chuyên nghiệp là không đoán mò. Debsums giúp bạn có con số và bằng chứng cụ thể về tính toàn vẹn của hệ thống. Hãy thử chạy sudo debsums -c ngay hôm nay. Có thể bạn sẽ phát hiện ra những thay đổi “thú vị” mà bấy lâu nay mình không hề hay biết.

Share: