[Hướng dẫn] Các cách cơ bản tăng bảo mật Website WordPress

Tác giả: 31/08/2024

Như chúng ta đã biết, mã nguồn mở WordPress đã quá nổi tiếng trong nhiều năm nay trên toàn thế giới. Thậm chí trong năm 2024, người ta ước tính có hơn 43.2% số lượng website sử dụng WordPress trong tổng số tất cả các website trên thế giới.

Tóm tắt lại như thế, để thấy rằng, vì sao WordPress lại trở thành chủ đề chính trong các cuộc tranh luận về Bảo mật Website – và vì sao nó luôn là kẻ bị chỉ điểm đầu tiên! Bạn hãy thử tưởng tượng, WordPress chiếm 1/3 số Website trong số cả tỷ của toàn thế giới thì việc nó là miếng mồi ngon cho hacker cũng là điều không có gì ngạc nhiên. WordPress phổ biến chừng nào, thì hacker sẽ tập trung tấn công mạnh chừng đó. Vì thế, việc tăng cường bảo mật cho website WordPress của bạn ngay hôm nay là điều hết sức cần thiết.

Tuy nhiên, các bạn đừng quá lo lắng nhé. Dưới đây, chúng tôi sẽ hướng dẫn các bạn gia cố thêm cho lớp Bảo mật của cho WordPress trở nên chắc chắn nhất, và có thể nói là “Bất khả xâm phạm” nè ^^.

Bước 1: Cập nhật WordPress lên phiên bản mới nhất

Đây là bước quan trọng nhất trong tất cả các bước bảo mật WordPress. Nếu muốn website của bạn luôn sạch sẽ, tránh được sự tấn công của mã độc (malware), thì việc cập nhật WordPress lên phiên bản mới nhất là điều bạn nên chú ý đầu tiên. Mặc dù chắc ai cũng biết điều này, nhưng thực tế chỉ có 22% bản cài WordPress chạy với phiên bản mới nhất trên thế giới.

Từ phiên bản 3.7 trở đi, WordPress đã có thêm thiết lập tự động cập nhật. Tuy nhiên, nó chỉ hiệu quả với các cập nhật bảo mật nhỏ. Vì vậy, chúng ta cần thực hiện 1 cách thủ công cho những bản cập nhật lớn.

Và 1 điều lưu ý trước khi cập nhật, hãy thực hiện backup dữ liệu của bạn, bởi vì mã nguồn WordPress khi update lên bản mới nhất có thể không tương thích khi sử dụng chung với 1 số plugin hoặc theme.

Trường hợp bạn không biết cách cập nhật WordPress, hãy tham khảo 1 số hướng dẫn dưới đây:

Cập nhật thông qua trang quản trị admin của website:

Cập nhật bằng cách upload lại Core WordPress thông qua FTP:

Đầu tiên các bạn download mã nguồn WordPress phiên bản mới nhất tại đây, sau đó giải nén, chúng ta chỉ quan tâm đến 2 thư mục core là: wp-admin wp-includes
Sau đó, truy cập FTP xóa hoặc ghi đè 2 thư mục wp-admin wp-includes trên hosting của bạn bằng 2 thư mục đã giải nén ở trên.

Sau khi upload lại 2 thư mục core, chúng ta tiếp tục upload lại các file .php ở ngoài thư mục gốc của WordPress. Cuối cùng, cấu hình lại file wp-config.php như cũ và website của chúng ta đã được cập nhật thành công.

Một lưu ý nhỏ là chúng ta đừng chạm vào thư mục wp-content vì theme, plugin và media của chúng ta đang nằm ở thư mục này.

Cập nhật WordPress tự động:

Nếu như những cách phía trên khiến bạn cảm thấy rắc rối, hãy thử sử dụng plugin này xem: Easy Updates Manager

Hoặc là, thêm đoạn code sau vào file cấu hình wp-config.php:

define('WP_AUTO_UPDATE_CORE', true);

Và thế là WordPress của chúng ta đã được cập nhật 1 cách tự động.

Bước 2: Sử dụng tài khoản và mật khẩu quản trị có độ khó cao

Không nên sử dụng tài khoản truy cập là: admin và mật khẩu dễ bị dò tìm như là: 123456,… Chính bạn đang tạo cơ hội cho hacker dễ dàng chiếm lấy quyền truy cập quản trị đấy.

Chúng ta hoàn toàn có thể tạo mới 1 user admin với tên đăng nhập khó hơn, và xóa đi user cũ. Bạn hãy vào trang quản trị admin, tìm mục Thành viên → Thêm mới

Sau đó điền các thông tin theo yêu cầu, và tùy chọn phân quyền cho user vừa tạo. Ở dưới đây, Chúng tôi chọn Quản lý là quyền cấp cao nhất. Cuối cùng nhấn Thêm người dùng mới

