5 điều thiết yếu: làm trước tiên
- Giữ lõi WordPress, theme và plugin luôn được cập nhật. Plugin có lỗ hổng là vector tấn công số 1. Hãy bật cập nhật tự động cho các phiên bản nhỏ (WordPress 5.6+ làm điều này theo mặc định). Đối với các phiên bản lớn, hãy cập nhật trong vòng 7 ngày sau khi phát hành. Đối với plugin, bật cập nhật tự động cho các plugin đáng tin cậy; xem lại thủ công ghi chú phát hành của các plugin quan trọng.
- Dùng mật khẩu mạnh và duy nhất cho mỗi tài khoản WordPress. Đặc biệt là các tài khoản quản trị. Hãy dùng một trình quản lý mật khẩu (1Password, Bitwarden). Vô hiệu hóa tên người dùng «admin»: tạo một quản trị viên mới và xóa tài khoản cũ.
- Bật xác thực hai yếu tố. Hãy dùng Wordfence Login Security (miễn phí) hoặc Trình tạo mã QR 2FA của chúng tôi với bất kỳ ứng dụng TOTP nào. 2FA đánh bại hơn 99 % các cuộc tấn công nhồi thông tin đăng nhập.
- Cài đặt một plugin bảo mật đáng tin cậy. Wordfence (phiên bản miễn phí đủ cho hầu hết các trang web) hoặc Solid Security. Đừng chồng nhiều plugin: chúng xung đột với nhau. Plugin quản lý việc giới hạn số lần thử đăng nhập, giám sát tính toàn vẹn của tệp và quét mã độc.
- Sao lưu hàng ngày ra bên ngoài trang web. UpdraftPlus → Dropbox/Google Drive. Hãy sao lưu trước khi bạn cần đến nó. Kiểm thử quy trình khôi phục ít nhất một lần.
10 điều tiếp theo: các biện pháp tác động cao bổ sung
- Buộc dùng HTTPS. Let's Encrypt miễn phí trên mọi dịch vụ lưu trữ hiện đại. Chuyển hướng HTTP sang HTTPS ở cấp máy chủ.
- Thay đổi tiền tố bảng cơ sở dữ liệu. WordPress dùng wp_ theo mặc định; hãy đổi nó thành một thứ tùy chỉnh trong quá trình cài đặt. Không ngăn được các cuộc tấn công, nhưng gây khó khăn cho một số mẫu tấn công.
- Vô hiệu hóa XML-RPC nếu bạn không dùng. XML-RPC là một vector khuếch đại brute force phổ biến. Nếu bạn không dùng ứng dụng di động Jetpack hay đăng bài từ xa, hãy vô hiệu hóa nó qua .htaccess hoặc một plugin.
- Giới hạn số lần thử đăng nhập. Wordfence làm điều này tự động. Ngăn ngừa việc nhồi thông tin đăng nhập bằng brute force.
- Xoay vòng các khóa/salt xác thực của WordPress. Hãy dùng Trình tạo Salt WordPress của chúng tôi. Xoay vòng chúng sau bất kỳ nghi ngờ bị xâm phạm nào, sau khi xóa một quản trị viên bị xâm phạm và định kỳ 6-12 tháng một lần.
- Dùng SSH hoặc SFTP để truyền tệp, không bao giờ dùng FTP thường. FTP truyền thông tin đăng nhập dưới dạng văn bản thuần.
- Hạn chế quyền truy cập wp-admin theo IP nếu có thể. Nếu nhóm của bạn dùng IP cố định (văn phòng, VPN), hãy giới hạn wp-admin chỉ cho các IP đó. Qua .htaccess hoặc cấu hình Nginx.
- Vô hiệu hóa chỉnh sửa tệp trong wp-config.php. Thêm:
define('DISALLOW_FILE_EDIT', true);Ngăn kẻ tấn công chỉnh sửa theme/plugin từ bảng điều khiển nếu chúng xâm phạm một tài khoản. - Ẩn số phiên bản WordPress. Loại bỏ thẻ meta generator. Không ngăn được các cuộc tấn công, nhưng giảm việc lấy dấu vân tay (fingerprinting).
- Khóa chặt quyền của tệp. Tệp 644, thư mục 755, wp-config.php 600. Hầu hết các dịch vụ lưu trữ được quản lý làm điều này tự động; trên một VPS, hãy cấu hình nó một cách rõ ràng.
Hoàn thiện: tốt nhưng không quan trọng
- URL đăng nhập tùy chỉnh (ví dụ: WPS Hide Login). Chủ yếu giảm tiếng ồn từ lưu lượng truy cập của bot; không phải bảo mật thực sự.
- CAPTCHA trên biểu mẫu đăng nhập. Một chút ma sát nhẹ cho các cuộc tấn công tự động.
- Vô hiệu hóa việc thực thi PHP trong /uploads/. Ngăn các shell PHP được tải lên chạy.
- Dùng WAF của Cloudflare (cấp miễn phí). Lọc lưu lượng truy cập độc hại trước khi nó đến máy chủ của bạn.
- Cấu hình một cảnh báo qua email cho quản trị viên về các bản cập nhật plugin/lõi.
- Dùng HSTS preload để buộc HTTPS ở cấp trình duyệt.
- Vô hiệu hóa việc liệt kê người dùng qua REST API (Solid Security hoặc Wordfence xử lý điều này).
- Dùng các header Chính sách bảo mật nội dung (CSP).
- Vô hiệu hóa duyệt thư mục (hầu hết các dịch vụ lưu trữ làm điều này theo mặc định).
- Giám sát thời gian hoạt động + tính toàn vẹn bằng một dịch vụ bên ngoài (cấp miễn phí của UptimeRobot + Sucuri SiteCheck hàng tuần).
- Giới hạn vai trò người dùng ở mức đặc quyền tối thiểu. Hầu hết các cộng tác viên không cần quyền cấp biên tập viên.
- Mã hóa các bản sao lưu cơ sở dữ liệu (UpdraftPlus Premium cung cấp điều này).
- Lưu trữ hình ảnh ngoài tên miền qua CDN (giảm bề mặt tấn công).
- Định kỳ xem lại nhật ký kiểm toán bảo mật.
- Kiểm thử thâm nhập hàng năm nếu trang web tạo ra doanh thu đáng kể.
Các huyền thoại bảo mật WordPress: hãy bỏ qua
Một số biện pháp «bảo mật» được khuyến nghị nhiều mang lại sự bảo vệ thực tế tối thiểu: (1) «Ẩn phiên bản WordPress»: biết phiên bản của bạn hỗ trợ chút ít cho các cuộc tấn công có chủ đích, nhưng giải pháp thực sự là cập nhật, chứ không phải ẩn. (2) «Chuyển wp-config.php lên trên public_html»: về cơ bản mang lại lợi ích bảo mật bằng không; tệp này vốn đã được bảo vệ bởi .htaccess. (3) «Vô hiệu hóa REST API»: làm hỏng nhiều plugin và chặn được rất ít. Thay vào đó hãy giới hạn các endpoint cụ thể. (4) «Chồng nhiều plugin bảo mật»: chúng xung đột và chồng chéo. Một plugin đáng tin cậy (Wordfence hoặc Solid Security) bao quát những gì ba plugin sẽ làm. (5) «Đổi tên wp-login.php»: bảo mật qua việc che giấu; kẻ tấn công tìm ra URL mới một cách dễ dàng thông qua các chuyển hướng.
Nếu bạn bị hack: danh sách khôi phục
- Đừng hoảng loạn; đừng xóa mọi thứ ngay lập tức. Trước tiên hãy chụp một ảnh chụp trạng thái hiện tại để phân tích pháp y.
- Đưa trang web ngoại tuyến (plugin chế độ bảo trì hoặc chuyển hướng .htaccess đến một trang tĩnh).
- Thay đổi tất cả mật khẩu quản trị viên và xoay vòng các salt của WordPress.
- Kiểm toán các tài khoản người dùng: xóa ngay lập tức các tài khoản quản trị viên không nhận ra.
- Quét mã độc bằng Wordfence Premium hoặc Sucuri.
- So sánh các tệp hiện tại với một bản tải xuống WordPress sạch: phần diff sẽ tiết lộ các tệp lõi đã bị sửa đổi.
- Xem lại bảng wp_options trong cơ sở dữ liệu để tìm các mục bất ngờ (thường chứa JS được tiêm vào).
- Khôi phục từ bản sao lưu sạch gần đây nhất (đây là lý do các bản sao lưu hàng ngày quan trọng).
- Sau khi khôi phục, kiểm toán từng plugin: xóa các plugin không dùng, cập nhật tất cả và thay thế bất kỳ plugin nào có CVE công khai.
- Cập nhật lõi WordPress lên phiên bản mới nhất.
- Kích hoạt lại trang web và theo dõi tái nhiễm trong 30 ngày.