Cách Cài đặt và Cấu hình TrueNAS SCALE: Xây dựng HomeLab ZFS Miễn nhiễm Ransomware

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

Bối cảnh & Lý do: Vì sao các hệ thống NAS thông thường thất bại trước Ransomware

Hầu hết các thư mục chia sẻ mạng (network share) cơ bản đều khiến homelab dễ bị tổn thương nghiêm trọng trước thảm họa. Khi ransomware tấn công một máy trạm trong mạng, nó sẽ quét qua các ổ đĩa mạng đã kết nối và mã hóa file ngay tại chỗ. Các hệ thống tệp truyền thống như EXT4 hoặc NTFS xử lý thao tác ghi đè trực tiếp (in-place write). Mã độc sẽ đọc file gốc, mã hóa nó trong bộ nhớ của máy client và ghi đè nội dung đã bị mã hóa lên chính file đó.

TrueNAS SCALE giải quyết triệt để vấn đề này nhờ kết hợp Debian Linux với OpenZFS. ZFS sử dụng kiến trúc giao dịch Copy-on-Write (CoW). Nó không bao giờ sửa đổi trực tiếp các khối dữ liệu hiện có. Khi client chỉnh sửa một file, trước tiên ZFS sẽ ghi dữ liệu mới vào các sector chưa được cấp phát, và chỉ cập nhật cây siêu dữ liệu (metadata tree) sau khi quá trình ghi hoàn tất thành công.

Kiến trúc này giúp các snapshot có tính bất biến (immutable) theo mặc định. Ngay cả khi ransomware giành toàn quyền ghi vào SMB share và mã hóa mọi thư mục, nó cũng chỉ đang ghi các khối dữ liệu mới. Nó hoàn toàn không thể chạm tới hoặc ghi đè lên các snapshot trước đó đã được khóa trong ZFS dataset. Một lịch trình snapshot hợp lý sẽ cho phép bạn khôi phục (rollback) hàng trăm gigabyte dữ liệu bị mã hóa chỉ trong chưa đầy mười giây.

Kiến trúc Phần cứng & Kế hoạch Chuẩn bị

Lựa chọn phần cứng chuẩn xác ngay từ đầu sẽ giúp bạn tránh được các vấn đề về độ ổn định sau này:

  • Host Bus Adapter (HBA): Hãy chọn một card HBA như LSI Broadcom SAS 9300-8i hoặc 9207-8i đã được flash sang chế độ IT mode. Tuyệt đối tránh dùng các card RAID phần cứng. ZFS cần quyền kiểm soát trực tiếp, ở mức thấp đối với từng ổ đĩa vật lý để quản lý tính toàn vẹn dữ liệu, xử lý timeout và tính toán chẵn lẻ (parity).
  • Bộ nhớ (RAM): Khởi điểm với tối thiểu 16 GB RAM. Với các pool lưu trữ lớn hơn, hãy tính toán khoảng 1 GB RAM cho mỗi 1 TB dung lượng lưu trữ. Ưu tiên sử dụng RAM ECC nếu CPU và bo mạch chủ hỗ trợ. ZFS lưu cache đọc (Adaptive Replacement Cache – ARC) trong RAM, do đó bộ nhớ lỗi có thể làm hỏng dữ liệu ghi đang nằm trong cache.
  • Ổ đĩa khởi động chuyên dụng: TrueNAS SCALE sẽ chiếm dụng toàn bộ ổ đĩa boot. Đừng phân vùng ổ lưu trữ dữ liệu để cài hệ điều hành. Hãy trang bị một ổ SSD SATA hoặc M.2 NVMe giá rẻ có dung lượng từ 120 GB đến 250 GB. Tránh sử dụng USB flash drive vì tần suất ghi log liên tục của SCALE sẽ làm hỏng bộ nhớ flash rất nhanh.

Cài đặt: Triển khai TrueNAS SCALE trên Bare Metal

Tải bản ISO TrueNAS SCALE mới nhất và tạo bộ cài vào một USB tạm thời bằng Rufus hoặc Ventoy.