Sau khi tạo mới lại user, bạn hãy truy cập lại trang quản trị với thông tin user vừa tạo, tiếp đó hãy xóa đi tài khoản admin cũ.

Bước 3: Kích hoạt bảo mật 2 lớp

Hầu hết chúng ta đã từng sử dụng chức năng xác thực 2 bước phải không nào, chẳng hạn như truy cập tài khoản Ngân hàng, tài khoản Gmail, facebook,…

Bước 4: Tắt báo cáo lỗi PHP Error

Chúng ta chỉ nên mở hiển thị thông báo lỗi trong khi đang tiến hành lập trình website. Sau đó thì hãy tắt nó đi, bởi vì hiển thị lỗi, lỗ hổng cho tất cả mọi người xem là điều hoàn toàn không nên, đặc biệt là khi bạn đang cần bảo mật cho WordPress.

Bạn đơn giản chỉ cần thêm những dòng code sau vào file wp-config.php. Bạn có thể sử dụng FPT Client hoặc Quản lý hosting trong control panel để sửa file wp-config.php. Sau đó, báo cáo lỗi đã được tắt.

error_reporting(0);
@ini_set(‘display_errors’, 0);

Bước 5: Tuyệt đối không sử dụng Themes và Plugins nulled

Ngừng sử dụng nulled plugins và themes ngay hôm nay là một trong các cách tốt nhất để bảo mật website WordPress. Nó không những vi phạm bản quyền mà còn ảnh hướng lớn đến tính bảo mật WordPress. Thậm chí bạn còn phải thanh toán nhiều tiền hơn cho lập trình viên để dọn dẹp và tống cổ đám malware so với việc bạn bỏ tiền ra mua theme hay plugin có bản quyền.

Hiện nay, trên mạng internet có hàng trăm, hàng ngàn plugins và themes trôi nổi, “hàng free”. Bạn có thể dễ dàng tìm được chúng ở các diễn đàn, hội nhóm chia sẻ. Nhưng bạn biết không? Hầu hết trong số chúng đều chứa mã độc, thậm chí trớ trêu thay là chúng nằm trong cả những plugin bảo mật WordPress, nhẹ hơn là SEO links của hacker mũ đen sẽ khiến website của bạn không bao giờ SEO lên top nổi.

Nếu cài những bản này lên hosting, đồng nghĩa với việc website WordPress của bạn đang nằm trong trạng thái không an toàn, và sẽ bị tấn công bất cứ khi nào vì mã độc đã được chèn sẵn bên trong chúng.

Bước 6: Quét malware thường xuyên để loại bỏ chúng từ sớm

Hiện nay có rất nhiều plugin tăng cường bảo mật WordPress rất tốt, trong đó WordFence là 1 ví dụ nổi bật nhất. Nó cho phép chúng ta scan thủ công và tự động với nhiều thiết lập khác nhau. Bạn còn có thể restore files đã nhiễm mã độc với chỉ một vài cú click chuột. Và 1 điều đặc biệt là nó hoàn toàn miễn phí, tại sao chúng ta không thử dùng nó nhỉ?

Ngoài ra, Chúng tôi cũng xin giới thiệu với các bạn 1 số Plugin bảo mật khác không kém phần mạnh mẽ:

  • BulletProof Security – không giống WordFence, BulletProof không quét các files của bạn, mà chỉ cung cấp firewall, bảo mật database. Ưu điểm đặc biệt nhất là việc cấu hình và cài đặt của nó rất chi là đơn giản.
  • Sucuri Security – plugin bảo mật WordPress này sẽ bảo vệ bạn khỏi tấn công DOS, nó sẽ tạo một danh sách đen, quét website của bạn để phát hiện malware và quản lý tường lửa. Nếu phát hiện, nó sẽ thông báo qua email, Google, Norton, McAfee – các blacklist của những bộ máy này sẽ được tích hợp trong plugin này.

Bước 7: Chuyển dữ liệu WordPress của bạn đến ngôi nhà an toàn hơn

Thống kê trên thế giới cho biết: Có hơn 40% website WordPress bị tấn công mỗi năm do lỗ hổng bảo mật trên chính hosting mà bạn đang sử dụng. Chỉ với số liệu này thôi cũng đã đủ để bạn cân nhắc về việc chọn ngôi nhà đúng đắn để lưu trữ dữ liệu của mình phải không nào.

Với WordPress Hosting tại Nhân Hòa, chúng tôi đã tích hợp sẵn phần mềm quét mã độc cực kỳ hiệu quả đó là: ImunifyAV, Ưu điểm của nó là dễ sử dụng, quét vào sâu trong mã nguồn và tự động cách ly các file nhiễm mã độc ra khỏi mã nguồn WordPress.

Một số lưu ý khác khi bạn sử dụng hosting:

  • Nếu bạn đang sử dụng shared hosting, hãy đảm bảo tài khoản của bạn tách khỏi các tài khoản thành viên khác và không có rủi ro nào một website ảnh hưởng toàn bộ website khác trên server.
  • Có chức năng backup tự động.
  • Phải có tường lửa và công cụ quét virus.

Bước 8: Thường xuyên sao lưu (Backup) dữ liệu WordPress

Mặc dù chúng ta đã tăng cường bảo mật website lên đến mức tối đa, nhưng việc backup dữ liệu thường xuyên (tốt nhất là hằng ngày) là điều thực sự cần thiết khi sử dụng mã nguồn mở WordPress. Đơn giản là vì việc khôi phục dữ liệu từ file backup dễ dàng hơn nhiều so với việc rà soát lỗi và xóa malware đi.

Xem hướng dẫn sao lưu dữ liệu:

Có rất nhiều cách để thực hiện Backup dữ liệu như là:

  • Sử dụng công cụ backup có sẵn trên hosting mà nhà cung cấp đã cài đặt sẵn cho bạn.
  • Nén dữ liệu mã nguồn, export database và tải xuống để lưu trữ.
  • Đơn giản nhất là sử dụng Plugin chỉ với 1 cú click chuột.

Sau đây là bảng xếp hạng Plugin Backup an toàn và được nhiều người tin dùng nhất:

Bước 9: Tắt chức năng File Editing mặc định của WordPress

Như các bạn đã biết, WordPress mặc định đã cho phép chúng ta có thể chỉnh sửa file ở trong phần quản trị admin. Mặc dù rất tiện lợi, nhưng nó cũng là con dao 2 lưỡi gây hại nếu hacker đang tìm cách tấn công chúng ta.

Nếu hacker có quyền truy cập vào trong trang quản trị dashboard của bạn, điều đầu tiên hắn nghĩ tới sẽ là File Editors, nhiều người dùng WordPress đã tắt hoàn toàn chức năng này ngay từ khi cài đặt để tăng tính bảo mật WordPress files. Bằng cách là thêm vào trong file cấu hình wp-config.php đoạn code dưới đây:

define( 'DISALLOW_FILE_EDIT', true );

Đó là tất cả những gì bạn cần biết để tắt phần mềm chỉnh sửa file trong WordPress.

Lưu ý: Trong trường hợp muốn mở lại tính năng này, đơn giản bạn chỉ cần xóa dòng code đó đi, tuy nhiên chúng tôi không khuyến khích việc này.

Thay vào đó, để chỉnh sửa file, bạn có thể truy cập trực tiếp vào bảng điều khiển Hosting File Manager.

Bước 10: Xóa bớt Themes và Plugins không dùng tới hoặc đã lỗi thời

Dọn dẹp site WordPress của bạn và xóa những plugins hoặc themes không sử dụng cũng là một cách tốt để bảo mật cho WordPress. Hacker có thể quét những themes và plugins lỗi thời (kể cả plugin chính thức của WordPress) để truy cập vào trang Dashboard và upload phần mềm độc hại lên server của bạn. Bằng cách xóa plugins và themes bạn đã ngừng sử dụng (hoặc quên cập nhật) từ lâu, bạn đã giảm nguy cơ bị tấn công và giúp WordPress Site của bạn trở nên bảo mật hơn.

Bước 11: Cấu hình file .htaccess để bảo mật tốt hơn

File .htaccess được dùng để cấu hình cho các liên kết WordPress được hoạt động. Không có các lệnh đúng trong .htaccess bạn sẽ gặp rất nhiều lỗi 404.

Rất nhiều người không biết .htaccess có thể tăng tính bảo mật website WordPress. Ví dụ, với .htaccess, bạn có chặn truy cập hoặc vô hiệu việc thực thi PHP trên một thư mục được chỉ định. Bên dưới là cách giúp bạn làm thế nào để dùng .htaccess để tăng tính bảo mật của WordPress.

Lưu ý: Trước khi bạn bắt đầu chỉnh sửa file .htaccess, chúng tôi khuyên bạn nên thực hiện backup lại file .htaccess cũ.

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>

Lưu ý: Bạn cần đổi XX.XX.XX.XXX bằng địa chỉ IP của bạn. Bạn có thể truy cập http://whatismyip.com/ để xem IP hiện hành. Nếu bạn muốn dùng nhiều kết nối hơn để quản lý WordPress site, hãy đảm bảo tất cả IPs quản trị đã được thêm vào (bạn có thể thêm bao nhiêu dòng cũng được). Đoạn script trên không được khuyên dùng khi bạn có địa chỉ IP động.

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>

Bước 12: Thay đổi tiền tố (prefix) của database để ngăn chặn SQL injections

Database là nơi chứa và lưu trữ tất cả những thông tin quan trọng, cũng như dữ liệu website của bạn. Vì vậy, nó trở thành một mục tiêu rất hấp dẫn cho hacker và spammer muốn thực thi các mã tự động để thực hiện SQL injection. Khi cài đặt WordPress, hầu hết mọi người không thực hiện đổi prefix mặc định của WordPress là wp_. Khi tiền tố được đặt mặc định là wp_, hacker sẽ chọn giá trị này để tấn công trước. Với các bước dưới đây, bạn sẽ bảo vệ WordPress khỏi các cuộc tấn công như vậy.

Lưu ý:  Hãy chắc chắn rằng bạn đã backup/export WordPress MySQL database của bạn trước khi bắt đầu thực hiện bước này nhé.

Hướng dẫn thực hiện cho website WordPress sẵn có

1. Đổi prefix trong file wp-config.php:

Sử dụng FTP client hoặc truy cập quản trị hosting để sửa file wp-config.php.

Tìm giá trị $table_prefix trong file config và thay đổi nó.

Giá trị mặc định đang là wp_, Nhân Hòa sẽ thay thế nó thành: m4tb40w1k1_

Khi đang ở trong file wp-config.php, bạn hãy tìm tên database, để biết bạn cần chỉnh sửa database nào. Tìm mục define( ‘DB_NAME’, ‘YOUR_DATABASE_NAME’ );

2. Cập nhật lại giá trị tiền tố prefix của các bảng ở trong Database:

Bạn hãy truy cập vào trang quản trị phpMyAdmin, chọn đúng database name như đã xem thấy khi vào file wp-config.php ở hình trên.

Chúng ta có thể thao tác nhanh chỉ bằng vài câu lệnh SQL:

Chọn mục SQL như hình, sau đó thực thi các lệnh sau:

RENAME table `wp_commentmeta` TO `m4tb40w1k1_commentmeta`;
RENAME table `wp_comments` TO `m4tb40w1k1_comments`;
RENAME table `wp_links` TO `m4tb40w1k1_links`;
RENAME table `wp_options` TO `m4tb40w1k1_options`;
RENAME table `wp_postmeta` TO `m4tb40w1k1_postmeta`;
RENAME table `wp_posts` TO `m4tb40w1k1_posts`;
RENAME table `wp_terms` TO `m4tb40w1k1_terms`;
RENAME table `wp_termmeta` TO `m4tb40w1k1_termmeta`;
RENAME table `wp_term_relationships` TO `m4tb40w1k1_term_relationships`;
RENAME table `wp_term_taxonomy` TO `m4tb40w1k1_term_taxonomy`;
RENAME table `wp_usermeta` TO `m4tb40w1k1_usermeta`;
RENAME table `wp_users` TO `m4tb40w1k1_users`;

Mặc định WordPress có 12 bảng và tất cả cần được cập nhật lại. Tuy nhiên, một vài WordPress themes hoặc plugins có thể tạo thêm bảng khác trong database. Trong trường hợp bạn có nhiều hơn 12 bảng trong MySQL database, thêm các bảng còn thiếu vào trong danh sách câu lệnh và thực thi nó.

3. Kiểm tra lại 2 bảng options và usermeta:

Tùy thuộc vào số lượng plugins bạn đã cài đặt, nhiều giá trị trong database cần được cập nhật lại thủ công.

Chúng ta chỉ cần cập nhật lại ở 2 bảng đó là options  và usermeta, bằng cách sử dụng câu lệnh sau để liệt kê ra tất cả các giá trị tiền tố wp_ cũ.

Với bảng options bạn có thể dùng:

SELECT * FROM `m4tb40w1k1_options` WHERE `option_name` LIKE '%wp_%'

Với bảng usermeta bạn có thể dùng:

SELECT * FROM `m4tb40w1k1_usermeta` WHERE `meta_key` LIKE '%wp_%'

Sau khi đã liệt kê ra, các bạn hãy sử dụng replace để thay đổi các giá trị đó từ wp_ thành m4tb40w1k1_

Hướng dẫn thực hiện cho website WordPress mới

Nếu bạn đang bắt đầu cài đặt website WordPress mới, bạn có thể bỏ qua tất các bước trên và tiến hành thay đổi giá trị ngay từ ban đầu:

Tại dịch vụ WordPress Hosting, chúng tôi đã tích hợp công cụ WordPress Tookit giúp bạn dễ dàng khởi tạo website WordPress chỉ trong vào vài click chuột, xem hướng dẫn tại đây.

Lời kết

Qua bài viết vừa rồi của chúng tôi, thì không khó để bạn có thể tự thực hiện được đúng không nào. Sau khi tiến hành bảo mật toàn diện, chúng ta có thể tạm quên đi nỗi lo về mã độc và có nhiều thời gian hơn để tập trung xây dựng nội dung website nè.

Chúc các bạn thành công nhé!