Bảo mật Website WordPress hiệu quả bằng các phương pháp tốt nhất

Bảo mật Website WordPress hiệu quả bằng các phương pháp tốt nhất

WordPress là nền tảng mã nguồn mở viết bằng ngôn ngữ PHP và là hệ quản trị nội dung được sử dụng nhiều nhất trên thế giới với gần 30% số website hiện đang chạy trên mã nguồn này. Chính vì vậy nó luôn là đối tượng của các hacker nhắm đến để đánh cắp nội dung, đặt backlink bẩn, gắn quảng cáo Adsense lạ, chuyển hướng vô tội vạ, index tiếng nhật,…

Đối với các Hacker Pro thì không thể khẳng định 100% ngăn chặn được bởi còn phụ thuộc vào website bạn có đủ hấp dẫn họ, hoặc có giá trị gì mang lại hay không. Mỗi tính năng ra đời đều đi kèm một lỗ hổng bảo mật không lớn thì nhỏ, vậy nên trong bài này mình sẽ hướng dẫn các bạn toàn bộ tất cả các phương pháp bảo mật tốt nhất áp dụng cho website bạn có thể sử dụng, để tăng thêm độ bảo mật và làm các hacker tập sự đến hacker Pro cũng phải gặp khó khăn khi muốn chiếm quyền kiểm soát Website của bạn.

Đa phần do một trong các nguyên nhân chính sau mà mình đã đúc kết được trong quá trình fix mã độc cho nhiều website và đã từng bị trong quá khứ lúc mới chập chững bước vào làm Website WordPress:

  • Do dùng Theme, Plugin lậu: Đây là nguyên nhân chính các Website ở Việt nam hay bị nhiễm mã độc đều là chủ nhân web đó tải từ một nguồn không uy tín, chia sẻ trên mạng. Theme Plugin miễn phí nói chung không nên dùng nếu bạn nghiêm túc làm website kinh doanh của bản thân, vì website giống như cửa hàng trên internet của bạn vậy, nó là cả tâm huyết, công sức dồn vào. Theme Plugin miễn phí chia sẻ trên mạng rất nguy hiểm ở chỗ không ai biết được nó có mã độc gì đươc cài cắm bên trong hay không.
  • Do các Website khác trên cùng hosting bị nhiễm mã độc: Nếu bạn mua một hosting dùng chung cho nhiều web dễ bị lây lan từ web này sang web kia khi một web có virus. Các website của bạn về cơ bản đã nằm trên cùng một thư mục lưu trữ trong hosting nên việc lây nhiễm mã độc rất dễ xảy ra.
Bảo mật wordpress
Bảo mật wordpress
  • Lỗ hổng bảo mật từ WordPress core, Theme / Plugin: Đây là lỗi khách quan đến từ mã nguồn bạn đang dùng. Để khắc phục điều này, các theme, plugin và ngay cả wordpress thường xuyên cập nhật các bản vá lỗi mới nhất của họ đi kèm các tính năng mới. Một lỗi hổng nghiêm trọng nào đó vừa được phát hiện thì ngay lập tức các lập trình viên sẽ tung bản cập nhật sửa lỗi này, bạn chỉ cần bấm nút Update trên giao diện quản trị admin là mọi thứ sẽ được khắc phục.
  • Lỗ hổng từ Hosting, VPS, Server đang sử dụng: Một nguyên nhân khách quan khác bạn ít có thể can thiệp đó là lỗ hổng từ nhà cung cấp dịch vụ lưu trữ của bạn. Các lỗ hổng này từ ít nghiêm trọng đến nghiêm trong đều có thể làm website bạn bị ảnh hưởng thậm chí là bay màu. Hãy chọn một nhà cung cấp hosting, vps uy tín Theme300.com có thể khuyên các bạn sử dụng như: Vietnix, Pavietnam, Tinohost, Azdigi,…

Hậu quả của Website bảo mật kém

Website của bạn có nguy cơ rất cao có thể nhiễm virus nếu không áp dụng các phương pháp bảo mật. Thực tế hàng ngày trên Internet có rất nhiều tool đang chạy, nó được điều khiển bởi các kẻ xấu, tool này sẽ liên tục quét các website dò tìm lỗ hổng bảo mật. Web bạn không may nằm trong danh sách dò được mà bảo mật kém thì rất dễ bị hack.

Có thể kể đến một vài hậu quả bạn sẽ hứng chịu khi sử dụng website có bảo mật chưa tốt:

  • Dễ bị hack mất website, đặt backlink xấu, index tiếng nhật, chèn quảng cáo Adsense lạ, chuyển hướng đến web xxx, xóa mất dữ liệu, mất quyền truy cập Admin
  • Ảnh hưởng đến SEO: Google gửi một cảnh báo qua Email cho bạn thông qua Google Search Console (cần đăng ký trước đó) cho biết tình hình và cảnh báo nguy hiểm đến trình duyệt mỗi người dùng khi truy cập vào đường link của website bạn. Chưa nói ảnh hướng đến thứ hạng như nào nhưng khác hàng sẽ mất dần niềm tin cho một website suốt ngày có cánh bảo đó nguy hiểm từ Google.
  • Ảnh hưởng đến uy tín website, doanh nghiệp, công việc kinh doanh: Website bạn không thể truy cập và có những trải nghiệm tồi tệ khi khách truy cập nó sẽ giết website của bạn dần dần nếu như không tìm cách khắc phục xử lý mã độc càng sớm càng tốt. Bạn hãy đặt mình vào vị trí khách hàng xem liệu bạn có bỏ tiền ra mua một sản phẩm ở website báo nguy hiểm hay Google có muốn một website có chứa virus xếp top kết quả tìm kiếm hay không?

Các phương pháp bảo mật Website WordPress chống hack hiệu quả

Sử dụng Tên đăng nhập – Mật khẩu khó đoán

Thực tế có rất nhiều công cụ dò tìm mật khẩu trên mạng chia sẻ tràn lan, cách làm cũng khá đơn giản, một hacker tay mơ, hacker tập sự cũng có thể tự mò cách chạy tool dò mật khẩu một website. Các thức dò ở đây ở file từ điển được chuẩn bị sẵn, mật khẩu của bạn dễ mò ví dụ như 123, anhyeuem, 123456…. thì chỉ trong vài giây sẽ phá được. Độ khó mật khẩu được tăng lên khi bạn chèn các ký tự đặc biệt như !@#$, thêm các ký tự in hoa xen kẽ in thường, mật khẩu trên 8 ký tự. Bạn kết hợp tất cả các điều trên thì gần như mật khẩu không thể dò được ở công nghệ hiện tại.

Một tool dò các mật khẩu khó trên 8 ký tự, có chữ thường và in hoa, bao gồm cả ký tự đặc biệt mất thời gian khoảng vài chục ngàn năm thậm chí là cả triệu năm nếu như bạn tăng độ dài mật khẩu lên một chút. Đây được coi như là biện pháp cứng rắn loại trừ được kẻ xấu có ý định dò mật khẩu bằng tool.

Cập nhật phiên bản WordPress, Cập nhật Theme, Plugin lên bản mới nhất

Hãy liên tục cập nhật lên bản mới nhất để Website đạt tình trạng bảo mật và khắc phục các bản vá lỗi hiện có. Nếu website bạn dùng bản WordPress / Theme / Plugin bản cũ có một lỗi nghiêm trọng, bạn chưa kịp cập nhật lên thì Website bạn sẽ có khả năng bị hack nếu kẻ xấu quét được phiên bản bạn đang sử dụng đấy nhé. Cho nên hãy cập nhật tất cả các thứ mình kể trên càng sớm càng tốt. Bạn cũng đừng sợ lỗi hay xung đột gì vì nó được đưa vào kiểm tra kỹ lưỡng bởi các lập trình viên giàu kinh nghiệm, hoặc bạn có thể đợi vài ngày sau cập nhật cũng chưa muộn.

Sử dụng xác thực 2 yếu tố

1. Xác thực 2 yếu tố cho Hosting: bạn mở Cpanel tìm đến phần Xác thực 2 yếu tố, viết tắt là 2FA (Two – Factor Authentication).

Xác thực 2 yếu tố cho Cpanel
Xác thực 2 yếu tố cho Cpanel

Chọn Set up Two-Factor Authentication:

Chọn Set up Two-Factor Authentication
Chọn Set up Two-Factor Authentication

Tiếp theo mở CH Play trên điện thoại của bạn, tải ứng dụng có tên: Google Authentication và cài đặt nó:

Ứng dụng Google Authentication trên Google Play
Ứng dụng Google Authentication trên Google Play

Sau đó bạn mở ứng dụng lên, bấm vào dấu cộng / Quét mã QR. Quét đoạn mã QR trong Cpanel của bạn, sau đó điền mã xác thực vào ô bên dưới rồi bấm nút Configure Two – Fator Authentication để xác nhận.

Điền mã xác thực
Điền mã xác thực

Lần tới mỗi khi đăng nhập vào Hosting / Cpanel bạn cần cung cấp một đoạn mã có trong ứng dụng Google Authentication để xác mình thêm lần nữa, mã này được tạo ngẫu nhiên và reset mỗi 30 giây nên khá an toàn. Với các này dù kẻ xấu có biết mật khẩu của bạn cũng không thể nào đăng nhập được vào bên trong vì cần có mã xác thực bạn đang nắm giữ.

2. Xác thực 2 yếu tố cho WordPress: Bạn nên kết hợp cả 2 loại xác thực cùng một lúc để đạt hiệu quả cao nhất. Với WordPress, bạn cần tải Plugin Wordfence Premium về để chúng ta cài đặt xác thực 2 yếu tố cho mỗi lần đăng nhập Admin.

Sau khi cài Wordfence Premium, bạn bấm vào Wordfence / Login Security. Mở điện thoại ra và quét mã QR:

Nhập mã rồi bấm Active
Nhập mã rồi bấm Active

Bạn nhận được một đoạn mã gồm 6 chữ số, nhập đoạn mã này vào ô bên tay phải rồi bấm nút ACTIVE để kích hoạt tương tự phần trên. Sau này bạn đăng nhập cần cung cấp một đoạn mã gồm 6 chữ số trong ứng dụng Google Authentication trên điện thoại để xác minh lần thứ 2 rồi mới có thể đăng nhập. Cách làm này cũng ngăn chặn kẻ xấu, dù chúng có mật khẩu của bạn cũng không thể nào đăng nhập vào Admin để làm bất cứ thứ gì được.

Xóa / Loại bỏ các Theme và Plugin không sử dụng

Việc bạn xóa hết các theme plugin không sử dụng giúp tiết kiệm dung lượng hosting của bạn đồng thời loại bỏ các tập tin có thể nhiễm virus mã độc đang được ẩn bên trong các file theme plugin này. Bạn sử dụng cái nào thì bật lên còn lại hãy vô hiệu hóa và xóa chúng ngay lập tức.

Không xét duyệt bình luận, không click vào bình luận có đường link lạ

Có một số người cố tình đặt backlink xấu hoặc cố gắng khai thác lỗ hổng website của bạn thông qua các bình luận, rất may WordPress có chức năng xét duyệt bình luận trước khi nó có thể xuất hiện ra ngoài nội dung bài viết. Chỉ nên giữ những bình luận bạn coi là độc giả thực sự còn các bình luận đi kèm đường link chưa rõ nguồn gốc thì cho vào thùng rác hoặc không xét duyệt.

Bạn cũng có thể sử dụng Plugin Akismet Spam Protection miễn phí trên kho WordPress, plugin này cũng ngăn chặn rất tốt các bình luận spam cho các website bị spam bình luận số lượng lớn, bạn có thể tải về và cài đặt nó tại đây.

Sử dụng phiên bản PHP mới nhất

Bên cạnh Theme, Plugin, WordPress cập nhật liên tục bạn nên sử dụng bản mới nhất cho PHP. Để làm điều này, bạn mở Cpanel / Select PHP Version:

Chọn phiên bản PHP
Chọn phiên bản PHP

Tại đây bạn thay đổi phiên bản PHP cho hosting đang sử dụng. Nên chọn phiên bản PHP từ 7.4 trở lên (trên 8.0 càng tốt) vì các phiên bản trước có các lỗ hổng bảo mật tương đối dễ khai thác, Website của bạn cũng được tăng bảo mật lên phần nào khi sử dụng bản PHP được cập nhật mới nhất.

Chọn phiên bản PHP mới nhất
Chọn phiên bản PHP mới nhất

Sử dụng chứng chỉ bảo mật SSL / HTTPS

Một website có cài SSL giúp trình duyệt hiển thị chế độ “Duyệt Web an toàn“, ngược lại nó hiện ra cảnh báo “Không bảo mật” màu đỏ. Cài SSL giúp cho dữ liệu của bạn và khách hàng được truyền đi theo mã hóa không thể giải mã được, nên đảm bảo tính bảo mật những thông tin quan trọng liên quan đến cá nhân, tài khoản ngân hàng, thẻ ATM,…

* Chưa cài SSL:

Lỗi chứng chỉ SSL
Lỗi chứng chỉ SSL

* Đã cài SSL:

Đã bật bảo mật SSL
Đã bật bảo mật SSL

Đối với các trang bình thường khác, lý do lớn nhất cho điều này là trang đăng nhập WordPress của bạn. Nếu bạn không chạy qua kết nối HTTPS, tên id đăng nhập người dùng và mật khẩu của bạn sẽ được gửi dưới dạng văn bản rõ ràng qua internet. Các hosting bây giờ đều hỗ trợ cài đặt miễn phí SSL nên bạn chỉ cần gửi một ticket đến bộ phận hỗ trợ nhờ hợp cài đặt trong thời gian nhanh chóng.

Che Giấu File Config: wp-config.php

Che giấu file wp-config.php sẽ làm cho hacker gặp khó khăn trong việc quét dò tìm thông tin database, mã nguồn của website, bởi vì file wp-config đúng như cái tên của nó, file này chứa toàn bộ các cấu hình quan trọng một website, việc để lộ nó cho người khác biết tương đương với việc mời chào họ vào hack website của mình.

Để giấu file wp-config.php, bạn vào Cpanel rồi tạo một thư mục trống có vị trí ngang hàng với public_html:

Tạo một thư mục ngang hàng Public
Tạo một thư mục ngang hàng Public

Sau đó bạn vào thư mục public_html, tải file wp-config.php về:

Tải file wp-config về
Tải file wp-config về

Tải file wp-config.php này vào bên trong thư mục con vừa tạo:

Tải File wp-config lên thư mục con vừa tạo mới
Tải File wp-config lên thư mục con vừa tạo mới

Chỉnh sửa file wp-config.php trong thư mục public_html:

Sửa file config trong thư mục public_html
Sửa file config trong thư mục public_html

Xóa hết nội dung trong file wp-config.php (trong thư mục public_html) rồi Dán đoạn code sau vào:

Dán đoạn code này vào
Dán đoạn code này vào, lưu ý nhớ thay chữ “xindunghackem” là tên của thư mục bạn vừa tạo mới (nằm ngang hàng với thư mục plublic_html) nhé.

* Nội dung đoạn Code (nằm trong thẻ mở <?php ):

<?php
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . '../xindunghackem/wp-config.php');

Thay đổi tiền tố cơ sở dữ liệu (Database Prefix)

Tên tiền tố cơ sở dữ liệu mặc định luôn là wp_ nên bạn cần thay đổi nó sang một cái tên khác để tránh cho hacker biết được, để làm điều này, bạn tải một plugin bảo mật có tên là Ithemes Security Pro về để chúng ta cấu hình, link tải Ithemes Security Pro tại đây.

Bạn cài đặt Ithemes Security Pro vào Website, sau đó bạn tìm theo thứ tự điều hướng sau: Security / Settings / Tools / Change Database Table Prefix:

Chọn Change Database Table Prefix
Chọn Change Database Table Prefix

Bấm Run để bắt đầu chạy. Hệ thống sẽ thay đổi tất cả các bảng trong cơ sở dữ liệu của bạn từ mặc định wp_ sang một kiểu mới gồm các ký tự được tạo ngẫu nhiên:

Thay đổi thành công tiền tố cơ sở dữ liệu
Thay đổi thành công tiền tố cơ sở dữ liệu

Bạn có thể kiểm tra thành quả bằng cách mở Cpanel / phpMyAdmin, chọn Database bạn đang sử dụng, lúc này tất cả các bảng (table) đã được đổi từ dạng tiền tố wp_ sang dạng tiền tố mới:

Tiền tố đã thay đổi thành công
Tiền tố đã thay đổi thành công

Thay đổi nội dung Security Key

Security Key là mã bí mật tạo ngẫu nhiên lưu trong file wp-config.php nằm trong thư mục gốc public_html của Website WordPress. Bạn mở file wp-config.php sẽ nhìn thấy các dòng chữ kiểu giống thế này:

define( 'AUTH_KEY', 'STlDfHfd0~VYXaW&eXfZ:;7*-cfH}9stxi]=EzEi.)PK_[!U_hKrPox=8hIxV$*F' );
define( 'SECURE_AUTH_KEY', '4!BCoi!a1pPDY6D^cDpq(k~/Un3.<CJ{n:M3l9O*ecnwNKM!Z?bJ`:aa O*;F`[J' );
define( 'LOGGED_IN_KEY', 'k^KYjM{AuTPUjpqcKFo;<iDo5GBPTc$K=vO9]DXvWa1lcQww8_C6kcy~X?},i$s$' );
define( 'NONCE_KEY', '|;5m1(+?NF9!tX<fno =3e(`SU&Ul>tQ[b~ &oitlye%0ep+SOQzo*-CjU3e8ve<' );
define( 'AUTH_SALT', '!#fI7-`t[Q5RRqm3%:6IxJ!N|`M%j28x(IzV1e6m#L[>|w]--Nl4]PX5asY|vQIX' );
define( 'SECURE_AUTH_SALT', 'vX7*3,}s~qIMUSa`FH+lT0r@25#5Z9r1>pJZedtorh?? ?XcGzxE{-&.j@M{HmCm' );
define( 'LOGGED_IN_SALT', '< T~1a?@1#.68,;{FDFGZd>gstfpy;G38GL^)jRk_j*i;tli3)-P>f+i<ogUWODI' );
define( 'NONCE_SALT', 'y)jBp*pL%bH-%2ne&Ev?Muj(+=j23=pxM{>O3/q,%zYlyt#].J{XpGpn8T:5:BdY' );

Đoạn mã này được tạo ngẫu nhiên và duy nhất cho mỗi phiên đăng nhập vào Admin của một tài khoản, hãy chắc chắn rằng nó được tạo ngẫu nhiên, bạn cũng nên đổi mã này vài lần trong vòng 1 tuần nếu website bạn đang bị hacker tấn công. Để tạo mã ngẫu nhiên, bạn Bấm vào đây. Trang này sinh ra một đoạn mã Security Key mới, bạn copy đoạn này và thay thế đoạn cũ để cập nhật Key mới, sau đó nhớ bấm Lưu (Save) để lưu lại thay đổi.

Cấm Sửa / Cài thêm Theme & Plugin

Biện pháp này được coi như là một khống chế cứng cho các hacker, thật khó để thâm nhập và hack vào một website khi được thêm các đoạn mã bảo vệ chống việc chỉnh sửa, cài mới file giao diện và file Plugin. Khi áp dụng cách này, Website của bạn nếu bị mất quyền kiểm soát Admin thì Kẻ xấu cũng không thể thâm nhập sâu hơn được, giúp giảm thiệt hại đáng kể nếu không may có chuyện xấu xảy ra.

Để cấm cài mới / chỉnh sửa Theme & Plugin bạn chỉ cần thêm 2 dòng code này vào file wp-config.php (nằm trong thư mục gốc public_html) là được:

/* Cấm sửa file */
define('DISALLOW_FILE_EDIT',true);


/* Cấm cài theme plugin */
define('DISALLOW_FILE_MODS',true);

Nếu bạn cần cài Plugin / Theme mới hoặc muốn chỉnh sửa file thì chỉ cần sửa đoạn code trên, cụ thể bạn đổi True thành False để tắt tính năng bảo mật này.

Phân quyền truy cập (CHMOD) các file cấu hình quan trọng

Theo mặc định, các file trong Cpanel (hosting) của bạn được phân quyền CHMOD là 644 và thư mục được phần quyền 755. Đối với các file chứa cấu hình toàn bộ website của bạn cần được bảo mật tốt hơn các file khác nên chúng ta sẽ thay đổi quyền truy cập vào các tệp này nghiêm ngặt hơn. 2 file cấu hình quan trọng mình muốn nói đến là wp-config.php.htaccess.

* Đối với file wp-config.php:

Chuột phải vào file wp-config.php và chọn Change Permissions:

Chọn Change Permissions
Chọn Change Permissions

Bạn tích chọn các ô giống như mình để phân quyền cho người dùng có thể đọc file này mà thôi. Như vậy file wp-config.php bạn chuyển thành quyền 400:

Phân quyền cho wp-config
Phân quyền cho wp-config

* Đối với file .htaccess:

File .htaccess theo mặc định có thể bị ẩn đi, để hiển thị file .htaccess bạn bấm vào nút Cài đặt ở góc trên cùng bên tay phải:

Bấm nút Cài đặt
Bấm nút Cài đặt

Một cửa sổ mới hiện ra, bạn tích chọn vào ô Hiển Thị Tệp Ẩn (dotfiles) và chọn Save để lưu lại:

Hiện file htaccess
Hiện file htaccess

Chuột phải vào file .htaccess rồi bấm Change Permissions:

Thay đổi nội dung file htaccess
Thay đổi nội dung file htaccess

Bạn tích chọn vào các ô giống như hình bên dưới để cho Quyền được đổi thành 444. Sau đó bấm nút Change Permissions để lưu lại thay đổi:

Chọn quyền cho htaccess
Chọn quyền cho .htaccess

Chặn thực thi file wp-config.php

Bạn thấy bài viết này liên tục nhắc đến file wp-config.php bởi vì nó là file mang cấu hình cực kỳ quan trọng cho Website WordPress. Bây giờ mình sẽ chỉ bạn cách chặn không cho phép ai chỉnh sửa hay thực thi file này.

Chuột phải vào file .htaccess, chọn Edit:

Edit file htaccess
Edit file .htaccess

Dán dòng code này vào trong file .htaccess:

# Không cho phép sửa file config
<Files wp-config.php>;
order allow,deny
deny from all
</Files>

Như vậy là xong, không có ai, theme hoặc plugin nào có thể chỉnh sửa và thay đổi nội dung trong file cấu hình wp-config.php này. Bạn nên làm nếu như website của bạn đã ổn định và đi vào hoạt động. Còn vẫn đang trong quá trình xây dựng bạn có thể tắt nó đi bằng cách xóa dòng code trên.

Sử dụng plugin quét mã độc

Wordfence Premium: đây là plugin bảo mật phổ biến nhất trên WordPress, có rất nhiều tính năng thú vị như xem được ai đang truy cập website của bạn cùng với thông tin chi tiết, phân biết bot hay người, đồng thời chặn tất cả các mối đe dọa tiềm tàng bằng trình quét virus mạnh mẽ. Wordfence cũng đưa ra thông tin về file nào đang bị nhiễm virus đồng thời cung cấp vị trí cụ thể đoạn code chứa mã độc, bạn có thể bấm vào xem và xóa chúng. Mình thường xuyên sử dụng plugin này và nó là ưu tiên số 1 mình khuyên các bạn nên dùng để bảo mật cho Website WordPress.

Ithemes Security Pro: một plugin có tiếng trong cộng đồng WordPress với các biện pháp bảo mật tiên tiến nhất như chống dò mật khẩu Brute Attack, đăng nhập 2 yếu tố, đổi đường dẫn admin, quét virus,… tất cả những gì bạn cần để bảo mật website đều có trong bản Pro của plugin này. Ithemes Security Pro sử dụng API của Sucuri quét virus Server bên ngoài nên đảm bảo tính khách quan và độ chính xác khá cao.

Sucuri: Một plugin cũng chất lượng không kém đó chính là Sucuri. Sucuri được lập trình bởi các nhà bảo mật và chuyên gia trình độ cao. Khả năng quét tường lửa của Sucuri rất mạnh, nó phát hiện ra các lỗ hổng bảo mật và bạn sẽ được sửa miễn phí bởi các chuyên gia. Miễn phí ở đây khi và chỉ khi bạn đã đóng học phí trước đó. Bởi vì chi phí dùng Sucuri không hề rẻ chút nào, nên bạn được hỗ trợ fix mã độc từ chuyên gia với mức giả khoảng 500$ / 1 site / 1 năm.

Trong trường hợp Website bạn bị nhiễm mã độc, hãy dùng các công cụ quét sẵn có trong 3 plugin trên để tìm ra mã độc càng sớm càng tốt, rất may các công cụ trên hoạt động rất hiệu quả trong suốt thời gian mình đã sử dụng. Bạn nên kết hợp cả 3 plugin trên (đặc biệt là Wordfence và Sucuri) để quét vì 2 plugin này khả năng quét rất mạnh mẽ. Còn việc sử dụng thực tế thì nên chọn chỉ một cái mà thôi. Nếu là mình thì luôn luôn chọn Wordfence Premium là lựa chọn số 1. Bạn có thể mua Wordfence Premium chính hãng giá rẻ có key bản quyền tại đây.

Tắt XML – RPC không dùng đến

Trong bất kỳ Website WordPress nào bạn để ý sẽ thấy một file nằm trong thư mục gốc public_html có tên xmlrpc.php. XML-RPC là một script là một đoạn mã script mới được sử dụng từ bản 3.5 trở lên, đến nay nó luôn được bật mặc định trong bản cốt lõi WordPress

XML – RPC là giao thức để kết nối với website WordPress thông qua các file XML. Hiện tại có thể hỗ trợ các API của các CMS như WordPress API, Blogger API, Movable API, Pingback API, MetaWeblog API,…

Thông thường trên WordPress, chúng ta sẽ sử dụng đến XML-RPC khi thiết lập đăng bài từ một ứng dụng khác bên ngoài như Windows Live Writer, hoặc các dịch vụ kết nối với website để đăng bài như IFTTT chẳng hạn.

Nhưng từ khi XML-RPC được sử dụng phổ biến trên WordPress, nó lại làm dấy lên về nguy cơ bị tấn công brute force attack để dò mật khẩu hoặc nặng hơn là gửi một lượng lớn request đến máy chủ để làm tê liệt máy chủ, hình thức tấn công này được gọi là HTTP Flood Attack, là một kiểu tấn công DDoS.

Để tắt tính năng XML – RPC, bạn dán dòng code sau vào bên trong file .htaccess:

# Tắt XML - RPC
<files xmlrpc.php>
order allow,deny
deny from all
</files>

Tắt duyệt thư mục hiển thị

Theo mặc định các tập tin được công khai và một người lạ hoàn toàn có thể xem nội dung bên trong đó có gì, bằng cách truy cập đường dẫn sau:

http://example.com/wp-includes/

Tất cả nội dung hiện thị công khai ra bên ngoài, tin tặc hoàn toàn có thể lợi dụng sở hở này để khai tác các lỗ hổng bảo mật:

Thư mục bị lộ
Thư mục bị lộ

Để bảo mật cho các thư mục quan trọng và ngăn chặn người khác có thể tự do xem nội dung, bạn chỉ cần chèn đoạn code sau vào trong file .htaccess:

# Tắt duyệt thư mục hiển thị
Options -Indexes

Chặn một IP đáng ngờ

Thường xuyên sử dụng plugin Wordfence mình hay thấy các ip lạ có hành vi không giống bot cào lành tính (google) cũng không giống khách hàng truy cập, các ip này hay vào các truy vấn lạ giống như đang khai thác lỗ hổng bất hợp pháp Website thì bạn có thể chặn một địa chỉ IP bất kỳ trên phạm vi toàn bộ hosting. Lưu ý bạn chặn bằng các plugin thì ip đó vẫn có thể xem được website nếu như bạn sử dụng cache. Còn chặn IP trên phạm vi toàn hosting khiến IP bị chặn không xem bất cứ được nội dung gì ngoài thông báo lỗi bị chặn 403 Forbidden: Access to this resource on the server is denied!

Chặn IP đáng ngờ
Chặn IP đáng ngờ
Để chặn các IP đáng ngờ, bạn dán đoạn code sau vào file .htaccess:
deny from ip bạn muốn chặn

* Ví dụ 1:

deny from 123.66.170.213
deny from 143.22.144.234
deny from 176.00.122.212
deny from 122.80.121.232
deny from 188.40.190.276
deny from 112.25.111.234

* Ví dụ 2:

deny from 123.66.170.0/24
deny from 143.22.144.0/24
deny from 176.00.122.0/24
deny from 122.80.121.0/24
deny from 188.40.190.0/24
deny from 112.25.111.0/24

Trong đó ở Ví dụ 1 mỗi dòng bạn chèn một địa chỉ IP muốn chặn. Ở ví dụ 2 mình thay thế số cuối cùng trong dải IP thành 0/24 sẽ chặn tất cả các dải ip trong cùng một mạng local, tránh trường hợp đối tượng đổi sang thiết bị khác, với cách này chỉ có Reset Modem mạng hoặc Fake IP mới có thể truy cập vào Website của bạn.

Thêm các tiêu đề bảo mật (Security Headers)

HTTP Security Headers là một phần cơ bản của bảo mật website, giúp chống lại các cuộc tấn công mà website có nguy cơ gặp phải cao như: MIME types, clickjacking, code injection, XSS… Mình sẽ hướng dẫn bạn tạo ra các HTTP headers quan trọng nhất nên cấu hình trên web server để nâng cao bảo mật cho website.

Thêm tiêu đề bảo mật giúp cho cảnh báo đỏ trên trang kiểm tra Security Headers biến mất và chuyển thành màu xanh an toàn khi bạn đã thêm tiêu đề bảo mật cho Website. Các bạn có thể Check xem trang Web của bạn đã có tiêu đề bảo mật nào được thiết lập bằng cách vào Securityheaders.com.

* Chưa có tiêu đề bảo mật:

Chưa có Tiêu đề bảo mật
Chưa có Tiêu đề bảo mật

* Đã có tiêu đề bảo mật đầy đủ:

Đã thêm tiêu đề bảo mật đầy đủ
Đã thêm tiêu đề bảo mật đầy đủ

Cách thêm tiêu đề bảo mật là mở file .htaccess lên và thêm các đoạn mã Security Headers dưới đây vào nội dung bên trong file này:

Header always append X-Frame-Options SAMEORIGIN: Được hỗ trợ bởi tất cả các trình duyệt và ngăn kẻ tấn công chuyển nội dung trang web của bạn sang các trang khác.

Header set X-Content-Type-Options nosniff: Giảm rủi ro bảo mật kiểu MIME, tìm hiểu thêm tại đây.

Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”: tính năng bảo mật cho phép website, thông báo cho các trình duyệt chỉ nên giao tiếp bằng giao thức HTTPS an toàn thay vì HTTP.

Header set Content-Security-Policy “script-src ‘none’;”: Tắt toàn bộ Javascript trên trình duyệt người dùng.

Header always set Referrer-Policy “same-origin”: tiêu đề này hướng dẫn các trình duyệt hỗ trợ chỉ đặt tiêu đề liên kết giới thiệu cho yêu cầu từ miền hiện tại ( same-origin).

Header set X-XSS-Protection “1; mode=block”: bảo mật chống kiểu tấn công XSS.

Header always set Permissions-Policy “geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self);”: Kiểm soát các tính năng mà trình duyệt có thể sử dụng.

* Tổng hợp tất cả các đoạn code trên chúng ta có đoạn mã bên dưới, lưu ý bạn dán đoạn mã này vào file .htaccess rồi lưu lại nhé:

Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options nosniff
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header set Content-Security-Policy "script-src 'none';"
Header always set Referrer-Policy "same-origin"
Header set X-XSS-Protection "1; mode=block"
Header always set Permissions-Policy "geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self);"

Lưu ý rằng bạn cần bảo mật Website ở mức độ nghiêm ngặt mới áp dụng các tiêu đề bảo mật bên trên. Bởi một số plugin, theme, và các tính năng của Website sẽ bị ảnh hưởng, nên cân nhắc lựa chọn nên bật và nên tắt cái nào cho phù hợp.

Đổi đường dẫn đăng nhập mặc định /wp-admin (wp-login.php)

Mỗi khi đăng nhập tài khoản Admin bạn hay vào đường link https://tên web site/wp-admin hoặc https://tên website/wp-login.php. Đây là đường linh được cài đặt mặc định cho tất cả các Website WordPress lúc mới đầu. Hoàn toàn có thể thay đổi đường dẫn này sang một cái tên ngẫu nhiên hoặc bạn đặt tùy ý chỉ mình bạn biết. Cách này tránh được hacker hack website của bạn phần nào bởi vì hacker thường tấn công các Website bảo mật kém và tạm thời ngó lơ đi các Website được quản lý bởi Admin có một chút kỹ năng bảo mật.

* Ẩn đường dẫn đăng nhập bằng WPS Hide Login

Thay đổi đường dẫn đăng nhập với plugin WPS Hide Login
Thay đổi đường dẫn đăng nhập với plugin WPS Hide Login

Để đổi đường dẫn đăng nhập, bạn cần sử dụng một plugin bảo mật có tên là WPS Hide Login. Plugin này bạn có thể tải miễn phí trên kho Plugin của WordPress. Cài đặt plugin này vào Website rồi mở nó ra chúng ta bắt đầu thiết lập cài đặt.

Cài xong plugin rồi thì bạn mở nó ra bằng cách bấm Cài đặt / Tổng quan. Kéo xuống dòng dưới cùng, tại url bạn thay đổi thành url bạn muốn như sau:

  • Login url: Đường dẫn đăng nhập bạn muốn thay đổi
  • Redirection url: Đường dẫn được chuyển hướng khi ai đó cố tình đăng nhập theo link mặc định wp-admin (wp-login.php)
Thay đổi đường link đăng nhập
Thay đổi đường link đăng nhập

* Ẩn đường dẫn đăng nhập bằng Ithemes Security Pro:

Truy cập vào Security / Settings / Advenced rồi chọn đến tab HIDE BACKEND:

Ẩn đường dẫn đăng nhập bằng Ithemes Security Pro
Ẩn đường dẫn đăng nhập bằng Ithemes Security Pro

Ở đây có các ô bạn có thể điền như sau:

  • Login Slug: Đường dẫn đăng nhập mới bạn muốn đối thành
  • Register Slug: Đường dẫn trang đăng ký bạ muốn đổi
  • Redirection: Đường dẫn chuyển hướng sau khi có ai đó đăng nhập vào Link đăng nhập cũ mặc định

Điền các thông tin xong bạn bấm nút Save để lưu lại và áp dụng các thay đổi.

Sao lưu lại toàn bộ Website và lưu trữ vào một nơi an toàn

Sao lưu giờ đây đơn giản hơn bao giờ hết vì đã có các plugin hỗ trợ việc này, bạn không cần phải sao lưu phục hồi thủ công cho mất thời gian. Sao lưu dữ liệu giúp bạn lấy lại toàn bộ mã nguồn, cơ sở dữ liệu về trạng thái an toàn trước đó. Bạn nên sao lưu định kỳ khoảng một tuần một lần hoặc 1 tháng 1 lần rồi lưu trữ nó lên đám mây (Google Drive, Ondrive) cho chắc ăn. Không nên lưu file backup vào ổ cứng máy tính hoặc USB vì dễ mất, đánh rơi USB, máy tính bạn cũng có thể nhiễm virus, lỗi Win.

Sao lưu lại dữ liệu toàn bộ Website với All in One Migration
Sao lưu lại dữ liệu toàn bộ Website với All in One Migration

Plugin sao lưu dữ liệu mà Theme300.com đề xuất cho các bạn đó chính là All in One Migration Unlimited Extension. Nó sao lưu vô cùng mạnh mẽ, nhanh chóng, chỉ với một cú click chuột là toàn bộ các dữ liệu của bạn lưu trữ thành một file duy nhất. Sau đó bạn muốn phục hồi lại chỉ cần sử dụng file backup đó rất tiện lợi.

Vô hiệu hóa thực thi PHP trong một số thư mục nhất định

Cách này áp dụng cho Website nào có sử dụng hình ảnh và mình thấy tất cả các Website hiện nay đều có sử dụng hình ảnh dù nhiều hay ít. Mỗi khi bạn, hoặc người nào đó up bài viết lên kèm theo hình ảnh minh họa cho nội dung, dù vô tình hay cố ý, có một xác suất ảnh bạn up lên chứa virus và các mã thực thi php được chèn vào ảnh. Chúng ta nên vô hiệu hóa tất cả các đoạn code php khi tải lên các tệp hình ảnh hoặc một tệp bất kỳ, không cho phép chúng được thực thi.

Để làm điều này, bạn mở Cpanel / public_html / wp-contents / uploads. Bấm vào dấu + Tệp để thêm một tệp mới:

Bấm vào thêm tệp mới
Bấm vào thêm tệp mới

Điền tên tệp cần thêm mới là .htaccess rồi bấm nút Create New File:

Thêm tệp htaccess
Thêm tệp htaccess

Sau đó bạn chèn dòng code này vào bên trong tệp .htaccess:

<Files *.php>
deny from all
</Files>

Đoạn code trên ngăn chặn thực thi các tập lệnh PHP trên toàn bộ các file được bạn upload.

Thay đổi ID người dùng bằng Ithemes Security

Chạy công cụ này trong plugin Ithemes Security Pro để thay đổi ID người dùng của người dùng có ID người dùng là “1”. Điều này có thể ngăn chặn các cuộc tấn công đơn giản giả sử người dùng có ID là “1” là quản trị viên.

Để thực hiện, bạn cài đặt plugin Ithemes Security Pro vào Website, sau đó điều hướng theo đường dẫn sau: Security / Tools / Change User ID 1 và bấm Run để chạy công cụ tự động:

Thay đổi ID User mặc định 1
Thay đổi ID User mặc định

Giới hạn nỗ lực đăng nhập bằng Plugin

Giới hạn nỗ lực đăng nhập giúp ngăn chặn các Tool tự động dò mật khẩu (kiểu tấn công cổ điển Brute Force Attack), thêm một lớp bảo mật khác sau phương pháp xác thực 2 yếu tố, góp phần tăng gấp đôi bảo mật đăng nhập cho Website WordPress của bạn. Cách làm cũng cực kỳ dễ với các plugin bảo mật đã được tích hợp sẵn các tính năng này. Chúng ta chỉ cần cấu hình lại tùy theo nhu cầu của mỗi người.

* Giới hạn đăng nhập với Wordfence Premium:

Truy cập vào Wordfence / All Options / Brute Force Protection điền các số vào ô trống tương ứng với chức năng của từng phần

Giới hạn nỗ lực đăng nhập
Giới hạn nỗ lực đăng nhập
  • Lock out after how many login failures: Khóa sau bao nhiêu lần thất bại
  • Lock out after how many forgot password attempts: Khóa sau bao nhiêu lần quên mật khẩu
  • Count failures over what time period: Đếm số lần thất bại sau khoảng thời gian nào
  • Amount of time a user is locked out: Khoảng thời gian người dùng bị khóa
  • Immediately lock out invalid usernames: Chặn ngay lập tức nếu nhập sai tài khoản

* Giới hạn nỗ lực đăng nhập với Ithemes Security Pro:

Truy cập vào Security / Settings rồi chọn tab Lockouts, Tiếp theo bạn bấm vào biểu tượng cài đặt trong phần Local Brute Force:

Chọn cài đặt Local Brute Force
Chọn cài đặt Local Brute Force

Lựa chọn / điền vào các dòng tương ứng với chức năng bạn muốn sử dụng:

Giới hạn nỗ lực đăng nhập với Ithemes Security Pro
Giới hạn nỗ lực đăng nhập với Ithemes Security Pro
  • Automatically ban “admin” user: Chặn ngay lập tức người dùng nào đăng nhập bằng tên “Admin”
  • MAX LOGIN ATTEMPTS PER HOST: Số lần đăng nhập tối đa trên mỗi máy chủ
  • MAX LOGIN ATTEMPTS PER USER: Số lần đăng nhập tối đa cho mỗi người dùng
  • MINUTES TO REMEMBER BAD LOGIN (CHECK PERIOD): Số phút ghi nhớ thời gian đã đăng nhập sai

Bảo mật trang đăng nhập và đăng ký bằng Recapcha V3

Đầu tiên bạn vào trang này để đăng ký tạo ReCapcha mới: Google ReCapcha V3.

Bấm vào v3 Admin Console:

Bấm vào v3 Admin Console
Bấm vào v3 Admin Console

Điền thông tin đầy đủ vào các ô trống:

Điền thông tin cho ReCapcha
Điền thông tin cho ReCapcha
  • Label: Nhập tên Capcha bạn muốn tạo
  • reCAPTCHA type: Kiểu Capcha, ở đây bạn chọn là
  • Domains: Nhập tên miền của bạn
  • Accept the reCAPTCHA Terms of Service: đồng ý với điều khoản của Google

Sau đó bạn bấm nút Submit để gửi đăng ký:

Bấm nút Submit
Bấm nút Submit

Bạn bấm vào nút Copy Site KeyCopy Secret Key:

Copy Site Key và Secret Key
Copy Site Key và Secret Key

Quay trở lại Website của bạn, truy cập Wordfence / Login Security rồi điền các Key bạn vừa Copy vào ô tương ứng trong Plugin:

Điền các Key vừa Copy vào
Điền các Key vừa Copy vào

Sau đó bấm Save để lưu lại các chỉnh sửa là được nhé. Như vậy bạn đã cấu hình Recapcha V3 cho Website, lần tới mỗi khi đăng nhập bạn sẽ nhìn thấy biểu tượng ReCapcha của Google hiện ra. Recapcha có nhiệm vụ phát hiện spam, bot spam và ngăn chặn chúng, giúp Website có thêm một lớp bảo mật chống lại các Tool dò lỗ hổng từ hacker.

Cài đặt Cloudflare để tăng bảo mật Website WordPress

Cloudflare, Inc. là một công ty Hoa Kỳ cung cấp mạng phân phối nội dung, dịch vụ bảo mật Internet và các dịch vụ phân phối máy chủ tên miền, đứng giữa khách truy cập và nhà cung cấp dịch vụ lưu trữ của người dùng Cloudflare, hoạt động như một reverse proxy cho các trang web.

Cloudflare bạn có thể đăng ký tài khoản miễn phí để quản lý tên miền, trỏ tên miền đến hosting, chống DDos cho Website, thêm tường lửa bảo mật, thêm các quy tắc bảo mật, chặn các Bot cào nội dung và áp dụng chúng nhanh chóng mà không cần đăng nhập vào WordPress. Để cài đặt Cloudflare, bạn đọc bài viết này.

Dưới đây là một số tùy chọn bạn có thể cài đặt để tăng bảo mật với Cloudflare:

* Bật Proxy Cloudflare:

Bật Proxy cho Cloudflare
Bật Proxy cho Cloudflare

* Bật chế độ chiến đấu Bot (Bot Fight Mode):

Bật chế độ chiến đấu bot cho Cloudflare
Bật chế độ chiến đấu bot cho Cloudflare

* Cài đặt các Quy tắc (Rules) cho khách truy cập:

Cài đặt tường lửa cho Cloudflare
Cài đặt tường lửa cho Cloudflare

* Bật mã hóa bảo mật SSL trên Cloudflare:

Bật Full SSL trên Cloudflare
Bật Full SSL trên Cloudflare

Nếu biết cách sử dụng Cloudflare thì nó cực kỳ mạnh mẽ trong việt set rules theo nhu cầu của bạn, đặc biệt có thể chặn một số loại bot cào nội dung (Crawl).

Kết Luận

Trong bài viết này Theme300.com đã chia sẻ cho các bạn tất tần tật các phương pháp bảo mật tốt nhất cho Website WordPress và cách thực hiện chi tiết từng bước một. Áp dụng các phương pháp này giúp cho Website của bạn an toàn hơn và rất khó bị hack. Hi vọng nó có ích cho bạn. Xin chào, hẹn gặp lại trong các bài viết tiếp theo.

.
.
.
.