Xóa dữ liệu an toàn trên Linux: Tại sao ‘rm’ là chưa đủ và cách khắc phục

Security tutorial - IT technology blog
Security tutorial - IT technology blog

Lệnh ‘rm’ chỉ là một lời nói dối

Hầu hết người dùng Linux coi lệnh rm như một lò đốt rác kỹ thuật số. Nó nhanh, hiệu quả và có vẻ là dấu chấm hết cho dữ liệu. Tuy nhiên, tôi đã học được một bài học đắt giá rằng nó giống như việc giấu một thư mục sau tấm màn hơn. Nhiều năm trước, một đồng nghiệp đã vô tình xóa một file cấu hình database quan trọng dung lượng 500MB. Chỉ bằng một công cụ forensic (pháp chứng kỹ thuật số) cơ bản, tôi đã kéo toàn bộ file đó trở lại từ “hư vô” trong chưa đầy năm phút. Đó là hồi chuông cảnh tỉnh đối với tôi: việc xóa thông thường để lại dữ liệu của bạn hoàn toàn hớ hênh.

Khi bạn xóa một file trên hệ thống tệp EXT4 hoặc XFS, hệ điều hành không hề quét sạch ổ đĩa. Nó chỉ đơn giản là hủy liên kết con trỏ file và đánh dấu các khối (block) đó là ‘có sẵn’ để sử dụng trong tương lai. Các bit thực tế—như mật khẩu, khóa riêng tư (private key) hoặc dữ liệu khách hàng—vẫn nằm trên ổ đĩa vật lý. Chúng sẽ ở đó cho đến khi một file khác vô tình ghi đè lên. Cho đến lúc đó, bất kỳ ai có bản sao của TestDisk hoặc PhotoRec đều có thể phục hồi thông tin đã ‘xóa’ của bạn.

Tại sao hệ điều hành của bạn lại để lại dữ liệu

Các hệ thống tệp hiện đại ưu tiên tốc độ và tuổi thọ phần cứng. Việc ghi các số không (zero) lên mọi byte đã xóa sẽ làm giảm hiệu suất hệ thống và khiến thiết bị lưu trữ bị mòn sớm. Do đó, Linux chọn con đường hiệu quả nhất: nó quên vị trí của file nhưng vẫn giữ nguyên dữ liệu trên phiến đĩa hoặc chip flash.

Sự hiệu quả này là một rủi ro lớn khi thanh lý máy chủ hoặc trả lại laptop thuê. Nếu bạn đang xử lý dữ liệu nhạy cảm, không gian ‘có sẵn’ chính là một lỗ hổng bảo mật. Các công cụ xóa an toàn giải quyết vấn đề này bằng cách ghi đè lên các khối dữ liệu nhiều lần với các mẫu ngẫu nhiên. Quá trình này đảm bảo thông tin gốc không thể khôi phục được, ngay cả khi ai đó sử dụng thiết bị forensic chuyên dụng trong phòng thí nghiệm.

Chọn công cụ phù hợp: Shred, Wipe hoặc DD

Không có một tiện ích duy nhất nào phù hợp cho mọi kịch bản. Lựa chọn của bạn phụ thuộc vào việc bạn đang nhắm mục tiêu vào một file cụ thể, một thư mục hỗn độn hay một ổ cứng 2TB.

1. Shred

Nằm trong bộ GNU Coreutils, shred có lẽ đã có sẵn trên máy của bạn. Nó ghi đè lên các file nhiều lần để che giấu dữ liệu gốc. Nó cực kỳ tuyệt vời cho các tài liệu riêng lẻ. Tuy nhiên, nó gặp khó khăn với các hệ thống tệp có ghi nhật ký (journaled filesystems), nơi hệ điều hành có thể ghi dữ liệu đã ‘shred’ vào một vị trí vật lý mới thay vì ghi đè lên vị trí cũ.

2. Wipe

Nếu bạn muốn một công cụ được xây dựng riêng cho mục đích bảo mật, wipe là tiêu chuẩn vàng. Nó sử dụng các mẫu phức tạp để vô hiệu hóa các chữ ký từ tính trên ổ cứng truyền thống. Nó triệt để hơn shred nhưng tốn thời gian hơn vì thực hiện nhiều lượt ghi đè—thường lên đến 34 lần lặp lại theo mặc định.

3. DD (Kẻ hủy diệt ổ đĩa)

Tiện ích dd là một công cụ cấp thấp đầy sức mạnh. Nó không quan tâm đến các file; nó chỉ nhìn thấy các khối dữ liệu. Mặc dù không phải là một công cụ xóa chuyên dụng, nhưng đây là cách hiệu quả nhất để xóa sạch toàn bộ một phân vùng. Bằng cách truyền các số không hoặc dữ liệu ngẫu nhiên qua toàn bộ thiết bị, bạn đảm bảo không còn gì sót lại.

So sánh nhanh

Công cụ Tốt nhất cho Ưu điểm Nhược điểm
shred Các file đơn lẻ Cài đặt sẵn và nhanh. Yếu khi xử lý thư mục và hệ thống tệp journaled.
wipe Các thư mục nhạy cảm Xử lý tốt các thư mục đệ quy. Chậm; cần cài đặt thủ công.
dd Toàn bộ ổ đĩa Phổ biến và mạnh mẽ. Rất nguy hiểm; một lỗi đánh máy có thể xóa sạch hệ điều hành.

Quy trình bảo mật của tôi

Tôi không bao giờ bắt đầu xóa dữ liệu mà không bảo mật môi trường của mình trước. Ví dụ, khi thiết lập một node bảo mật mới, tôi sử dụng toolcraft.app/vi/tools/security/password-generator để tạo mật khẩu root 32 ký tự. Tôi thích công cụ này vì nó chạy cục bộ trong trình duyệt. Không có dữ liệu nào chạm tới mạng. Cách tiếp cận ‘zero-trust’ này cũng nên được áp dụng cho cách bạn xóa dữ liệu.

Trong thói quen hàng ngày, tôi sử dụng shred để dọn dẹp file nhanh chóng. Đối với các thư mục dự án, tôi dựa vào wipe. Nếu tôi tái chế một ổ HDD cũ, tôi chạy một lượt dd, sau đó là tiêu hủy vật lý hoặc thực hiện lệnh xóa ở cấp độ phần cứng.

Cách sử dụng các công cụ này một cách chính xác

Xóa an toàn một file đơn lẻ với Shred

Để tiêu hủy hoàn toàn một file, hãy sử dụng các cờ sau: -u (xóa file sau khi ghi đè), -v (hiển thị tiến trình) và -n (thiết lập số lượt ghi đè).

# Ghi đè file 5 lần sau đó xóa nó
shred -uvn 5 secret_report.pdf

Mặc dù mặc định là 3 lượt, nhưng 5 lượt là con số ‘lý tưởng’ cho các ổ đĩa mật độ cao hiện đại.

Dọn dẹp thư mục với Wipe

shred không xử lý tốt các thư mục, hãy sử dụng wipe cho mục đích này. Đầu tiên, hãy cài đặt nó:

sudo apt install wipe  # Dành cho Ubuntu/Debian
sudo dnf install wipe  # Dành cho Fedora

Sau đó, sử dụng các cờ đệ quy và bắt buộc:

# Xóa an toàn một thư mục và mọi thứ bên trong
wipe -rf ./private_project/

Xóa sạch toàn bộ ổ đĩa với DD

Cảnh báo: Xác định chính xác ổ đĩa của bạn bằng lệnh lsblk. Nếu bạn nhắm mục tiêu vào /dev/sda thay vì /dev/sdb, bạn sẽ xóa sạch hệ điều hành của mình ngay lập tức.

Để lấp đầy ổ đĩa bằng các số không (phương pháp nhanh nhất):

sudo dd if=/dev/zero of=/dev/sdX bs=1M status=progress

Để lấp đầy ổ đĩa bằng dữ liệu ngẫu nhiên (an toàn hơn trước các biện pháp khôi phục forensic):

sudo dd if=/dev/urandom of=/dev/sdX bs=1M status=progress

Ngoại lệ với SSD và NVMe

Đây là điểm mấu chốt: shredwipe được thiết kế cho các ổ cứng quay kiểu cũ. Ổ cứng thể rắn (SSD) sử dụng một lớp Flash Translation Layer (FTL) và cơ chế cân bằng độ mòn (wear leveling). Khi bạn yêu cầu hệ điều hành ghi đè lên ‘Sector A’, bộ điều khiển SSD thực tế có thể ghi dữ liệu đó vào ‘Sector Z’ để phân bổ độ mòn. Dữ liệu gốc vẫn còn nguyên vẹn trong một khu vực ẩn.

Đối với SSD, đừng lãng phí thời gian với việc ghi đè 30 lượt. Hãy sử dụng tính năng NVMe Format hoặc ATA Secure Erase có sẵn của ổ đĩa. Lệnh này yêu cầu bộ điều khiển xả toàn bộ điện áp trong tất cả các ô nhớ NAND cùng một lúc.

# Dành cho ổ NVMe (xóa tức thì)
sudo nvme format /dev/nvme0n1 --ses=1

Đây là phương pháp duy nhất tôi tin tưởng để thực sự ‘làm sạch’ một ổ SSD trong vài giây.

Lời kết

Bảo mật dữ liệu không chỉ là về tường lửa mạnh; đó còn là về cách bạn xử lý dữ liệu khi kết thúc vòng đời của nó. Từ bỏ thói quen dùng rm là điều khó khăn. Tuy nhiên, đối với bất kỳ file nào chứa thông tin đăng nhập hoặc mã nguồn độc quyền, việc sử dụng shred hoặc wipe là bắt buộc. Thà tốn thêm mười giây ngay bây giờ còn hơn để xảy ra rò rỉ dữ liệu nghiêm trọng sau này.

Share: