TIP #23: CHATTR: BUFF BẤT TỬ CHO FILE

23/03/2020

chattr (Change Attribute) là câu lệnh cho phép bạn thay đổi thuộc tính của file giúp bảo vệ file khỏi bị xóa hoặc ghi đè nội dung, do cho bạn có đang là user root đi nữa.

chattr có nhiều options, trong đó mình thường dùng:

  • +i: Khiến file immutable: không thể rename, không thể tạo symlink, không thể thực thi, không thể write. Chỉ có user root mới unset được thuộc tính này.
  • +a: không thể xóa file, không thể ghi đè, chỉ có thể append dữ liệu vào file

1. Add thuộc tính immutable cho file

  • Set thuộc tính cho file (yêu cầu quyền root)
$ touch zero2hero.txt
$ chattr +i zero2hero.txt
  • Liệt kê thuộc tính file: Chữ “i” cho thấy thuộc tính immutable đã được set
$ lsattr zero2hero.txt
  • Kiểm tra: Không thể xóa, ghi nội dung, rename hoặc change permission
  • Xóa bỏ thuộc tính (yêu cầu quyền root)
$ chattr -i zero2hero.txt

2. Chỉ cho phép append nội dung vào file

  • Set thuộc tính cho file (yêu cầu quyền root)
$ chattr +a zero2hero.txt
  • Liệt kê thuộc tính file: Chữ “a” cho thấy thuộc tính append only đã được set
$ lsattr zero2hero.txt
  • Kiểm tra: Không thể xóa file, không thể ghi đè nhưng có thể append nội dung vào file
  • Xóa bỏ buộc tính (yêu cầu quyền root)
$ chattr -a zero2hero.txt

3. Ứng dụng thực tế

  • Giữ các file quan trọng của hệ thống không cho phép user xóa (file cấu hình, file log v.v)
  • Không cho phép add user mới
$ chattr +i /etc/passwd
  • Không cho phép xóa history (chỉ được ghi thêm vào)
$ chattr +a ~/.bash_history
  • Không cho phép thay đổi DNS
$ chattr +i /etc/resolv.conf
  • Hôm qua trên Group có 1 bạn bị exploit bug redis, attacker dùng redis để ghi đè nội dung file authorized_keys của root, qua đó chiếm quyền điều khiển toàn bộ server. Áp dụng: không cho phép thay đổi nội dung file authorized_keys:
$ chattr +i /root/.ssh/authorized_keys
  • Ngoài sử dụng cho file, chattr cũng có thể apply cho thư mục, chức năng tương tự.

P/S: Hãy tham gia vào Group Chat Telegram của nhóm để trao đổi và học hỏi với các thành viên khác: https://t.me/quantrilinux