Tản mạn về hack website WordPress.
Vẫn là câu chuyện website WordPress thường xuyên bị hack. Mình đã từng chia sẻ với các bạn về việc Chặn thực thi các file PHP trong một thư mục và Tìm xóa các file có trong folder theo định dạng cố định hoặc một số kinh nghiệm bảo mật web WordPress.
Thiết kế website trên nền tảng WordPress có nhiều ưu điểm, nhưng cũng có nhiều nhược điểm liên quan đến bảo mật. Rất nhiều website bị chèn mã độc redirect sang website khác hoặc chèn nội dung lừa đảo fishing lên website chủ.
Vì vậy việc bảo mật website Worpdress cần được các quản trị viên chú tâm, để ý hơn, thường xuyên cập nhật các bản vá lỗi để tránh bị khai thác lỗ hổng. Hoặc không sử dụng các mã nguồn, plugin, theme được chia sẻ tràn lan trên mạng.
Lan man chút mình quay về chủ đề chính. Đó là việc ngăn chặn chỉnh sửa nội dung file trong WordPress hoặc website nói chung.
Một kiểu tấn công phổ biến với website là bị chèn mã độc vào source code của web. Hoặc trong folder source code của web xuất hiện nhiều tên file rất lạ. Hình dưới đây là một phần code chèn thêm vào file, phần code này đã được mã hóa
Hoặc như dưới đây là web đã bị upload nhiều file lạ lên
Trong bài viết này, mình sẽ nói về cách để khóa (lockdown) không cho phép chỉnh sửa nội dung file hoặc upload file mới lên một folder nào đó đối với website WordPress. Các website khác bạn cũng có thể làm tương tự.
Sử dụng lệnh chattr để khóa file, folder trong Linux
Trong hệ điều hành Linux, lệnh chattr được sử dụng để thay đổi thuộc tính của các tệp tin và thư mục trên hệ thống tệp ext2, ext3, và ext4. Thuộc tính này có thể bao gồm các thông số đặc biệt như chỉ đọc, ẩn, nén và thậm chí là bảo vệ tệp tin khỏi việc xóa hoặc thay đổi. Lệnh này là một công cụ quan trọng để quản lý quyền truy cập và bảo vệ dữ liệu trên hệ thống.
Cú pháp của lệnh chattr
Lệnh chattr có cú pháp như sau.
- options là các tùy chọn bổ sung.
- attribute là thuộc tính cần thay đổi.
- file là tên tập tin hoặc thư mục cần thay đổi thuộc tính.
chattr [options] [attribute] [file]
Các thuộc tính của lệnh chattr
Lệnh chattr có 4 thuộc tính phổ biển sau. Tôi sẽ giải thích từng thuộc tính để bạn dễ dàng hình dung và sử dụng trên hệ thống.
- +i: Đặt thuộc tính chỉ đọc, ngăn chặn việc xóa hoặc chỉnh sửa tệp tin.
- -i: Hủy bỏ thuộc tính chỉ đọc.
- +a: Đặt thuộc tính ghi thêm, chỉ cho phép thêm dữ liệu vào tệp tin, nhưng không được phép chỉnh sửa hoặc xóa.
- +u: Đặt thuộc tính bảo vệ, ngăn chặn việc xóa tệp tin.
- +d: Đặt thuộc tính không sao chép, ngăn chặn việc sao chép tệp tin.
Các tuỳ chọn của lệnh chattr
Ngoài thuộc tính ở trên sẽ có thêm các tuỳ chọn đi kèm sau
- -R: Áp dụng thay đổi thuộc tính cho thư mục và tất cả các tệp con.
- -v: Hiển thị thông báo khi thực hiện thay đổi thuộc tính.
- -l: Hiển thị danh sách tất cả các thuộc tính của tệp tin.
Ví dụ thực tế cho lệnh chattr
Sau khi làm quen và hiểu được lệnh chattr, các thuộc tính và tuỳ chọn của lệnh. Tôi sẽ lấy ví dụ từng thuộc tính để bạn dễ sử dụng
Ví dụ 1: Đặt thuộc tính chỉ đọc cho một tệp tin
chattr +i index.php
Ví dụ 2: Hủy bỏ thuộc tính chỉ đọc
Nếu bạn muốn huỷ bỏ thuộc tính chỉ đọc bạn hãy sử dụng tuỳ chọn sau. Sau khi huỷ bỏ bạn có thể ghi file một cách bình thường
chattr -i index.php
Ví dụ 3: Đặt thuộc tính bảo vệ cho một thư mục và tất cả các tệp con
Thuộc tính này sẽ làm cho tất cả các tập tin và thư mục con trong thư mục wp-content chỉ có thể được thêm nội dung vào, không thể chỉnh sửa nội dung hiện có.
chattr -R +u wp-content
Ví dụ 4: Đặt thuộc tính ghi thêm cho một tệp tin:
Lệnh chattr +a index.php có chức năng thêm thuộc tính a (append-only) cho tập tin index.php.
chattr +a index.php
Ví dụ 5: Hiển thị danh sách các thuộc tính của một tệp tin
Lệnh này sẽ hiển thị các thuộc tính của file và thư mục
lsattr index.php lsattr wp-content
Ví dụ 6: Áp dụng thay đổi thuộc tính cho thư mục và tất cả các tệp con
Trong trường hợp này, lệnh chattr -R +i wp-content sẽ làm cho tất cả các tập tin và thư mục con trong thư mục wp-content chỉ có thể được đọc, không thể xóa, chỉnh sửa hoặc thay đổi nội dung.
chattr -R +i wp-content
Ví dụ 7: Khóa bảo vệ thư mục và tất cả các tệp con của website WordPress
Đây là một số lệnh tổng hợp thường dùng cho 1 website chạy WordPress
chattr +i /home/"${user}"/"${domain}"/public_html chattr -R +i /home/"${user}"/"${domain}"/public_html/wp-admin chattr -R +i /home/"${user}"/"${domain}"/public_html/wp-includes chattr +i /home/"${user}"/"${domain}"/public_html/wp-content chattr -R +i /home/"${user}"/"${domain}"/public_html/wp-content/plugins chattr -R +i /home/"${user}"/"${domain}"/public_html/wp-content/themes chattr +i /home/"${user}"/"${domain}"/public_html/index.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-config.php chattr +i /home/"${user}"/"${domain}"/public_html/robots.txt chattr +i /home/"${user}"/"${domain}"/public_html/wp-activate.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-blog-header.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-comments-post.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-cron.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-links-opml.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-load.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-login.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-mail.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-settings.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-signup.php chattr +i /home/"${user}"/"${domain}"/public_html/wp-trackback.php chattr +i /home/"${user}"/"${domain}"/public_html/xmlrpc.php
Lệnh trên sẽ khóa không cho phép người dùng chỉnh sửa file, upload thêm file vào các folder như wp-admin, wp-includes, wp-content, plugins, themes, index.php, wp-config.php ….. Riêng folder /wp-content/uploads/ thì vẫn up file lên được. Tuy nhiên, bạn kết hợp với việc ngăn chặn thực thi file .PHP trong folder uploads thì có thể đảm bảo an toàn gần như tuyệt đối.
Ví dụ 8: Tắt chức năng khóa bảo vệ thư mục và file trong WordPress
Khi bạn không cần lockdown nữa, chạy các lệnh sau sẽ mở khóa toàn bộ
chattr -i /home/"${user}"/"${domain}"/public_html chattr -R -i /home/"${user}"/"${domain}"/public_html/wp-admin chattr -R -i /home/"${user}"/"${domain}"/public_html/wp-includes chattr -i /home/"${user}"/"${domain}"/public_html/wp-content chattr -R -i /home/"${user}"/"${domain}"/public_html/wp-content/plugins chattr -R -i /home/"${user}"/"${domain}"/public_html/wp-content/themes chattr -i /home/"${user}"/"${domain}"/public_html/index.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-config.php chattr -i /home/"${user}"/"${domain}"/public_html/robots.txt chattr -i /home/"${user}"/"${domain}"/public_html/wp-activate.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-blog-header.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-comments-post.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-cron.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-links-opml.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-load.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-login.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-mail.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-settings.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-signup.php chattr -i /home/"${user}"/"${domain}"/public_html/wp-trackback.php chattr -i /home/"${user}"/"${domain}"/public_html/xmlrpc.php
Chúc các bạn thành công.