Bài viết là tổng hợp các kiến thức mình tìm hiểu được về bảo mật WordPress.
Các bước cần làm để bảo mật website WordPress của bạn:
Xoá các plugin hoặc theme không sử dụng
Việc xoác các plugin hoặc theme không sử dụng để giảm dung lượng cho hosting đồng thời cũng trách việc hacker có thể khai thác các lỗ hổng từ những plugin này.
Giới hạn file upload trong quản trị WordPress
Mục đích của việc giới hạn file upload trong quản trị là để nếu hacker có chiếm được tài khoản quản trị cũng không thể upload các file *.php
, có mã độc lên website của bạn được. Bạn có thể xem bài viết Giới hạn hoặc thêm định dạng file upload trong WordPress để bảo mật
Tắt tính năng bình luận của WordPress nếu không sử dụng
Nếu website của bạn không cần tương tác với khách hàng hoặc để tránh có các comment spam trong bài viết: nhúng link quảng cáo, chèn khác nội dung không phù hợp với bài viết… thì việc tắt tính năng bình luận là cần thiết.
Cách tắt tính năng bình luận là trong file single.php
hoặc các file trong hàm get_template_part
có trong file single.php
của theme bạn đang sử dụng. Bạn hãy tìm hàm comments_template();
xoá hoặc ẩn nó đi.
Trong file wp-comments-post.php
bạn để hàm die();
sau thẻ mở của php
Một giải pháp khác thay thế nếu bạn vẫn muốn hiển thị phần bình luận nếu cần tương tác với người đọc đó là: Bạn có thể sử dụng tính năng Bình luận của facebook hoặc sử dụng Plugin Bình luận trong WordPress
Thiết lập chặn truy cập đến file wp-config và các file quan trọng trong WordPress
Để chặn truy cập trực tiếp đến file wp-config.php
và các file quan trong của wordpress bạn hãy dán đoạn mã sau vào file .htaccess
<Files xmlrpc.php> order deny,allow deny from all </Files> <FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$"> Order deny,allow Deny from all </FilesMatch> # Block the include-only files. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>
Giới hạn truy cập đến các file .php trong thư mục wp-content
Giải sử các hacker có thể upload được các file mã độc như web shell lên website của bạn. Thông qua plugin hay một cách khai thác khác nào để upload file trong thư mục wp-content
. Chính vì thế bạn cần hạn chế các request tới bất kỳ các file trong thư mục này. Để làm điều đó bạn hãy tạo 1 file .htaccess
trong thư mục wp-content
và dán đoạn mã sau vào trong file .htaccess
# Disable access to all file types except the following Order deny,allow Deny from all <Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar|ttf|eof|woff|woff2|otf|json|svg|ico)$"> Allow from all </Files>
Cài đặt và sử dụng plugin “WP Cerber” để bảo mật website WordPress
Tại sao mình lại khuyên bạn nên sử dụng plugin này, Bởi vì plugin WP Cerber cung cấp một số tính năng rất hữu ích và plugin này cũng khá nhẹ.
Một số tính năng nổi bật của plugin WP Cerber là:
- Giới hạn số lần đăng nhập sai trong WordPress
- Đổi đường dẫn đăng nhập mặc định
- Tắt tính năng dò user
- Chặn IP
- Thêm captcha trong trang đăng nhập
- Ngoài ra còn một số tính năng khác bạn có thể tìm hiểu sâu thêm
Lưu ý: sau khi đổi đường đẫn đăng nhập nếu website của bạn có sử dụng các plugin tạo cache như: W3 Total Cache, WP Super Cache, WP Rocket, LiteSpeed Cache thì bạn hãy thêm slug đường dẫn đăng nhập mới vào danh sách các trang không được lưu vào bộ đệm.
Tắt phần theme-editor.php của website
Tắt phần theme-editor.php
để nếu hacker nếu chiếm được tài khoản quản trị của bạn cũng không thể chỉnh sửa trực tiếp trong này được. Cách tắt là trong file wp-config.php
bạn thêm đoạn mã dưới đây:
define('DISALLOW_FILE_EDIT',true);
Tắt tính năng debug của WordPress
Mục đích của tính năng debug (tìm lỗi) là để hiển thị những thông báo lỗi của website từ đó bạn có thể tìm nhanh và chích xác các vị trí gây ra lỗi.
Tuy nhiên tính năng này chỉ nên mở khi bạn viết code hoặc check lỗi trong website của bạn. Sau khi check xong bạn phải tắt tính năng debug này để tránh ảnh hướng đến giao diện website cũng như tránh việc hacker có thể thấy những thông báo lỗi từ website của bạn. Từ đó có thể khai thác lỗi.
Xoá thông số phiên bản WordPress của bạn
Để xoá các thông số phiên bản WordPress như hình trên bạn chỉ cần thêm đoạn mã bên dưới vào file functions.php
của bạn
/** * Hidden current wordpress verions */ function tmdev_remove_wordpress_version() { return ''; } add_filter('the_generator', 'tmdev_remove_wordpress_version'); /** * Remove version in all file css, js in frontend */ function remove_version_from_style_frontend( $src ) { if ( strpos( $src, 'ver=' ) ) $src = remove_query_arg( 'ver', $src ); return $src; } add_filter( 'style_loader_src', 'remove_version_from_style_frontend'); add_filter( 'script_loader_src', 'remove_version_from_style_frontend');
Sau khi thêm đoạn code bên trên bạn hãy view-source ( Ctrl + U)
để kiểm tra lại thì các đuôi thông số ver
sẽ được gỡ bỏ hoàn toàn.
Một số lưu ý bảo mật WordPress quan trọng
Cấu hình HTTPS cho website của bạn: Nếu website của bạn không phải là doanh nghiệp quá lớn hay ngân hàng, chính phủ thì chỉ cần cài SSL miễn phí là đủ
- Thường xuyên sao lưu và backup website ( source code và database ): thường các nhà cung cấp hosting uy tín sẽ hỗ trợ bạn việc này. Nếu không bạn có thể backup định kỳ hàng tuần hay hàng tháng. Tuỳ vào mức độ đăng sản phẩm hay bài viết của bạn.
- Nên đặt mật khẩu dài >= 14 ký tự bao gồm: chữ số và chứa chữ hoa, chữ thường, số và các ký tự đặc biệt.
- Xoá các (thành viên) user không sử dụng nữa
- Không nên để user đăng nhập là: admin, root, system,…
- Tắt
WP CRON
nếu không sử dung. Thêm đoạn codedefine('DISABLE_WP_CRON', 'true');
vào file wp-config.php => Xử lý các sự kiện - Cập nhật các phiên bản WordPress và Plugin mới nhất
- Chọn nhà cung cấp dịch vụ hosting tốt: họ có các phần mềm kiểm tra và chặn các truy cập rác, spam… vì đa phần các bước bảo mật ở trên đều hướng đến việc ngăn chặn và bảo mật từ bên ngoài nhưng còn bên trong ( LOCAL ATTACK ) thì phụ thuộc rất nhiều vào các nhà cung cấp dịch vụ hosting.
- Không nên sử dụng theme và Plugin Nulled / Cracked
- Thêm xác thực 2 yếu tố: ( nếu bạn rất ít khi đăng nhập quản trị ) – Bạn tìm hiển thêm trong plugin WP Cerber đã có sẵn tính năng này
- Nâng cấp phiên bản php >= 7.0
- Tắt tính năng reset mật khẩu qua mail: Để tắt bạn thêm đoạn code sau vào file
functions.php
/** * Disable password reset */ function tmdev_disable_action_lostpassword() { return false; } add_filter ( 'allow_password_reset', 'tmdev_disable_action_lostpassword' );