Tài liệu tham khảo:
- https://dotrungquan.info/tang-cuong-bao-mat-wordpress-voi-wordpress-manager/
- https://wptangtoc.com/bao-mat-wordpress-co-ban/#3_Bao_mat_tu_cap_webserver_hon_la_cap_website
Quy trình bảo mật wordpress
- Thay đổi Table Prefix: Mặc định của WordPress là
wp_. Hãy đổi thành một chuỗi ngẫu nhiên nhưhx72_để chống lại các cuộc tấn công SQL Injection nhắm vào cấu trúc bảng mặc định. - Tên người dùng (Username): Tuyệt đối không dùng
admin,roothay tên miền của bạn làm username. Hãy dùng một tên riêng biệt và khó đoán. - Mật khẩu: Sử dụng mật khẩu tối thiểu 16 ký tự, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt.
Ngăn người lạ (hoặc chính bạn) vô tình sửa code trong giao diện Admin bằng đoạn code sau:
define('DISALLOW_FILE_EDIT', true);Cập nhật WordPress, theme, plugin lên phiên bản mới nhất
Sử dụng tài khoản và mật khẩu quản trị có độ khó cao
Kích hoạt bảo mật 2 lớp
Tắt báo cáo lỗi PHP Error
Tuyệt đối không sử dụng Themes và Plugins nulled
Quét malware thường xuyên để loại bỏ chúng từ sớm
Thường xuyên sao lưu (Backup) dữ liệu WordPress
Tắt chức năng File Editing trong bảng điều khiển dashboard
WordPress mặc định đã cho phép chúng ta có thể chỉnh sửa file ở trong phần quản trị admin. Để tắt tính năng này, chỉ cần thêm vào trong file cấu hình wp-config.php đoạn code dưới đây:
define( 'DISALLOW_FILE_EDIT', true );Xóa Themes và Plugins không dùng tới hoặc đã lỗi thời
Việc xóa các plugins và themes không sử dụng trên WordPress giúp tăng cường bảo mật, vì hacker có thể lợi dụng những phần mềm lỗi thời để xâm nhập và tải phần mềm độc hại. Bằng cách này, bạn giảm nguy cơ bị tấn công và bảo vệ site tốt hơn.
Cấu hình file .htaccess để bảo mật tốt hơn
Chặn truy cập tới trang quản trị WordPress
Đoạn mã bên dưới giúp bạn chặn truy cập vào WordPress Administrator và chỉ cho phép một số địa chỉ IPs được chỉ định ở mục allow:
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "WordPress Admin Access Control" AuthType Basic <LIMIT GET> order deny,allow deny from all allow from xx.xx.xx.xxx allow from xx.xx.xx.xxx </LIMIT>
Tắt khả năng thực thi PHP trong thư mục được chỉ định
Kẻ tấn công thích upload các scripts độc hại lên thư mục WordPress. Mặc định thư mục này được dùng để chứa file đa phương tiện. Vì vậy nó không nên được dùng để chứa file PHP. Bạn có thể dễ dàng vô hiệu chức năng thực thi PHP bằng cách tạo một file .htaccess trong thư mục /wp-content/uploads/ với các lệnh như sau:
<Files *.php> deny from all </Files>
Bảo vệ WordPress file wp-config.php
wp-config.php file chứa các cài đặt WordPress cốt lõi và thông tin chi tiết MySQL databases. Vì vậy đây là một file WordPress quan trọng nhất, cũng là file chính mà hacker thường nhắm tới để tấn công WordPress. Tuy nhiên, bạn có thể dễ dàng bảo vệ file này bằng lệnh sau trong .htaccess:
<files wp-config.php> order allow,deny deny from all </files>
Tắt wp-debug trong wp-config
Tắt WP_DEBUG trong wp-config.php để tăng cường bảo mật khi sử dụng WordPress trên môi trường chính thức. Tính năng này chỉ nên bật trên localhost để sửa lỗi. Thêm đoạn sau vào cuối file:
define( 'WP_DEBUG', false );Thay đổi tiền tố (prefix) của database để ngăn chặn SQL injections
Tắt đọc chỉnh sửa truy xuất file trực tiếp
Bạn cần chặn quyền truy cập vào thư mục wp-includes, nơi không cần thiết cho người dùng thông thường. Việc để thư mục này mở có thể giúp hacker khai thác các lỗ hổng tiềm ẩn hoặc xác định phiên bản WordPress bạn đang sử dụng. Để ngăn chặn, hãy thêm mã sau vào tệp .htaccess để trả về lỗi 403 khi có truy cập trái phép:
<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>Tắt XML-RPC
Tính năng XML-RPC được tích hợp sẵn từ WordPress 3.5 nhằm hỗ trợ kết nối từ xa. Tuy nhiên, tính năng này từng bị khai thác trong các cuộc tấn công DDoS, và hầu hết người dùng không cần dùng đến. Để tắt XML-RPC, thêm đoạn mã sau vào file functions.php:
add_filter('xmlrpc_enabled', '__return_false');
add_filter('wp_headers', 'remove_x_pingback');
add_filter('pings_open', '__return_false', 9999);
add_filter('pre_update_option_enable_xmlrpc', '__return_false');
add_filter('pre_option_enable_xmlrpc', '__return_zero');
function remove_x_pingback($headers) {
unset($headers['X-Pingback'], $headers['x-pingback']);
return $headers;
}