Bước 1: Chạy Trình cài đặt

  1. Cắm USB cài đặt vào server. Truy cập BIOS/UEFI, bật chế độ AHCI, ưu tiên boot từ USB UEFI và khởi động hệ thống.
  2. Chọn Install/Upgrade trên màn hình menu khởi động.
  3. Chọn đúng ổ SSD dành riêng cho boot (ví dụ: /dev/sda hoặc /dev/nvme0n1). Kiểm tra kỹ dung lượng ổ đĩa để tránh chọn nhầm vào ổ chứa dữ liệu.
  4. Chọn Administrative user (admin) và đặt mật khẩu phức tạp, an toàn.
  5. Chọn Boot via UEFI.
  6. Khi quá trình cài đặt hoàn tất, rút USB và khởi động lại server.

Bước 2: Truy cập Console Ban đầu & Cấu hình Mạng

Màn hình console sẽ hiển thị địa chỉ DHCP sau khi hệ thống khởi động. Gán IP tĩnh trực tiếp từ console vật lý giúp tránh mất kết nối khi router khởi động lại. Chọn mục 1) Configure Network Interfaces:

# Thiết lập mạng từ console vật lý
1) Configure network interfaces
Select an interface: enp3s0
Delete existing interface? (y/n): n
Configure IPv4? (y/n): y
DHCP? (y/n): n
IPv4 address: 192.168.1.50
IPv4 netmask: 255.255.255.0
Configure IPv6? (y/n): n
Restart network services? (y/n): y

Mở trình duyệt và truy cập vào https://192.168.1.50 để đăng nhập vào giao diện web dashboard của TrueNAS.

Cấu hình: Tăng cường Bảo mật ZFS Pool và Hệ thống Snapshot

Bước 1: Tạo ZFS Pool Bền bỉ

Mở dashboard và chuyển đến mục Storage > Create Pool.

  • Pool Name: tank-storage
  • Topology Layout: Chọn RAID-Z2 (dual parity, cho phép hỏng tối đa hai ổ đĩa cùng lúc) nếu bạn sử dụng từ 6 đến 8 ổ cứng HDD. Chọn Mirrored VDEVs (tương tự RAID 10) nếu bạn cần IOPS cao hơn cho máy ảo, chia sẻ iSCSI tốc độ cao, hoặc thời gian rebuild nhanh trên các ổ đĩa dung lượng lớn.
  • Chọn các ổ đĩa tương ứng và nhấn Create.

Bước 2: Tạo Dataset với các Thuộc tính Tối ưu

Tránh chia sẻ trực tiếp thư mục gốc của pool. Hãy tạo các dataset riêng biệt để quản lý nén dữ liệu, record size và phân quyền một cách độc lập. Truy cập vào Storage > tank-storage > Add Dataset:

  • Dataset Name: documents
  • Sync: Standard (ghi dữ liệu an toàn được bảo vệ bởi bộ nhớ đệm RAM và ZIL)
  • Compression: ZSTD (mang lại tỷ lệ nén tuyệt vời mà hầu như không tốn tài nguyên CPU)
  • Atime: Off (tắt ghi nhận thời gian truy cập khi đọc file, giúp tiết kiệm IOPS của ổ đĩa)
  • Record Size: Giữ nguyên 128 KiB cho việc lưu trữ file thông thường, hoặc tăng lên 1 MiB cho các thư viện video không nén.

Bước 3: Xây dựng Pipeline Snapshot Chống Ransomware

Tạo snapshot thường xuyên là cốt lõi của chiến lược phục hồi dữ liệu. Nếu mã độc tấn công lúc 14:15, một bản snapshot sạch lúc 14:00 sẽ giới hạn mức độ mất mát dữ liệu chỉ trong vòng 15 phút làm việc.

Vào mục Data Protection > Periodic Snapshot Tasks > Add và cấu hình ba tầng riêng biệt:

  1. Tầng 1 — Snapshot Tần suất cao:
    • Dataset: tank-storage/documents
    • Recursive: Bật (Enabled)
    • Snapshot Lifetime: 48 Hours
    • Schedule: Cron tùy chỉnh (Mỗi 15 phút từ 08:00 đến 20:00)
  2. Tầng 2 — Snapshot Hàng ngày:
    • Dataset: tank-storage/documents
    • Snapshot Lifetime: 14 Days
    • Schedule: Hàng ngày vào lúc 00:00
  3. Tầng 3 — Snapshot Dài hạn Hàng tuần:
    • Dataset: tank-storage/documents
    • Snapshot Lifetime: 8 Weeks
    • Schedule: Hàng tuần vào Chủ Nhật lúc 01:00

Bước 4: Cấu hình SMB Share với Shadow Copies (VSS)

Người dùng Windows có thể tự khôi phục file mà không cần nhờ đến quản trị viên. Việc tích hợp ZFS snapshot với dịch vụ Windows Volume Shadow Copy Service (VSS) sẽ kích hoạt tab “Previous Versions” quen thuộc trên Windows.

  1. Chuyển đến Shares > Windows (SMB) Shares > Add.
  2. Đặt đường dẫn thành /mnt/tank-storage/documents.
  3. Mở rộng mục Advanced Options và tích chọn Enable Shadow Copies.
  4. Lưu các thay đổi, sau đó bật dịch vụ SMB trong System Settings > Services.

Kiểm tra & Giám sát: Xác thực Khả năng Phục hồi và Sức khỏe của Pool

Mô phỏng Tấn công & Khôi phục Tức thì

Đừng bao giờ tin tưởng một chính sách sao lưu chưa được thử nghiệm. Hãy kiểm tra quy trình rollback bằng cách mô phỏng tình huống file bị hỏng hoặc bị mã hóa trên SMB share.

Mở phiên SSH hoặc khởi chạy terminal web trên TrueNAS. Liệt kê các điểm snapshot khả dụng:

# Kiểm tra các snapshot hiện có của dataset documents
zfs list -t snapshot -r tank-storage/documents

Bạn sẽ thấy kết quả đầu ra tương tự như sau:

NAME                                                    USED  AVAIL     REFER  MOUNTPOINT
tank-storage/documents@auto-2026-10-03_14-00            120K      -     4.50G  -
tank-storage/documents@auto-2026-10-03_14-15            140K      -     4.50G  -

Nếu mã độc phá hoại dữ liệu ngay sau thời điểm 14:15, hãy đưa dataset về trạng thái nguyên vẹn trước đó chỉ bằng ba câu lệnh nhanh chóng:

# 1. Dừng dịch vụ SMB để ngắt các kết nối client đang hoạt động
midclt call service.stop smb

# 2. Rollback dataset về trạng thái snapshot sạch
zfs rollback -r tank-storage/documents@auto-2026-10-03_14-15

# 3. Khởi động lại dịch vụ SMB
midclt call service.start smb

Quá trình rollback hoàn tất gần như ngay lập tức. Vì ZFS chỉ cần tráo đổi các con trỏ siêu dữ liệu (metadata pointers), nên việc khôi phục 10 TB cũng diễn ra nhanh tương đương như khi khôi phục 10 MB.

Tự động hóa Bảo trì Pool và Cảnh báo

Ổ cứng sẽ xuống cấp theo thời gian. Bảo trì tự động giúp phát hiện sớm hiện tượng thoái hóa dữ liệu (bit rot) và các sector lỗi trước khi chúng đe dọa đến tính dự phòng của pool:

  1. ZFS Scrub Tasks: Vào Data Protection > Scrub Tasks > Add. Chạy tác vụ scrub định kỳ hai tuần một lần trên tank-storage để đọc toàn bộ các block và xác minh checksum.
  2. Kiểm tra S.M.A.R.T.: Vào Data Protection > S.M.A.R.T. Tasks > Add. Thiết lập tác vụ Short Test hàng ngày lúc 03:00 và Extended Test vào ngày mùng 1 hàng tháng cho tất cả các ổ đĩa.
  3. Dịch vụ Cảnh báo: Nhấp vào Alerts (Biểu tượng Chuông) > Alert Settings. Liên kết webhook Discord hoặc tài khoản email SMTP đã xác thực. Bạn sẽ nhận được thông báo ngay lập tức khi một ổ đĩa gặp lỗi I/O hoặc pool rơi vào trạng thái degraded.

Bạn có thể kiểm tra tình trạng lưu trữ bất kỳ lúc nào từ terminal:

zpool status tank-storage

Hãy đảm bảo state: ONLINE với toàn bộ số 0 ở các cột READ, WRITE và CKSUM. Với hệ thống snapshot tự động, kiểm tra scrub định kỳ và khả năng rollback tức thì, homelab của bạn đã hoàn toàn sẵn sàng đứng vững trước các sự cố hỏng ổ đĩa cũng như các cuộc tấn công của ransomware.

Share: