Phân quyền Wordpress trên VPS để hạn chế local attack và bảo mật hơn


Wordpress là mã nguồn mở cực kỳ mạnh mẽ và được sử dụng rộng rãi nhất hiện nay (số lượng website sử dụng Wordpress chiếm 27% tổng số lượng website trên toàn thế giới)
Nếu các bạn đã từng sử dụng mã nguồn này thì chắc hẳn ít lần gặp phải tình trạng mã nguồn của mình bị dính phải shell, là các dạng file không rõ nội dung hoặc tiêu đề lộn xộn (như axslijljpp.php) hoặc file bị chèn 1 đoạn mã như dưới đây, hoặc xuất hiện những bài viết không phải của mình, hay thường gặp là những đoạn link chèn ở footer.


Để hạn chế vấn đề này, xin chia sẻ cùng các bạn một số thao tác mình thường thực heinej sau khi cài đặt hoàn chỉnh 1 site Wordpress.

1. Phân quyền kỹ hệ thống file và folder.
Thông thường, khi download bộ nguồn, để cài đặt Wordpress, bạn cần phải phân quyền (set permission) và chỉ định quyền sở hữu (set owner) cho hệ thống folder và file.
chown root:root -R *
chown www-data:www-data -R wp-content/uploads/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 777 */wp-content/w3tc-config
chmod 777 */wp-content/cache
Tuyệt đối không sử dụng permission 777 cho các folder khác.

2. Hạn chế truy cập wp-admin bất hợp lệ
Wordpress không restrict access sau n lần nhập sai password admin, do đó, một số công cụ có thể lợi dụng việc này để tấn công thông qua dictionary attack và brute force attack.
Bạn có thể sử dụng .htaccess để ngăn truy cập. Mình thường sử dụng chức năng Page Rules của Cloudflare: Thêm URL *domain.com/*wp-login.php* và tùy chọn: Security Level: I'm under attach

3. Các lưu ý khác
- Sử dụng password phức tạp và tránh đặt username dễ đoán như: admin, root, administrator...
- Không sử dụng username root khi khai báo cấu hình mysql.
- Mỗi site nên phân quyền một username cho database riêng.
- Trong một số trường hợp, có thể sử dụng lệnh chattr -i để ngăn chặn quyền chỉnh sửa một số file trên cả user root.

Còn bạn, bạn thường hạn chế vấn đề này như thế nào, comment chia sẻ với mình nhé!