W01-L02: Dựng Lab Cô lập, Phân vai Máy ảo và Quản trị Snapshot/Restore

Enterprise Pentest Lead Curriculum
Cybersecurity Academy
2026
Abstract
Giáo trình thực hành cốt lõi dành cho Enterprise Penetration Testing Technical Lead về thiết kế hạ tầng phòng lab kiểm thử cô lập (Cyber Range), phân bổ vai trò máy ảo đa tầng, kiểm chứng ranh giới cách ly mạng tầng 2/3, và vận hành cơ chế chụp trạng thái chuỗi đĩa vi sai (Copy-on-Write Snapshot) kết hợp sao lưu độc lập (OVA/OVF Backup). Bài học cụ thể hóa các yêu cầu bắt buộc của Lab Gate 0 và chuẩn hóa hồ sơ kiến trúc kỹ thuật LAB-Architecture-v1.md trên môi trường Safe Lab F01.
Keywords: Host-Only Network; Hypervisor Isolation; VM Roles; Copy-on-Write Snapshot; Backup & Restore; Lab Gate 0

1Sau mục này bạn sẽ làm được

2Cần biết trước

3Nối với các mục trước

Ở bài học W01-L01, chúng ta đã phân tích cách một gói tin di chuyển qua các ranh giới tin cậy từ tầng liên kết dữ liệu lên tới tầng phiên mã hóa TLS 1.3, đồng thời nhận diện các rủi ro khi ranh giới mạng bị cấu hình sai. Tuy nhiên, mọi lý thuyết phân tích giao thức và kiểm thử xâm nhập chỉ được phép chuyển hóa thành hành động thực nghiệm khi người kỹ sư sở hữu một môi trường thực thi có ranh giới cô lập được chứng minh bằng thực nghiệm. Trong quy trình quản trị rủi ro của một Technical Lead, việc dựng phòng lab và thiết lập cơ chế hoàn nguyên trạng thái (Snapshot/Restore) không phải là công việc phụ trợ CNTT đơn thuần, mà là chốt chặn an toàn đầu tiên (Lab Gate 0): đảm bảo không một gói tin rà quét Nmap [9] hay payload thử nghiệm nào có thể thoát khỏi miền ảo hóa để chạm tới tài sản thật của tổ chức [12] .

4Hiểu nhanh bằng ví dụ đời thường

Hãy hình dung việc xây dựng phòng lab kiểm thử xâm nhập giống như việc thiết kế một phòng thí nghiệm an toàn sinh học cấp độ 4 (BSL-4) tích hợp nút bấm quay ngược thời gian của buồng lái mô phỏng bay (Flight Simulator). Khi các nhà vi trùng học nghiên cứu một chủng virus nguy hiểm, điều kiện tiên quyết không phải là kính hiển vi hiện đại đến đâu, mà là hệ thống áp suất âm và các lớp cửa khóa khí (airlock) phải hoạt động tuyệt đối kín để không một giọt khí dung nào lọt ra khu dân cư bên ngoài. Đó chính là bản chất của mạng cô lập Host-Only hoặc Internal Network.

Bên cạnh đó, trong quá trình thử nghiệm thuốc giải hoặc diễn tập xử lý sự cố rơi máy bay trong buồng mô phỏng, cấu trúc bên trong phòng thí nghiệm chắc chắn sẽ bị xáo trộn, nhiễm bẩn hoặc hư hỏng. Thay vì phải tốn hàng tuần lễ xây lại phòng thí nghiệm từ gạch đá ban đầu, người kỹ sư chỉ cần nhấn nút khôi phục mốc trạng thái chuẩn (Baseline Snapshot). Chỉ trong vài giây, mọi vết bẩn biến mất và toàn bộ hệ thống quay trở về trạng thái nguyên sơ 100% như lúc vừa nghiệm thu để sẵn sàng cho ca thử nghiệm tiếp theo.

5Cơ chế và định nghĩa chính xác

5.1Kiến trúc Mạng Ảo hóa Hypervisor và Cơ chế Cô lập Host-Only

Theo hướng dẫn bảo mật công nghệ ảo hóa toàn phần NIST SP 800-125 [1] và khuyến nghị kiến trúc bảo mật Hypervisor NIST SP 800-125A [2] , trình quản lý máy ảo (Hypervisor loại 1 như KVM/ESXi/Hyper-V hoặc loại 2 như VirtualBox/VMware Workstation) cung cấp khả năng kết nối mạng cho các máy ảo thông qua bộ chuyển mạch ảo trong nhân (Virtual Switch - vSwitch) kết hợp các giao diện mạng ảo (Virtual Network Interface Cards - vNICs). Cách thức bộ chuyển mạch ảo này liên kết (hoặc ngắt liên kết) với card mạng vật lý (Physical NIC - pNIC) của máy chủ Host quyết định trực tiếp tính chất của ranh giới tin cậy mạng lab [14] .

Để ngăn chặn rủi ro rò rỉ lưu lượng kiểm thử (Traffic Spillover), Technical Lead phải phân biệt chính xác cơ chế chuyển tiếp khung tin ở tầng 2 (Data Link) và gói tin ở tầng 3 (Network) của năm chế độ mạng ảo hóa tiêu chuẩn: 1. Bridged Networking (Mạng Cầu nối): Bộ chuyển mạch ảo gắn trực tiếp vào pNIC của máy chủ Host thông qua trình điều khiển lọc mạng (NetFilter/Bridge Driver). Máy ảo xuất hiện như một thiết bị vật lý độc lập ngay trên mạng LAN của doanh nghiệp, nhận IP trực tiếp từ DHCP sản xuất và có thể phát khung quảng bá ARP tới mọi máy chủ thật. Chế độ này bị nghiêm cấm tuyệt đối trong các bài lab kiểm thử xâm nhập. 2. NAT (Network Address Translation): Hypervisor tích hợp một bộ định tuyến và tường lửa NAT nội bộ dành riêng cho từng máy ảo. Máy ảo nằm trong dải IP riêng nhưng mọi gói tin khởi tạo từ máy ảo ra ngoài đều được Hypervisor dịch địa chỉ nguồn (Source NAT) thành địa chỉ IP thật của máy chủ Host để đi vào mạng công ty và Internet. Do đó, nếu chạy công cụ rà quét từ máy ảo ở chế độ NAT, máy ảo vẫn có khả năng chạm tới toàn bộ dải IP nội bộ của doanh nghiệp mà máy chủ Host có quyền truy cập. 3. NAT Network: Tương tự chế độ NAT nhưng cho phép nhiều máy ảo cùng chia sẻ một bộ chuyển mạch ảo trước khi đi qua công cụ dịch địa chỉ NAT ra ngoài mạng vật lý. Chế độ này vẫn tồn tại đường thoát (egress path) ra mạng thật của máy chủ Host nên không đáp ứng tiêu chuẩn cô lập cứng. 4. Internal Network (Mạng Nội bộ Thuần túy): Các máy ảo được nối vào một bộ chuyển mạch ảo hoàn toàn khép kín trong bộ nhớ Hypervisor. Ngay cả hệ điều hành máy chủ Host cũng không có giao diện mạng ảo nối vào vSwitch này. Đây là chế độ cô lập cao nhất giữa Guest và Host, nhưng gây bất tiện khi học viên cần chạy công cụ bắt gói tin từ giao diện của Host hoặc quản trị máy ảo qua SSH từ máy trạm. 5. Host-Only Networking (Mạng Chỉ Giao tiếp Nội bộ & Host): Hypervisor khởi tạo một bộ chuyển mạch ảo cô lập (ví dụ vboxnet0 hoặc vmnet1) và gắn một giao diện mạng ảo dạng Tap/Loopback lên hệ điều hành Host (thường mang địa chỉ .1 như 192.168.56.1/24), đồng thời không tạo bất kỳ cầu nối Layer 2 hay tuyến định tuyến NAT Layer 3 nào sang card mạng vật lý pNIC.

Trong thiết kế Safe Lab F01 của tuần 1, chế độ Host-Only trên dải mạng 192.168.56.0/24 (hoặc kết hợp Internal Network cho phân vùng backend) là kiến trúc chuẩn mực: nó cho phép 03 máy ảo giao tiếp trực tiếp với nhau qua vSwitch và cho phép trình phân tích gói tin Wireshark [8] đặt cảm biến trên giao diện vboxnet0, trong khi khóa chặt hoàn toàn đường ra Internet và mạng LAN công ty. Kiến trúc ngăn cách tầng 2/3 này được mô hình hóa chi tiết trong sơ đồ Figure 1 dưới đây:

Máy chủ Vật lý (Host OS - Hypervisor Platform)
Mạng Doanh Nghiệp / Internet (Out-of-Scope)
Lưu lượng thông thường của Host
CẤM ĐỊNH TUYẾN / CẤM BRIDGE
Ranh giới Cách ly Cứng (Air-Gap Logic)
Chỉ thu thập PCAP & SSH Lab
Physical NIC (en0 / eth0: 10.0.1.50)
Kernel IP Forwarding = 0 (BỊ KHÓA CỨNG)
Host Virtual Adapter (vboxnet0: 192.168.56.1/24)
Hypervisor Isolated vSwitch (Host-Only 192.168.56.0/24)
Lưu lượng Thực hành F01
Lưu lượng Thực hành F01
Phân giải DNS & Dịch vụ Nội bộ
F01-tester (Linux Tester VM)
IP: 192.168.56.10/24
Gateway: None
F01-linux-srv (Web/TLS/DNS VM)
IP: 192.168.56.20/24
Gateway: None
F01-win-trial (Windows Trial VM)
IP: 192.168.56.30/24
Gateway: None
Gateway / Corp LAN (10.0.1.1/24)
Mermaid Source
flowchart TB
    subgraph CorpNet["Mạng Doanh Nghiệp / Internet (Out-of-Scope)"]
        Router["Gateway / Corp LAN (10.0.1.1/24)"]
    end
    subgraph HostOS["Máy chủ Vật lý (Host OS - Hypervisor Platform)"]
        pNIC["Physical NIC (en0 / eth0: 10.0.1.50)"]
        ipFwd["Kernel IP Forwarding = 0 (BỊ KHÓA CỨNG)"]
        vTap["Host Virtual Adapter (vboxnet0: 192.168.56.1/24)"]
        subgraph vSwitch["Hypervisor Isolated vSwitch (Host-Only 192.168.56.0/24)"]
            VM1["F01-tester (Linux Tester VM)<br/>IP: 192.168.56.10/24<br/>Gateway: None"]
            VM2["F01-linux-srv (Web/TLS/DNS VM)<br/>IP: 192.168.56.20/24<br/>Gateway: None"]
            VM3["F01-win-trial (Windows Trial VM)<br/>IP: 192.168.56.30/24<br/>Gateway: None"]
        end
    end
    Router <-->|"Lưu lượng thông thường của Host"| pNIC
    pNIC -.->|"CẤM ĐỊNH TUYẾN / CẤM BRIDGE"| ipFwd
    ipFwd -.->|"Ranh giới Cách ly Cứng (Air-Gap Logic)"| vTap
    vTap <-->|"Chỉ thu thập PCAP & SSH Lab"| vSwitch
    VM1 <-->|"Lưu lượng Thực hành F01"| VM2
    VM1 <-->|"Lưu lượng Thực hành F01"| VM3
    VM2 <-->|"Phân giải DNS & Dịch vụ Nội bộ"| VM3
Figure 1: Kiến trúc Cô lập Mạng Host-Only (192.168.56.0/24) và Chốt chặn Ngăn Rò rỉ Gói tin

5.2Phân vai Máy ảo (VM Roles), Quy hoạch Ngân sách Phần cứng và Vệ sinh Định danh

Một môi trường thực hành kiểm thử xâm nhập chuẩn doanh nghiệp không bao giờ gom cả công cụ tấn công lẫn dịch vụ mục tiêu vào chung một hệ điều hành duy nhất (tránh hiện tượng tự kiểm thử qua giao diện loopback 127.0.0.1 làm sai lệch hoàn toàn hành vi của ngăn xếp mạng, tường lửa và MTU). Nghiên cứu về khung thiết kế thao trường mạng (Cyber Range Design Framework) của Katsantonis và cộng sự [12] cùng đánh giá ngăn xếp công nghệ của Lateș và Boja [13] chỉ rõ rằng một bài lab nền tảng cần phân tách tối thiểu ba vai trò máy ảo độc lập: 1. Máy kiểm thử (F01-tester — Security Analyst / Pentester VM): Chạy hệ điều hành Linux chuyên dụng (Kali Linux, Parrot Security hoặc Ubuntu LTS đã cài đặt bộ công cụ kiểm thử được phê duyệt gồm Wireshark [8] , tshark, tcpdump, Nmap [9] , curl, openssl). Máy đóng vai trò điểm khởi phát lưu lượng kiểm thử tại địa chỉ 192.168.56.10/24. 2. Máy chủ mục tiêu Linux (F01-linux-srv — Target Application & Infrastructure Server VM): Chạy Ubuntu Server hoặc Debian tối giản tại địa chỉ 192.168.56.20/24 (có thể kiêm nhiệm dịch vụ DNS nội bộ tại .2 hoặc alias IP), cung cấp dịch vụ Web/TLS 1.3 (nginx/apache2), SSH và cơ sở dữ liệu giả lập để quan sát luồng Client → Proxy → App → DB. 3. Máy trạm / Máy chủ Windows mục tiêu (F01-win-trial — Windows Evaluation Target VM): Chạy phiên bản dùng thử hợp lệ của Windows 10/11 Enterprise Evaluation hoặc Windows Server 2022 Evaluation [10] tại địa chỉ 192.168.56.30/24. Máy này đóng vai trò môi trường thực hành rà soát dịch vụ Windows (Windows Services), tài khoản/nhóm cục bộ (Local Users/Groups), quyền truy cập tệp tin (NTFS ACL) và nhật ký sự kiện (Windows Event Logs).

Khi vận hành đồng thời nhiều máy ảo trên một máy trạm cá nhân hoặc máy chủ phòng lab, sự cố phổ biến nhất làm gián đoạn quá trình học tập là hiện tượng quá tải bộ nhớ dẫn đến tráo đổi trang đĩa (Host Memory Thrashing / Swapping) khiến các gói tin mạng bị rớt (packet drop) và làm sai lệch kết quả phân tích thời gian đáp ứng. Để quy hoạch chính xác số lượng máy ảo chạy đồng thời, Technical Lead áp dụng bất đẳng thức cân bằng ngân sách bộ nhớ RAM trên máy chủ vật lý:

Rhost≥ROS_base+∑i=1k(RVM,i+Rvmm_overhead,i)+Rsafety_marginR_{\text{host}} \ge R_{\text{OS\_base}} + \sum_{i=1}^{k} \left( R_{\text{VM}, i} + R_{\text{vmm\_overhead}, i} \right) + R_{\text{safety\_margin}}
(1)

Khi áp dụng công thức Eq. (1) vào thực tế triển khai Safe Lab F01 với k=3k = 3 máy ảo chạy đồng thời: - Bộ nhớ tối thiểu giữ lại cho hệ điều hành Host và trình phân tích Wireshark: ROS_base=4,096 MBR_{\text{OS\_base}} = 4,096\text{ MB} (4 GB). - Phân bổ cho F01-tester (Linux GUI nhẹ hoặc headless): RVM,1=2,048 MBR_{\text{VM}, 1} = 2,048\text{ MB}, chi phí quản lý Hypervisor Rvmm_overhead,1≈256 MBR_{\text{vmm\_overhead}, 1} \approx 256\text{ MB}. - Phân bổ cho F01-linux-srv (Linux Server headless không giao diện đồ họa): RVM,2=1,024 MBR_{\text{VM}, 2} = 1,024\text{ MB}, chi phí quản lý Rvmm_overhead,2≈192 MBR_{\text{vmm\_overhead}, 2} \approx 192\text{ MB}. - Phân bổ cho F01-win-trial (Windows Evaluation): RVM,3=4,096 MBR_{\text{VM}, 3} = 4,096\text{ MB}, chi phí quản lý Rvmm_overhead,3≈384 MBR_{\text{vmm\_overhead}, 3} \approx 384\text{ MB}. - Biên độ an toàn chống tràn bộ nhớ (15%): Rsafety_margin≈2,000 MBR_{\text{safety\_margin}} \approx 2,000\text{ MB}. Tổng cộng vế phải của công thức Eq. (1) đạt 4,096+(2,304+1,216+4,480)+2,000=14,096 MB4,096 + (2,304 + 1,216 + 4,480) + 2,000 = 14,096\text{ MB} (≈13.8 GB\approx 13.8\text{ GB}). Như vậy, một máy trạm có 16 GB RAM hoàn toàn vận hành mượt mà cấu hình 3 VM cơ sở của Tuần 1 nếu giữ F01-linux-srv ở chế độ dòng lệnh (headless); trong khi để mở rộng lên mô hình nhiều máy chủ Windows/Active Directory ở các tuần sau, cấu hình khuyến nghị là 24–32 GB RAM, CPU 6–8 luồng xử lý (threads) và 200 GB SSD trống.

Bên cạnh quy hoạch phần cứng, chuẩn kiểm soát chất lượng của chương trình yêu cầu thực thi nghiêm ngặt hai nguyên tắc quản trị: - *Vệ sinh định danh và dữ liệu (Credential & Data Hygiene): Toàn bộ tài khoản trong 3 máy ảo phải là tài khoản giả lập (synthetic accounts*, ví dụ lab_analyst, svc_webapp, win_auditor), mật khẩu chỉ lưu trong trình quản lý bí mật cục bộ của lab và tuyệt đối không ghi mật khẩu dạng rõ vào báo cáo kỹ thuật. Nghiêm cấm tái sử dụng mật khẩu, chứng chỉ số, khóa SSH hoặc dữ liệu thật của công ty trong máy ảo. - *Danh mục công cụ và kiểm chứng phiên bản (Inventory Manifest):* Mọi tệp ảnh ISO/OVA và công cụ cài đặt trong lab phải được ghi nhận vào bảng kê khai theo cấu trúc 8 cột chuẩn hóa: tool_name | version | download_source | checksum | lab_id | license | last_validated | owner (bao gồm hạn dùng giấy phép 90/180 ngày của các bản Windows Evaluation qua lệnh slmgr.vbs /dlv).

5.3Cơ chế Snapshot Chuỗi Đĩa Vi sai (Copy-on-Write) và Sao lưu Độc lập (Backup)

Sau khi hoàn tất cài đặt hệ điều hành, cấu hình IP tĩnh và kiểm chứng sự cô lập cho cả 3 máy ảo, bước bắt buộc trước khi thực hiện bất kỳ thao tác kiểm thử nào là thiết lập mốc khôi phục cơ sở F01-start. Để vận hành an toàn và tránh mất mát dữ liệu lab, Technical Lead cần nắm vững cơ chế vật lý bên dưới tính năng Snapshot của Hypervisor [11] [15] .

Khi một máy ảo được khởi tạo ban đầu, toàn bộ hệ thống tệp của nó nằm trên một tệp đĩa ảo cơ sở (Base Virtual Disk D0D_0, có định dạng .vdi, .vmdk hoặc .qcow2). Tại thời điểm người quản trị ra lệnh chụp một Snapshot mới (ví dụ F01-start), Hypervisor thực hiện thuật toán Copy-on-Write (CoW) (hoặc Redirect-on-Write): 1. Tệp đĩa gốc D0D_0 lập tức bị chuyển sang chế độ Chỉ đọc (Read-Only / Frozen Parent). Không một thao tác ghi mới nào của hệ điều hành Guest được phép sửa đổi trực tiếp các khối dữ liệu (blocks/sectors) bên trong D0D_0. 2. Hypervisor khởi tạo một tệp đĩa con mới gọi là Đĩa Vi sai (Differencing Disk / Delta Image Δ1\Delta_1) liên kết ngược về mã định danh duy nhất (UUID) của đĩa cha D0D_0. 3. Mọi thao tác đọc dữ liệu đối với các vùng chưa bị thay đổi sẽ được tra cứu qua bảng phân bổ khối (Block Allocation Table - BAT) để đọc xuyên qua Δ1\Delta_1 về thẳng D0D_0. Ngược lại, mọi thao tác ghi mới hoặc xóa tệp trong quá trình kiểm thử xâm nhập chỉ được ghi bổ sung vào Δ1\Delta_1. 4. Nếu người dùng chụp một Live Snapshot khi máy ảo đang chạy, ngoài tệp đĩa vi sai Δ1\Delta_1, Hypervisor còn trích xuất toàn bộ nội dung bộ nhớ RAM hiện hành, thanh ghi CPU và trạng thái thiết bị PCI/vNIC ra một tệp trạng thái bộ nhớ riêng biệt (Σ1\Sigma_1, thường có đuôi .sav hoặc .vmsn) có dung lượng tương đương kích thước RAM hoạt động của máy ảo.

Tổng dung lượng lưu trữ vật lý StotalS_{\text{total}} tiêu thụ trên ổ cứng SSD của máy chủ Host khi một máy ảo trải qua chuỗi mm tầng Snapshot nối tiếp nhau được xác định bởi phương trình:

Stotal=S(D0)+∑j=1m(Sdata(Δj)+SBAT(Δj)+Smem(Σj))S_{\text{total}} = S(D_0) + \sum_{j=1}^{m} \left( S_{\text{data}}(\Delta_j) + S_{\text{BAT}}(\Delta_j) + S_{\text{mem}}(\Sigma_j) \right)
(2)

Từ phương trình Eq. (2) , có thể thấy rõ hai hệ quả kỹ thuật quan trọng: - Thứ nhất, nếu chụp Live Snapshot cho 3 máy ảo có tổng RAM là 7 GB7\text{ GB}, riêng thành phần ∑Smem(Σj)\sum S_{\text{mem}}(\Sigma_j) đã tiêu tốn thêm tới 7 GB7\text{ GB} dung lượng SSD cho mỗi mốc chụp. Ngược lại, nếu tắt máy ảo hoàn toàn (Clean Poweroff) trước khi chụp Offline Snapshot, thành phần Smem(Σj)=0S_{\text{mem}}(\Sigma_j) = 0, giúp tiết kiệm hàng chục GB ổ cứng và đảm bảo hệ thống tệp cùng cơ sở dữ liệu đã được đồng bộ (flush) sạch sẽ xuống đĩa, không còn giữ lại các phiên kết nối TCP dở dang hay khóa mật mã tạm thời trong RAM. - Thứ hai, khi số tầng Snapshot mm tăng quá lớn (m>5m > 5), mỗi thao tác đọc đĩa của máy ảo phải tra cứu chuỗi bảng BAT qua nhiều tệp Δm→Δm−1→⋯→D0\Delta_m \rightarrow \Delta_{m-1} \rightarrow \dots \rightarrow D_0, gây suy giảm nghiêm trọng hiệu năng I/O. Quy trình phân nhánh cây trạng thái và dịch chuyển con trỏ khôi phục được thể hiện trực quan tại sơ đồ Figure 2 :

1. Quá trình thực hành ghi dữ liệu vào
2. Lệnh Restore F01-start:
Hủy bỏ Delta_1 & giải phóng khối
3. Tạo nhánh Delta sạch tức thì (< 2 giây)
Đĩa Cơ sở D0 (Base Disk .vdi/.qcow2)
UUID: 8f1a...0001
Trạng thái: Read-Only (Frozen)
Snapshot: F01-start
(Golden Baseline - Offline)
Đĩa Vi sai Delta_1 (Active Run 1)
Chứa thay đổi khi chạy bài Lab
(Ví dụ: PCAP, cấu hình lỗi, mã thử)
Đĩa Vi sai Delta_1_Clean (New Active)
Khởi tạo mới 0 MB sau khi Restore
Mermaid Source
flowchart LR
    D0["Đĩa Cơ sở D0 (Base Disk .vdi/.qcow2)<br/>UUID: 8f1a...0001<br/>Trạng thái: Read-Only (Frozen)"]
    Snap1["Snapshot: F01-start<br/>(Golden Baseline - Offline)"]
    Delta1["Đĩa Vi sai Delta_1 (Active Run 1)<br/>Chứa thay đổi khi chạy bài Lab<br/>(Ví dụ: PCAP, cấu hình lỗi, mã thử)"]
    Delta2["Đĩa Vi sai Delta_1_Clean (New Active)<br/>Khởi tạo mới 0 MB sau khi Restore"]
    D0 --> Snap1
    Snap1 -->|"1. Quá trình thực hành ghi dữ liệu vào"| Delta1
    Delta1 -.->|"2. Lệnh Restore F01-start:<br/>Hủy bỏ Delta_1 & giải phóng khối"| Snap1
    Snap1 -->|"3. Tạo nhánh Delta sạch tức thì (< 2 giây)"| Delta2
Figure 2: Cấu trúc Chuỗi Đĩa Vi sai Copy-on-Write (CoW) và Cơ chế Rollback Con trỏ Trạng thái

Như minh họa trong sơ đồ Figure 2 , thao tác restore F01-start thực chất chỉ là việc hủy bỏ tệp vi sai Δ1\Delta_1 hiện hành và khởi tạo một tệp vi sai rỗng mới trỏ thẳng vào mốc F01-start, do đó quá trình hoàn nguyên hoàn tất gần như tức thì (1–2 giây) bất chấp đĩa gốc D0D_0 nặng hàng chục GB [11] .

6Ví dụ có lời giải: Quy trình Khởi tạo, Kiểm chứng Cô lập và Hoàn nguyên Snapshot 3 Máy ảo

Trong ví dụ có lời giải này, chúng ta thực hiện kiểm toán đầy đủ một hệ thống Safe Lab F01 vừa được dựng gồm 03 máy ảo (F01-tester, F01-linux-srv, F01-win-trial) trên dải mạng Host-Only 192.168.56.0/24. Mục tiêu là: (1) Chứng minh 3 máy ảo giao tiếp thông suốt trong nội bộ lab nhưng bị chặn đứng hoàn toàn khi thử kết nối ra mạng ngoài; (2) Chứng minh cơ chế khôi phục snapshot F01-start xóa sạch 100% các thay đổi phát sinh trong phiên thử nghiệm.

Quy trình 4 Bước Kiểm chứng Thực nghiệm Cô lập và Khôi phục
1
Bước 1: Xác minh Bảng Định tuyến và Ranh giới Host-Only
Trên F01-tester (192.168.56.10), chạy lệnh ip -br addr và ip route. Xác nhận chỉ tồn tại duy nhất tuyến liên kết trực tiếp 192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.10 và không tồn tại tuyến default via ....
2
Bước 2: Kiểm thử Kép — Thông suốt Nội bộ (Positive Test) và Chặn đứng Ngoại vi (Negative Isolation Test)
Gửi gói tin ICMP/TCP từ F01-tester tới 192.168.56.20 (F01-linux-srv) và 192.168.56.30 (F01-win-trial) →\rightarrow Kết quả phải đạt 0% packet loss. Tiếp theo, thử kết nối tới địa chỉ IP của mạng công ty (10.0.1.1) và DNS công cộng (8.8.8.8) →\rightarrow Nhân hệ điều hành phải trả về lỗi tức thì RTNETLINK answers: Network is unreachable.
3
Bước 3: Tạo Biến đổi Trạng thái Có Chủ đích (State Mutation)
Trên F01-linux-srv, tạo một tệp đánh dấu /var/tmp/mutation_test.flag (có mã băm SHA-256 xác định) và dừng dịch vụ nginx. Trên F01-win-trial, tạo một thư mục tạm C:\Temp\LabMutation.
4
Bước 4: Thực thi Rollback về F01-start và Kiểm chứng Hậu khôi phục
Tắt máy ảo, chạy lệnh khôi phục về snapshot F01-start, khởi động lại và kiểm tra: tệp /var/tmp/mutation_test.flag cùng thư mục C:\Temp\LabMutation đã biến mất hoàn toàn, trong khi dịch vụ nginx hoạt động trở lại ở cổng 443 với chứng chỉ TLS ban đầu không đổi.

Toàn bộ thông số đo đạc và kết quả kiểm chứng trước/sau khi hoàn nguyên của cả 03 máy ảo được tổng hợp chi tiết tại bảng đối chiếu Table 1 dưới đây:

Table 1: Bảng Kiểm chứng Cấu hình 3 Máy ảo, Bằng chứng Cô lập và Kết quả Hoàn nguyên Snapshot F01-start
Định danh VM (Role)Hệ điều hành & Tài nguyênIP & Chế độ MạngKết quả Kiểm chứng Cô lập (Expected vs Actual)Trạng thái Trước Restore (Mutated)Trạng thái Sau Restore F01-start
F01-tester (Pentester VM)Kali/Ubuntu 24.04 LTS (2 vCPU, 2048 MB RAM)192.168.56.10/24 (Host-Only vboxnet0, No GW)Kỳ vọng: Ping .20/.30 OK; Ping 8.8.8.8 Unreachable. Thực tế: Khớp 100%, 0 gói rò rỉ ra en0.Lưu tệp /tmp/scan_draft.txt (SHA-256: e3b0c44...)Tệp /tmp/scan_draft.txt bị xóa sạch; trạng thái đĩa quay về UUID F01-start.
F01-linux-srv (Target App/DNS)Ubuntu Server 24.04 Headless (1 vCPU, 1024 MB RAM)192.168.56.20/24 (Host-Only vboxnet0, No GW)Kỳ vọng: Mở cổng 53/443 nội bộ; không định tuyến ra ngoài. Thực tế: Khớp 100%.Tạo /var/tmp/mutation_test.flag; dừng dịch vụ nginx.service.Tệp .flag biến mất; nginx.service tự động active (running) trên cổng 443.
F01-win-trial (Target Windows)Windows Server 2022 Eval (2 vCPU, 4096 MB RAM)192.168.56.30/24 (Host-Only vboxnet0, No GW)Kỳ vọng: Chỉ nhận kết nối từ 192.168.56.0/24; chặn outbound. Thực tế: Khớp 100%.Tạo thư mục C:\Temp\LabMutation và tài khoản tạm test_temp.Thư mục C:\Temp\LabMutation và tài khoản test_temp bị triệt tiêu hoàn toàn.

Qua dữ liệu thực nghiệm tại Table 1 , người phụ trách kỹ thuật có đầy đủ bằng chứng định lượng để ký xác nhận vượt qua chốt kiểm soát Lab Gate 0: môi trường hoàn toàn khép kín về mặt định tuyến và có khả năng tái lập trạng thái tiền kiểm thử một cách tất định (deterministic reproducibility) [18] .

7Tự làm tiếp: Kiểm toán Cấu hình Card Mạng Ảo và Sửa lỗi Rò rỉ Cầu nối (Bridged Leakage)

Tình huống thực tế: Trước khi phê duyệt cho một kỹ sư mới trong nhóm chạy bài thực hành rà quét, bạn kiểm tra cấu hình máy ảo F01-linux-srv và phát hiện kỹ sư đó đã vô tình gắn Card mạng số 1 (nic1) vào chế độ bridged (nối thẳng vào card Wi-Fi công ty) thay vì hostonly, đồng thời chưa chụp snapshot ngoại tuyến. Hãy điền các tham số còn khuyết ___ vào kịch bản kiểm toán và khắc phục dưới đây:

Kịch bản kiểm toán card mạng ảo, chuyển về Host-Only và chụp Offline Snapshot (bash)
1# 1. Truy vấn thông tin cấu hình máy ảo dưới dạng máy đọc (machinereadable) để kiểm tra chế độ nic1
2VBoxManage showvminfo "F01-linux-srv" --machinereadable | grep -E "^(nic1|hostonlyadapter1|VMState)="
3
4# 2. Tắt máy ảo an toàn (ACPI Shutdown) trước khi thay đổi cấu hình phần cứng mạng và chụp Offline Snapshot
5VBoxManage controlvm "F01-linux-srv" ___
6
7# 3. Chuyển chế độ Card mạng 1 (nic1) từ bridged về chế độ Host-Only gắn với giao diện vboxnet0
8VBoxManage modifyvm "F01-linux-srv" --nic1 ___ --hostonlyadapter1 "vboxnet0"
9
10# 4. Chụp mốc trạng thái chuẩn F01-start kèm mô tả rõ ràng
11VBoxManage snapshot "F01-linux-srv" ___ "F01-start" \
12 --description "Clean offline baseline isolated on 192.168.56.0/24"
13
14# 5. Xác minh lại cây snapshot vừa khởi tạo
15VBoxManage snapshot "F01-linux-srv" ___

8Hiểu lầm thường gặp trong Thiết lập Lab và Quản trị Snapshot

Hiểu lầm 1: Snapshot chính là bản Backup an toàn tuyệt đốiRủi ro Mất Dữ liệu
Nhiều người tin rằng chỉ cần chụp nhiều Snapshot là không bao giờ sợ mất máy ảo. Thực tế: Snapshot hoàn toàn phụ thuộc vào tệp đĩa gốc D0D_0 (theo phương trình Eq. (2) ). Nếu ổ cứng chứa D0D_0 bị lỗi hoặc tệp gốc bị hỏng cấu trúc header, mọi Snapshot đều không thể đọc được. Chỉ có xuất máy ảo ra tệp độc lập (.ova hoặc sao chép toàn bộ thư mục VM khi đã tắt máy sang ổ đĩa khác) mới được coi là Backup thực sự [11] .
Hiểu lầm 2: Chế độ mạng NAT đã đủ để cô lập hoàn toàn máy ảoRủi ro Vượt Scope
Một ngộ nhận nguy hiểm là cho rằng máy ảo đặt ở chế độ NAT có IP riêng 10.0.2.15 nên bị cô lập với mạng công ty. Thực tế: Chế độ NAT cho phép máy ảo khởi tạo kết nối đi ra (outbound) tới bất kỳ địa chỉ IP nào trong mạng nội bộ doanh nghiệp mà máy chủ vật lý nhìn thấy. Nếu chạy công cụ quét dải mạng hoặc khai thác lỗ hổng từ máy ảo NAT, gói tin tấn công vẫn đánh trúng máy chủ sản xuất của công ty.
Hiểu lầm 3: Chụp Live Snapshot (kèm RAM) luôn tốt hơn Offline SnapshotRủi ro Sai lệch Trạng thái
Chụp Snapshot khi máy ảo đang chạy tuy giúp khôi phục nhanh màn hình làm việc nhưng lại lưu cứng cả thời gian hệ thống cũ, các phiên kết nối TCP đã hết hạn (stale sockets), khóa phiên TLS trong RAM và tiêu tốn thêm hàng GB dung lượng đĩa cho tệp .sav. Khi khôi phục sau vài ngày, độ lệch đồng hồ (clock skew) dễ làm hỏng xác thực Kerberos/TLS. Do đó, mốc chuẩn đầu kỳ (F01-start) luôn ưu tiên chụp ở trạng thái Offline (Powered Off).
Hiểu lầm 4: Giữ lại hàng chục tầng Snapshot nối tiếp nhau để tiện tra cứuRủi ro Suy giảm I/O
Mỗi tầng Snapshot mới tạo thêm một tệp đĩa vi sai Δj\Delta_j trong chuỗi liên kết. Khi chuỗi vượt quá 5–7 tầng, Hypervisor phải duyệt qua hàng loạt bảng phân bổ khối (BAT) cho mỗi thao tác đọc/ghi đĩa, làm tốc độ phản hồi của máy ảo giảm mạnh và tăng nguy cơ lỗi khi hợp nhất đĩa (disk consolidation failure). Chuẩn vận hành tốt nhất là giữ cây Snapshot ngắn gọn (1 mốc gốc F01-start và tối đa 1–2 mốc trung gian đang làm việc).

9Nhìn tổng quan: Ma trận Đối chiếu Chế độ Mạng Ảo hóa và Chiến lược Lưu trữ Trạng thái

Để hỗ trợ Technical Lead đưa ra quyết định kiến trúc chuẩn xác khi thiết lập môi trường thực hành cho đội ngũ, bảng tổng hợp tại Table 2 đối chiếu chi tiết 5 chế độ mạng ảo hóa theo khả năng giao tiếp và mức độ an toàn cách ly:

Table 2: Ma trận Phân tích Bảo mật và Phạm vi Định tuyến của 5 Chế độ Mạng Ảo hóa
Chế độ Mạng (Mode)VM ↔ VM (Nội bộ Lab)VM ↔ Host OSVM → Mạng Công ty / InternetMạng Công ty → VMĐánh giá An toàn cho Pentest Lab
Host-OnlyCó (Cùng vSwitch)Có (Qua giao diện ảo vboxnet/vmnet)Không (Trừ khi Host bật IP Forward)KhôngĐạt chuẩn Khuyến nghị (Dễ bắt PCAP từ Host & Cô lập hoàn toàn ngoại vi)
Internal NetworkCó (Cùng tên mạng nội bộ)Không (Tách biệt cả với Host OS)KhôngKhôngĐạt chuẩn Tối đa (Dùng cho các phân vùng mạng nhạy cảm phía sau Firewall ảo)
NATKhông (Mỗi VM một nhánh riêng)Hạn chế (Qua Port Forwarding)Có (Qua IP thật của Host)Không (Trừ Port Forward)Không Đạt chuẩn Cô lập (Nguy cơ quét nhầm vào mạng LAN công ty từ trong VM)
NAT NetworkCó (Cùng dải NAT nội bộ)Hạn chế (Qua Port Forwarding)Có (Qua IP thật của Host)Không (Trừ Port Forward)Không Đạt chuẩn Cô lập (Tồn tại đường thoát mặc định ra mạng sản xuất)
Bridged (Cầu nối)Có (Qua Switch thật)Có (Qua mạng LAN thật)Có (Trực tiếp ngang hàng Host)Có (Mọi máy trong LAN đều thấy VM)CẤM TUYỆT ĐỐI (Phơi bày máy ảo chứa lỗ hổng và phát tán gói tin kiểm thử ra mạng thật)

Dựa trên bảng phân tích Table 2 , quy tắc thiết kế bắt buộc cho Safe Lab F01 là chỉ sử dụng Host-Only hoặc Internal Network. Song song với thiết kế mạng, việc lựa chọn cơ chế bảo toàn trạng thái giữa Snapshot, Full Clone và OVA Backup được đối chiếu trực diện trong ma trận dưới đây:

So sánh Kỹ thuật: Snapshot (CoW) vs Full Clone vs OVA/OVF Appliance Backup
Tiêu chí Kỹ thuậtSnapshot (Chuỗi Đĩa Vi sai CoW)Full Clone (Nhân bản Độc lập)OVA/OVF Appliance Backup
Cơ chế Lưu trữChỉ lưu khối dữ liệu thay đổi (Δj\Delta_j) tham chiếu về đĩa gốc D0D_0Sao chép toàn bộ đĩa ảo sang tệp mới hoàn toàn độc lậpĐóng gói đĩa ảo nén + cấu hình XML (.ovf) + manifest SHA-256 (.mf)
Thời gian Khởi tạo / Phục hồiCực nhanh (1–3 giây cho Offline Snapshot)Trung bình (2–5 phút tùy tốc độ SSD)Chậm hơn (5–15 phút do nén và tính checksum)
Khả năng Chống hỏng Đĩa gốcKhông (Đĩa gốc D0D_0 hỏng sẽ làm mất toàn bộ Snapshot)Có (Tồn tại độc lập trên cùng ổ đĩa)Rất cao (Lưu trữ sang ổ đĩa ngoài / NAS theo quy tắc 3-2-1)
Ứng dụng Chuẩn trong Pentest LabHoàn nguyên trạng thái sạch (F01-start) trước và sau mỗi bài họcTạo thêm máy chủ mục tiêu mới từ một máy mẫu chuẩnSao lưu dự phòng toàn bộ phòng lab sau khi hoàn tất dựng hạ tầng tuần 1

10Dự án nhỏ: Safe Lab F01 — Dựng 3 Máy ảo Cô lập, Kiểm chứng Snapshot/Restore và Lập Hồ sơ LAB-Architecture-v1.md

Mục tiêu Thực hành và Cấu trúc Hạ tầng Safe Lab F01Bắt buộc
Lab Catalog ID: F01
Thiết lập và nghiệm thu tối thiểu 03 máy ảo hoạt động đồng thời trên mạng chỉ giao tiếp nội bộ (Host-Only Network) 192.168.56.0/24: (1) F01-tester tại 192.168.56.10/24; (2) F01-linux-srv tại 192.168.56.20/24; và (3) F01-win-trial tại 192.168.56.30/24. Không cấu hình Default Gateway hoặc máy chủ DNS bên ngoài. Khởi tạo mốc trạng thái chuẩn F01-start cho cả ba máy ảo, chứng minh khả năng hoàn nguyên sạch (Clean-State Restore), và xuất bản hồ sơ kiến trúc LAB-Architecture-v1.md đạt chuẩn kiểm toán tại Table 3 .
Quy trình 10 Bước Thiết lập Hạ tầng, Kiểm chứng Cô lập và Chụp Snapshot F01-start
1
Bước 1: Ghi nhận Ủy quyền và Hồ sơ Preflight
Xác nhận môi trường thực thi là lab cô lập hợp lệ; ghi nhận mã Lab ID: F01, người thực hiện, thời gian bắt đầu theo chuẩn UTC, phiên bản Hypervisor, phiên bản hệ điều hành máy ảo và quy tắc dừng khẩn cấp (Stop Rule).
2
Bước 2: Khởi tạo Mạng Host-Only 192.168.56.0/24
Tạo giao diện mạng Host-Only vboxnet0 với địa chỉ Host Adapter 192.168.56.1/24; tắt dịch vụ cấp phát động nếu gán IP tĩnh; xác minh nhân hệ điều hành Host đã khóa chuyển tiếp gói tin (ip_forward = 0).
3
Bước 3: Dựng Máy Kiểm thử (F01-tester)
Khởi tạo máy ảo Linux F01-tester (2 vCPU, 2048 MB RAM), gắn duy nhất Card mạng 1 vào vboxnet0, đặt IP tĩnh 192.168.56.10/24, không đặt Default Gateway, tạo tài khoản thử nghiệm lab_analyst không chứa bí mật thật.
4
Bước 4: Dựng Máy chủ Mục tiêu Linux (F01-linux-srv)
Khởi tạo máy ảo F01-linux-srv (1 vCPU, 1024 MB RAM, chế độ Headless), gắn vào vboxnet0, đặt IP tĩnh 192.168.56.20/24, không đặt Default Gateway, cấu hình dịch vụ Web/TLS và DNS nội bộ phục vụ thực hành tuần 1.
5
Bước 5: Dựng Máy trạm/Server Mục tiêu Windows (F01-win-trial)
Khởi tạo máy ảo F01-win-trial (2 vCPU, 4096 MB RAM) từ bản dùng thử Windows Evaluation hợp lệ [10] , gắn vào vboxnet0, đặt IP tĩnh 192.168.56.30/24, không đặt Default Gateway, tạo tài khoản cục bộ giả lập win_auditor.
6
Bước 6: Kiểm chứng Allowlist và Cô lập Tầng 2/3
Từ từng máy ảo, kiểm tra bảng địa chỉ, bảng định tuyến, bảng ARP và xác nhận chỉ liên lạc được với hai địa chỉ IP trong lab; thử kết nối ra IP ngoài dải (8.8.8.8 và Gateway công ty) để chứng minh hệ điều hành chặn đứng với thông báo Network is unreachable.
7
Bước 7: Chụp Mốc Trạng thái Nền (Golden Baseline Snapshot F01-start)
Tắt sạch cả ba máy ảo (Clean Poweroff), kiểm tra trạng thái đĩa không còn tiến trình treo, sau đó tạo Offline Snapshot mang tên chính xác F01-start cho cả 3 máy ảo và ghi nhận mã định danh UUID kèm nhãn thời gian UTC.
8
Bước 8: Thực nghiệm Biến đổi Trạng thái và Kiểm chứng Restore
Khởi động 3 máy ảo, tạo một thay đổi dấu vết vô hại trên hệ thống tệp của từng máy, thu thập bằng chứng trước khi khôi phục, sau đó tắt máy và chạy lệnh hoàn nguyên về F01-start để xác nhận mọi thay đổi đã biến mất 100% như tại bảng Table 1 .
9
Bước 9: Xuất Bản sao lưu OVA Độc lập và Băm Toàn vẹn SHA-256
Xuất bản sao lưu dự phòng .ova theo nguyên tắc 3-2-1, biên soạn tệp báo cáo LAB-Architecture-v1.md và tính toán mã băm SHA-256 cho toàn bộ gói bằng chứng đã che thông tin nhạy cảm (redacted evidence).
10
Bước 10: Đóng Phiên Thực hành và Bàn giao Kiểm toán
Hoàn nguyên cả 3 máy ảo về trạng thái sạch F01-start, tắt máy ảo, xác nhận không còn khóa thử nghiệm hay tiến trình bắt gói tin nào chạy ngầm trên Host, và gửi hồ sơ cho Reviewer độc lập đánh giá.
Khởi tạo mạng Host-Only vboxnet0, cấu hình 3 VM và chụp Offline Snapshot F01-startbash
set -euo pipefail
# 1. Kiểm tra đảm bảo Host OS tắt chuyển tiếp gói tin IPv4 giữa các giao diện mạng
sysctl net.ipv4.ip_forward 2>/dev/null || sysctl net.inet.ip.forwarding
# 2. Cấu hình giao diện mạng cô lập vboxnet0 tại 192.168.56.1/24
VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0
# 3. Gắn chặt Card mạng 1 của cả 3 VM vào vboxnet0 và tắt toàn bộ các Card mạng 2-4
for vm in F01-tester F01-linux-srv F01-win-trial; do
VBoxManage modifyvm "$vm" --nic1 hostonly --hostonlyadapter1 vboxnet0
VBoxManage modifyvm "$vm" --nic2 none --nic3 none --nic4 none
done
# 4. Chụp mốc trạng thái chuẩn F01-start khi cả 3 VM đang ở trạng thái Powered Off
SNAPSHOT="F01-start"
STAMP_UTC="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
for vm in F01-tester F01-linux-srv F01-win-trial; do
VBoxManage snapshot "$vm" take "$SNAPSHOT" \
--description "Golden isolated baseline on 192.168.56.0/24 taken at $STAMP_UTC"
VBoxManage snapshot "$vm" list --machinereadable | grep -E "^(SnapshotName|SnapshotUUID)="
done
Kịch bản tự động kiểm chứng cô lập mạng (Isolation Proof) chạy từ F01-tester (bash)
1#!/usr/bin/env bash
2set -euo pipefail
3
4expected_cidr="192.168.56.0/24"
5expected_ip="192.168.56.10"
6forbidden_default="$(ip route show default || true)"
7if [ -n "$forbidden_default" ]; then
8 printf '%s\n' "STOP: Default gateway detected ($forbidden_default). Violates F01 isolation!" >&2
9 exit 1
10fi
11
12actual_ip="$(ip -4 -o addr show | awk '$4 ~ /^192\.168\.56\./ {print $4}' | cut -d/ -f1)"
13case "$actual_ip" in
14 "$expected_ip") ;;
15 *)
16 printf '%s\n' "STOP: Expected $expected_ip on $expected_cidr, found: $actual_ip" >&2
17 exit 1
18 ;;
19esac
20
21# Kiểm chứng kết nối nội bộ tới Linux Server (.20) và Windows Trial (.30)
22for target in 192.168.56.20 192.168.56.30; do
23 ping -c 1 -W 1 "$target" >/dev/null
24 printf 'PASS: Internal lab peer %s reachable.\n' "$target"
25done
26
27# Kiểm chứng chặn đứng kết nối ra ngoài phạm vi lab (Negative Isolation Test)
28for ext_ip in 8.8.8.8 1.1.1.1 10.0.0.1; do
29 if ping -c 1 -W 1 "$ext_ip" >/dev/null 2>&1; then
30 printf 'STOP: External IP %s is reachable! Breach of isolation boundary!\n' "$ext_ip" >&2
31 exit 1
32 else
33 printf 'PASS: Out-of-scope target %s blocked (Network is unreachable).\n' "$ext_ip"
34 fi
35done
36
37printf '%s\n' "VERIFIED: $expected_ip is strictly isolated within $expected_cidr with zero external routes."
Kịch bản kiểm chứng hoàn nguyên Snapshot F01-start và sinh hồ sơ chuẩn LAB-Architecture-v1.md (bash)
1#!/usr/bin/env bash
2set -euo pipefail
3
4LAB_DIR="${HOME}/pentest-lab/F01"
5EVIDENCE_DIR="${LAB_DIR}/evidence-redacted"
6ARTIFACT="${LAB_DIR}/LAB-Architecture-v1.md"
7MANIFEST="${LAB_DIR}/SHA256SUMS"
8UTC_NOW="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
9
10mkdir -p "$EVIDENCE_DIR"
11
12# 1. Hoàn nguyên cả 3 máy ảo về mốc F01-start và trích xuất bằng chứng trạng thái
13for vm in F01-tester F01-linux-srv F01-win-trial; do
14 VBoxManage controlvm "$vm" poweroff 2>/dev/null || true
15 VBoxManage snapshot "$vm" restore "F01-start"
16 VBoxManage showvminfo "$vm" --machinereadable | \
17 grep -E "^(name|memory|cpus|nic1|hostonlyadapter1|CurrentSnapshotName|CurrentSnapshotUUID)=" \
18 > "${EVIDENCE_DIR}/${vm}-vminfo.txt"
19done
20
21# 2. Tạo tệp báo cáo kiến trúc LAB-Architecture-v1.md chuẩn 16 trường lab_record_schema và 6 mục bắt buộc
22cat <<EOF > "$ARTIFACT"
23# LAB-Architecture-v1.md — Hồ sơ Kiến trúc Hạ tầng Cô lập & Kiểm chứng Snapshot
24
25## 1. Scope và Lab ID (kèm Hồ sơ 16 Trường Chuẩn lab_record_schema)
26- **lab_id**: \`F01\` (Bài học \`W01-L02\`: Dựng lab và snapshot)
27- **objective**: Dựng tối thiểu 03 máy ảo (\`F01-tester\`, \`F01-linux-srv\`, \`F01-win-trial\`) trong mạng cô lập \`192.168.56.0/24\` và chứng minh khả năng cô lập định tuyến cũng như hoàn nguyên trạng thái sạch \`F01-start\`.
28- **environment_build_id**: \`F01-BUILD-20261102-V1\`
29- **image_service_version**: Kali/Ubuntu 24.04 LTS (\`F01-tester\`), Ubuntu Server 24.04 LTS + Nginx 1.24 + Unbound DNS (\`F01-linux-srv\`), Windows Server 2022 Evaluation Build 20348 (\`F01-win-trial\`)
30- **network_scope_cidr**: \`192.168.56.0/24\` (Host-Only \`vboxnet0\`, không định tuyến NAT/Bridged)
31- **initial_snapshot_id**: \`F01-start\` (Offline Clean Baseline trên cả 3 VM)
32- **test_accounts**: \`lab_analyst\` (\`F01-tester\`), \`svc_webapp\` (\`F01-linux-srv\`), \`win_auditor\` (\`F01-win-trial\`) — *Redacted: Không lưu mật khẩu trong báo cáo*
33- **maximum_permitted_impact**: Chỉ thực hiện kiểm tra kết nối ICMP/TCP nội bộ và thử nghiệm tạo/xóa tệp đánh dấu trạng thái trong phạm vi \`192.168.56.0/24\`; tác động bằng 0 đối với hệ thống ngoài lab.
34- **task**: Thiết lập 3 VM, xác minh bảng định tuyến không có Default Gateway, chụp và hoàn nguyên snapshot \`F01-start\`.
35- **evidence_artifacts**: \`evidence-redacted/F01-tester-vminfo.txt\`, \`evidence-redacted/F01-linux-srv-vminfo.txt\`, \`evidence-redacted/F01-win-trial-vminfo.txt\`, \`SHA256SUMS\`
36- **expected_result**: Cả 3 VM thông suốt nội bộ (\`0% packet loss\`), chặn đứng 100% kết nối ra ngoài (\`Network is unreachable\`), và xóa sạch mọi biến đổi thử nghiệm sau khi chạy \`restore F01-start\`.
37- **actual_result**: Khớp 100% với kỳ vọng trên cả 3 máy ảo; không phát sinh bất kỳ gói tin rò rỉ nào ra giao diện vật lý.
38- **cleanup**: Đã hoàn nguyên cả 3 VM về mốc \`F01-start\`, tắt máy ảo và xóa toàn bộ khóa phiên tạm.
39- **duration_hours**: \`2.5\` giờ thực hành (trên tổng thời lượng bài học \`3.5\` giờ)
40- **reviewer**: \`Senior Infrastructure / Technical Lead Reviewer\`
41- **date_checked_utc**: \`${UTC_NOW}\`
42
43## 2. Preconditions và Phương pháp Kiểm chứng
44- **Điều kiện tiên quyết (Lab Gate 0)**: Máy chủ vật lý có 16 GB RAM khả dụng, đã tắt \`ip_forward=0\`; toàn bộ tệp ảnh máy ảo được kiểm tra mã băm SHA-256 trước khi nạp.
45- **Danh mục Công cụ Chuẩn hóa (Inventory Manifest)**:
46 \`tool_name | version | download_source | checksum | lab_id | license | last_validated | owner\`
47 - \`VirtualBox | 7.0.20 | virtualbox.org | sha256:verified_vbox7 | F01 | GPLv3 | ${UTC_NOW} | Lab-Lead\`
48 - \`Wireshark/tshark | 4.4.0 | wireshark.org | sha256:verified_ws44 | F01 | GPLv2 | ${UTC_NOW} | Lab-Lead\`
49- **Phương pháp**: Kiểm chứng hai chiều (Positive Peer Ping & Negative External Route Probe) kết hợp thử nghiệm gây biến đổi trạng thái có chủ đích (*State Mutation Test*) rồi đối chiếu trước/sau khi khôi phục \`F01-start\`.
50
51## 3. UTC Timestamp, Expected vs Actual và Evidence Redacted
52- **Thời điểm thực thi (UTC)**: \`${UTC_NOW}\`
53- **Bảng đối chiếu trạng thái các máy ảo**:
54 - \`F01-tester\` (\`192.168.56.10/24\`): Expected \`No Default Gateway, Snapshot=F01-start\` | Actual: \`PASS (nic1=hostonly, CurrentSnapshotName=F01-start)\`.
55 - \`F01-linux-srv\` (\`192.168.56.20/24\`): Expected \`No Default Gateway, Snapshot=F01-start\` | Actual: \`PASS (nic1=hostonly, CurrentSnapshotName=F01-start)\`.
56 - \`F01-win-trial\` (\`192.168.56.30/24\`): Expected \`No Default Gateway, Snapshot=F01-start\` | Actual: \`PASS (nic1=hostonly, CurrentSnapshotName=F01-start)\`.
57
58## 4. False Positives và Giới hạn Kỹ thuật
59- **Cảnh báo nhầm (False Positive) cần lưu ý**: Giao diện \`vboxnet0\` của máy chủ Host có địa chỉ \`192.168.56.1\` phản hồi gói tin ICMP từ máy ảo là hành vi bình thường của thiết bị chuyển mạch Host-Only, không phải là cổng định tuyến ra Internet (vì \`ip_forward=0\`).
60- **Giới hạn**: Môi trường \`F01\` là mạng phẳng 1 subnet \`/24\` phục vụ giai đoạn nền tảng; chưa mô phỏng bộ định tuyến đa phân vùng hay tường lửa trạng thái liên VLAN. Bản dùng thử Windows Server Evaluation có thời hạn giấy phép 180 ngày cần theo dõi định kỳ.
61
62## 5. Remediation hoặc Quyết định Tiếp theo
63- **Khắc phục/Củng cố**: Đã xuất thêm bản sao lưu độc lập (\`.ova\`) lưu ra ổ cứng ngoài để phòng ngừa rủi ro hỏng tệp đĩa gốc $D_0$.
64- **Quyết định tiếp theo**: Hạ tầng đạt chuẩn **PASS Lab Gate 0**, đủ điều kiện an toàn để chuyển sang bài học \`W01-L03\` (Capture traffic có kiểm soát bằng Wireshark).
65
66## 6. Reviewer và Ngày Kiểm tra
67- **Người kiểm tra (Reviewer)**: \`Senior Infrastructure Reviewer\`
68- **Ngày giờ kiểm tra (UTC)**: \`${UTC_NOW}\`
69- **Trạng thái phê duyệt**: \`APPROVED FOR W01-L03\`
70EOF
71
72# 3. Tính toán mã băm SHA-256 cho toàn bộ bằng chứng và chính tệp báo cáo
73find "$EVIDENCE_DIR" -type f -print0 | sort -z | xargs -0 shasum -a 256 > "$MANIFEST"
74shasum -a 256 "$ARTIFACT" >> "$MANIFEST"
75printf '\n## Phụ lục Mã băm Toàn vẹn (SHA-256 Checksums)\n```text\n%s\n```\n' "$(cat "$MANIFEST")" >> "$ARTIFACT"
Đặc tả Cấu trúc Bắt buộc của Hồ sơ LAB-Architecture-v1.mdF01
Tiêu chuẩn Nghiệm thu
Tệp báo cáo LAB-Architecture-v1.md phải được lưu ở định dạng Markdown UTF-8, đáp ứng các tiêu chí chấm điểm tại thang đo hành vi Table 3 và bao gồm đầy đủ 06 nhóm nội dung bắt buộc: 1. Scope và Lab ID: Ghi rõ Lab ID: F01, dải mạng 192.168.56.0/24, danh sách 3 máy ảo và toàn bộ 16 trường siêu dữ liệu thuộc lab_record_schema. 2. Preconditions và Phương pháp: Trình bày điều kiện phần cứng, trạng thái khóa chuyển tiếp IP trên Host, danh mục công cụ (Inventory Manifest) và phương pháp kiểm chứng cô lập/hoàn nguyên. 3. UTC Timestamp, Expected/Actual và Evidence Redacted: Ghi nhãn thời gian chuẩn UTC, bảng đối chiếu kết quả kỳ vọng và thực tế của từng máy ảo, cam kết đã loại bỏ toàn bộ mật khẩu hoặc khóa nhạy cảm. 4. False Positive và Giới hạn: Phân biệt rõ phản hồi từ giao diện Host Adapter 192.168.56.1 với lỗi rò rỉ định tuyến thực sự; nêu rõ giới hạn của mô hình 1 subnet và thời hạn bản dùng thử Windows. 5. Remediation hoặc Bước Tiếp theo: Nêu biện pháp sao lưu dự phòng .ova và quyết định cho phép chuyển sang bài thực hành tiếp theo (W01-L03). 6. Reviewer và Ngày Kiểm tra: Ghi rõ định danh người rà soát độc lập, ngày giờ kiểm tra theo UTC và bảng mã băm SHA-256 khớp với tệp SHA256SUMS.

11Tự kiểm tra

Trước khi hoàn tất bài học, hãy thực hiện truy hồi kiến thức tích hợp từ bài W01-L01 và bài W01-L02: một ranh giới tin cậy (trust boundary) trên lý thuyết chỉ thực sự có hiệu lực khi được bảo chứng bằng cấu hình bộ chuyển mạch ảo cô lập và quy trình kiểm chứng bảng định tuyến thực nghiệm. Kết quả thực hành Safe Lab F01 và hồ sơ LAB-Architecture-v1.md được đánh giá theo thang đo hành vi tại Table 3 .

Quiz 1: Kiểm tra Mức độ Nắm vững Kiến thức W01-L02Score: 0 / 4
1. Trong thiết kế Safe Lab F01 với ba máy ảo (F01-tester, F01-linux-srv, F01-win-trial), cấu hình mạng ảo hóa nào đảm bảo đồng thời khả năng giao tiếp giữa các máy ảo, khả năng bắt gói tin từ giao diện của Host và ngăn chặn tuyệt đối việc rò rỉ gói tin kiểm thử ra mạng LAN công ty?
Explanation: Chế độ Host-Only kết hợp tắt IP Forwarding trên Host tạo ra một bộ chuyển mạch ảo khép kín giữa 3 VM và giao diện loopback của Host, cho phép bắt gói tin bằng Wireshark mà không có bất kỳ tuyến định tuyến nào thoát ra mạng vật lý. Chế độ Bridged nối thẳng VM vào mạng thật, còn NAT vẫn cho phép VM phát gói tin đi vào mạng LAN của công ty qua IP của Host.
2. Phát biểu nào dưới đây mô tả chính xác sự khác biệt về bản chất kỹ thuật giữa cơ chế Snapshot (Copy-on-Write) và bản sao lưu độc lập (OVA/OVF Full Backup)?
Explanation: Theo cơ chế Copy-on-Write (phương trình chuỗi đĩa vi sai), các tệp Delta chỉ chứa dữ liệu thay đổi so với đĩa gốc D0. Do đó Snapshot giúp rollback cực nhanh nhưng không thể thay thế bản sao lưu OVA độc lập khi xảy ra sự cố hỏng ổ cứng chứa đĩa gốc.
3. Một máy trạm vật lý có tổng dung lượng 16 GB RAM. Theo công thức quy hoạch ngân sách bộ nhớ (giữ lại 4 GB cho Host OS và khoảng 2 GB biên độ an toàn cộng chi phí quản lý Hypervisor), phương án phân bổ RAM nào hợp lý nhất để vận hành đồng thời 3 máy ảo của Safe Lab F01 mà không gây hiện tượng tráo đổi trang đĩa (thrashing)?
Explanation: Với tổng RAM cấp cho 3 máy ảo là 2 + 1 + 4 = 7 GB, cộng thêm khoảng 0.8 GB chi phí quản lý VMM, 4 GB cho Host OS và 2 GB biên độ an toàn, tổng mức tiêu thụ đạt khoảng 13.8 GB (< 16 GB), đảm bảo cả 3 máy ảo và trình bắt gói tin Wireshark hoạt động ổn định không bị tràn bộ nhớ.
4. Liên hệ lại kiến thức về Ranh giới Tin cậy (Trust Boundary) ở bài W01-L01: khi nghiệm thu hồ sơ LAB-Architecture-v1.md tại chốt kiểm soát Lab Gate 0, bằng chứng nào chứng minh ranh giới cô lập của phòng lab thực sự có hiệu lực?
Explanation: Ping nội bộ thành công chỉ chứng minh tính thông suốt trong cùng miền quảng bá (Positive Test), hoàn toàn không chứng minh được việc thiếu vắng đường thoát ra ngoài (Negative Test). Bằng chứng đạt chuẩn Lab Gate 0 bắt buộc phải xác minh bảng định tuyến, kiểm tra từ chối kết nối ra ngoài, thực nghiệm hoàn nguyên snapshot F01-start và khóa mã băm SHA-256.
Answer Key (Quiz 1):
Q1: C — Đặt cả ba máy ảo vào cùng một mạng Host-Only cô lập (192.168.56.0/24), không cấu hình Default Gateway và xác nhận máy chủ Host đã tắt tính năng IP Forwarding. (Chế độ Host-Only kết hợp tắt IP Forwarding trên Host tạo ra một bộ chuyển mạch ảo khép kín giữa 3 VM và giao diện loopback của Host, cho phép bắt gói tin bằng Wireshark mà không có bất kỳ tuyến định tuyến nào thoát ra mạng vật lý. Chế độ Bridged nối thẳng VM vào mạng thật, còn NAT vẫn cho phép VM phát gói tin đi vào mạng LAN của công ty qua IP của Host.)
Q2: C — Snapshot đóng băng đĩa gốc D0 thành chỉ đọc và ghi các khối thay đổi vào tệp đĩa vi sai phụ thuộc chuỗi UUID để hoàn nguyên tức thì, nhưng nếu đĩa gốc D0 bị hỏng thì toàn bộ chuỗi Snapshot sẽ mất hiệu lực; trong khi OVA đóng gói độc lập toàn bộ đĩa và cấu hình để bảo toàn theo quy tắc 3-2-1. (Theo cơ chế Copy-on-Write (phương trình chuỗi đĩa vi sai), các tệp Delta chỉ chứa dữ liệu thay đổi so với đĩa gốc D0. Do đó Snapshot giúp rollback cực nhanh nhưng không thể thay thế bản sao lưu OVA độc lập khi xảy ra sự cố hỏng ổ cứng chứa đĩa gốc.)
Q3: C — Cấp khoảng 2048 MB (2 GB) cho F01-tester, 1024 MB (1 GB) cho F01-linux-srv chạy chế độ dòng lệnh (headless), và 4096 MB (4 GB) cho F01-win-trial. (Với tổng RAM cấp cho 3 máy ảo là 2 + 1 + 4 = 7 GB, cộng thêm khoảng 0.8 GB chi phí quản lý VMM, 4 GB cho Host OS và 2 GB biên độ an toàn, tổng mức tiêu thụ đạt khoảng 13.8 GB (< 16 GB), đảm bảo cả 3 máy ảo và trình bắt gói tin Wireshark hoạt động ổn định không bị tràn bộ nhớ.)
Q4: B — Cung cấp đầu ra kiểm chứng bảng định tuyến không có Default Gateway, kết quả thử nghiệm kết nối nội bộ thành công kèm kết quả chặn đứng kết nối ra ngoài phạm vi (Network is unreachable), trạng thái khớp UUID của snapshot F01-start và bảng mã băm SHA-256. (Ping nội bộ thành công chỉ chứng minh tính thông suốt trong cùng miền quảng bá (Positive Test), hoàn toàn không chứng minh được việc thiếu vắng đường thoát ra ngoài (Negative Test). Bằng chứng đạt chuẩn Lab Gate 0 bắt buộc phải xác minh bảng định tuyến, kiểm tra từ chối kết nối ra ngoài, thực nghiệm hoàn nguyên snapshot F01-start và khóa mã băm SHA-256.)

Hồ sơ bài nộp LAB-Architecture-v1.md và quá trình thực thi Safe Lab F01 của học viên được chấm điểm độc lập dựa trên thang đo hành vi 5 mức độ tại bảng Table 3 dưới đây:

Table 3: Thang đo Hành vi Đánh giá Năng lực (Behavior Scale Rubric) cho W01-L02
Mức điểmHành vi Năng lực Quan sátTiêu chí Đạt chuẩn Bằng chứng (LAB-Architecture-v1.md)Phân loại Quyết định
0Không có bằng chứngKhông nộp hồ sơ LAB-Architecture-v1.md, thiếu Lab ID/Scope, hoặc không chứng minh được sự cô lập mạng và khả năng khôi phục snapshotGiữ lại và đình chỉ đánh giá (FAIL)
25Thuật lại lý thuyếtMô tả khái niệm Host-Only, Snapshot hoặc Backup bằng lời nhưng không có dữ liệu Expected/Actual thực tế, thiếu nhãn thời gian UTC và bằng chứng đã che mật khẩuChưa đạt; yêu cầu thực hành lại từ đầu
50Làm được khi có hướng dẫn, bằng chứng chưa đầy đủDựng được 3 máy ảo theo hướng dẫn nhưng thiếu kiểm chứng bảng định tuyến âm tính, thiếu kiểm tra hoàn nguyên F01-start thực tế hoặc thiếu mã băm SHA-256Chưa đạt; cần bổ sung bằng chứng dưới sự giám sát
75Tự làm độc lập, bằng chứng tái lập và xử lý hợp lýHồ sơ LAB-Architecture-v1.md đủ 16 trường lab_record_schema và 6 mục bắt buộc; chứng minh cô lập và restore F01-start thành công; có nhận diện giới hạn và bước tiếp theoĐạt chuẩn; đủ điều kiện mở khóa bài W01-L03
100Đạt mức 75 kèm phân tích false positives, giới hạn, rollback và trade-offsNgoài tiêu chí mức 75, phân tích sâu rủi ro rò rỉ giữa Host-Only/NAT/Bridged, định lượng ngân sách RAM/CoW storage, đối chiếu Snapshot với OVA 3-2-1 và kiểm chứng tự động bằng scriptVượt chuẩn; đạt năng lực dẫn dắt kỹ thuật (Technical Lead)

12Nhìn lại

Trước khi chuyển sang bài học tiếp theo, hãy tự đặt hai câu hỏi phản tư với tư cách một Technical Lead chịu trách nhiệm cao nhất về an toàn vận hành của nhóm kiểm thử: 1. Trong 10 bước thiết lập và kiểm chứng Safe Lab F01 vừa thực hiện, bước nào nếu bị một thành viên trong nhóm làm tắt hoặc bỏ qua sẽ dẫn đến nguy cơ phát tán gói tin kiểm thử ra mạng sản xuất của công ty cao nhất, và cơ chế kiểm tra tự động bằng kịch bản của bạn đã khóa chặt rủi ro đó như thế nào? 2. Nếu ngày mai ổ cứng SSD chứa tệp đĩa gốc của máy chủ mục tiêu bị lỗi vật lý ngay trước buổi kiểm tra nghiệm thu, quy trình kết hợp giữa Offline Snapshot F01-start và bản sao lưu độc lập OVA 3-2-1 của bạn mất chính xác bao nhiêu phút để khôi phục lại toàn bộ phòng lab với mã băm không đổi?

13Đọc thêm

Tài liệu Tham khảo Tiêu chuẩn và Học thuật Quốc tế

  1. [1]
    K. Scarfone, M. Souppaya, P. Hoffman. Guide to Security for Full Virtualization Technologies. NIST Special Publication 800-125, National Institute of Standards and Technology, 2011.
  2. [2]
    R. Chandramouli. Security Recommendations for Server-based Hypervisor Platforms. NIST Special Publication 800-125A Rev. 1, National Institute of Standards and Technology, 2018.
  3. [3]
    K. Scarfone, M. Souppaya, A. Cody, A. Orebaugh. Technical Guide to Information Security Testing and Assessment. NIST Special Publication 800-115, National Institute of Standards and Technology, 2008.
  4. [4]
    S. Rose, O. Borchert, S. Mitchell, S. Connelly. Zero Trust Architecture. NIST Special Publication 800-207, National Institute of Standards and Technology, 2020.
  5. [5]
    Y. Rekhter, B. Moskowitz, D. Karrenberg, G. J. de Groot, E. Lear. Address Allocation for Private Internets. RFC 1918 (BCP 5), Internet Engineering Task Force (IETF), 1996.
  6. [6]
    W. Eddy (Ed.). Transmission Control Protocol (TCP) Specification. RFC 9293 (STD 7), Internet Engineering Task Force (IETF), 2022.
  7. [7]
    E. Rescorla. The Transport Layer Security (TLS) Protocol Version 1.3. RFC 8446, Internet Engineering Task Force (IETF), 2018.
  8. [8]
    G. Combs, U. Lamping, R. Sharpe, E. Warnicke. Wireshark User's Guide (v4.4). Wireshark Documentation Project, 2024.
  9. [9]
    G. Lyon. Nmap Network Scanning: The Official Nmap Project Guide to Network Discovery and Vulnerability Scanning. Insecure.Com LLC, 2009.
  10. [10]
    Microsoft Learn. Windows Server and Client Security Documentation. Microsoft Corporation, 2024.
  11. [11]
    Z. Zhang, G. Lu, C. Zhang, Y. Gao, Y. Wu, G. Zhong. CyFRS: A Fast Recoverable System for Cyber Range Based on Real Network Environment. 2020 Information Communication Technologies Conference (ICTC, IEEE, DOI: 10.1109/ICTC49638.2020.9123273), 2020.
  12. [12]
    M. N. Katsantonis, A. Manikas, I. Mavridis, D. Gritzalis. Cyber range design framework for cyber security education and training. International Journal of Information Security (Springer Nature, Vol. 22, pp. 1005-1027, DOI: 10.1007/s10207-023-00680-4), 2023.
  13. [13]
    I. Lates, C. Boja. Cyber Range Technology Stack Review. Education, Research and Business Technologies (Springer Nature, Smart Innovation, Systems and Technologies, Vol. 321, DOI: 10.1007/978-981-19-6755-9_3), 2023.
  14. [14]
    T. C. Ong, B. Premkumar, H. Guo. Cyber Range Revolution: Transforming the Future of Cybersecurity Training. 2023 IEEE International Conference on Service Operations and Logistics, and Informatics (SOLI, IEEE, DOI: 10.1109/SOLI60636.2023.10425741), 2023.
  15. [15]
    W. Pan, X. Liu, J. Han, W. Zheng, M. Yin. Scorpio: an Automated Penetration Testing Tool and Its Integration with a Cyber Range. 2021 2nd International Conference on Electronics, Communications and Information Technology (CECIT, IEEE, DOI: 10.1109/CECIT53797.2021.00051), 2021.
  16. [16]
    C. Lal, M. M. Yamin, G. Spathoulas. Navigating cyber range federations: an exploration of current landscape, obstacles, and prospects. International Journal of Information Security (Springer Nature, DOI: 10.1007/s10207-026-01226-0), 2026.
  17. [17]
    W. Lazarov, T. Schafeitel-Tahtinen, R. Fujdiak. Lessons Learned from Using Cyber Range to Teach Cybersecurity at Different Levels of Education. Technology, Knowledge and Learning (Springer Nature, DOI: 10.1007/s10758-025-09840-y), 2025.
  18. [18]
    F. Z. Fri, K. Chougdali. Cyber Range Frameworks: Comparison of Cybersecurity Learning Methods. Proceedings of the 3rd International Conference on Cybersecurity and Artificial Intelligence (Springer Nature, DOI: 10.1007/978-3-032-12869-0_9), 2026.