Bảo vệ File Linux Khỏi Root: Tuyệt chiêu với chattr và lsattr

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Tại sao chmod thôi là chưa đủ?

Gõ nhầm rm -rf là cơn ác mộng kinh điển của mọi Sysadmin. Chỉ mất 1 giây để một file cấu hình quan trọng biến mất, nhưng bạn có thể mất 2 tiếng đồng hồ để khôi phục hệ thống và giải trình với sếp. Đôi khi, lỗi không đến từ con người mà từ các script tự động hoặc mã độc cố tình ghi đè /etc/resolv.conf để thay đổi DNS của server.

Có một lầm tưởng phổ biến: Quyền Root là tối thượng và có thể làm mọi thứ. Thực tế, trong quản trị hệ thống chuyên nghiệp, chúng ta cần một lớp khóa vật lý chắc chắn hơn. Đó là lúc chattr (Change Attribute) và lsattr (List Attribute) vào cuộc.

Khác với chmod chỉ quản lý quyền Đọc/Ghi/Thực thi cho User, chattr can thiệp trực tiếp vào thuộc tính của hệ thống file (filesystem attributes). Nó thiết lập trạng thái “bất biến” (immutable). Khi đã khóa, ngay cả Root cũng không thể xóa, đổi tên hay sửa nội dung trừ khi thuộc tính này được gỡ bỏ một cách chủ đích.

Tôi từng quản lý cụm server CentOS 7 cho một sàn thương mại điện tử. Phía đối tác thường xuyên vào check log nhưng đôi khi lại “táy máy” sửa nhầm file config Nginx. Thay vì thu hồi quyền Root gây rắc rối cho quy trình, tôi chỉ cần dùng chattr để khóa cứng file lại. Kết quả là 0 vụ downtime do sai cấu hình trong suốt 1 năm sau đó.

Cài đặt và kiểm tra công cụ

Bộ công cụ này cực kỳ nhẹ và thường có sẵn trên hầu hết bản phân phối Linux như Ubuntu, Debian hay RHEL. Chúng nằm trong gói e2fsprogs.

Hãy kiểm tra nhanh bằng hai lệnh sau:

which chattr
which lsattr

Nếu server của bạn thiếu (trường hợp rất hiếm), hãy cài đặt ngay:

# Cho Ubuntu/Debian
sudo apt update && sudo apt install e2fsprogs

# Cho RHEL/CentOS/AlmaLinux
sudo yum install e2fsprogs

Cách biến file thành “bất khả xâm phạm”

Cú pháp của chattr rất dễ nhớ: chattr [toán tử] [thuộc tính] [tên_file]. Bạn dùng dấu + để thêm thuộc tính và - để gỡ bỏ.

1. Thuộc tính +i (Immutable) – Khóa cứng tuyệt đối

Đây là “tuyệt chiêu” mạnh nhất. Khi gán +i, file sẽ rơi vào trạng thái đóng băng. Không ai có thể xóa, đổi tên, tạo link hay ghi đè. Kể cả Root cũng sẽ nhận thông báo lỗi “Operation not permitted”.

# Khóa file passwd để ngăn tạo thêm user trái phép
sudo chattr +i /etc/passwd

# Thử xóa để test độ lỳ
sudo rm -f /etc/passwd
# Kết quả: rm: cannot remove '/etc/passwd': Operation not permitted

2. Thuộc tính +a (Append-only) – Chỉ cho phép ghi thêm

Thuộc tính này là cứu cánh cho các file log. Bạn muốn ứng dụng vẫn ghi thêm dữ liệu mới nhưng không cho phép bất kỳ ai (kể cả hacker đã chiếm quyền) xóa dấu vết cũ.

# Thiết lập file log chỉ cho phép ghi nối đuôi
sudo chattr +a /var/log/secure_activity.log

# Thử ghi đè (sẽ thất bại ngay)
echo "xoa het dữ liệu" > /var/log/secure_activity.log
# Kết quả: Permission denied

# Thử ghi thêm (thành công rực rỡ)
echo "them dong log moi" >> /var/log/secure_activity.log

3. Các thuộc tính hữu ích khác

  • +c: Tự động nén file trên đĩa cứng để tiết kiệm dung lượng.
  • +u: Giúp khôi phục dữ liệu dễ dàng hơn sau khi bị xóa.
  • +s: Xóa dữ liệu an toàn bằng cách ghi đè số 0, không thể phục hồi bằng phần mềm.

Kiểm tra thuộc tính với lsattr

Lệnh ls -l thông thường không thể thấy được các thuộc tính này. Bạn phải dùng lsattr để soi kỹ lớp bảo vệ ẩn.

# Soi thuộc tính file
lsattr /etc/passwd

# Kết quả hiển thị:
# ----i---------e---- /etc/passwd

Ký tự i xác nhận file đang bị khóa cứng. Nếu chỉ thấy các dấu gạch ngang --------------, nghĩa là file đang ở trạng thái bình thường.

Quy trình chỉnh sửa file đang khóa

Khi cần bảo trì, bạn thực hiện theo 3 bước: Gỡ khóa -> Sửa file -> Khóa lại.

# Bước 1: Gỡ khóa
sudo chattr -i /etc/passwd

# Bước 2: Chỉnh sửa file (vi, nano...)

# Bước 3: Tái thiết lập bảo vệ
sudo chattr +i /etc/passwd
</pre>

Kinh nghiệm thực chiến cho Sysadmin

Trên các server chạy môi trường Production, tôi luôn áp dụng chattr +i cho file .ssh/authorized_keys. Cách này chặn đứng các script độc hại tự chèn SSH key lạ để duy trì quyền truy cập (persistence). Đây là lớp bảo mật lớp 2 cực kỳ rẻ nhưng hiệu quả vô cùng.

Lưu ý: chattr hoạt động tốt trên Ext4 và XFS. Tuy nhiên, nó có thể không hoạt động như ý trên các hệ thống file mạng như NFS hoặc các ổ đĩa ảo hóa đặc thù. Hãy luôn kiểm tra kỹ trên môi trường Staging trước khi triển khai diện rộng.

Vận dụng khéo léo chattrlsattr giúp bạn kê cao gối ngủ ngon hơn. Server của bạn giờ đây đã có thêm một lớp giáp chống lại cả những sai lầm ngớ ngẩn nhất.

Share: