NỘI DUNG
Trong số các nền tảng quản lý nội dung (CMS) phổ biến, WordPress đã chiếm lĩnh vị trí quan trọng với gần 40% tổng số trang web hoạt động trên internet. Tuy nhiên, sự phổ biến cũng đi đôi với những thách thức về bảo mật.
Bảo vệ website WordPress của bạn khỏi các mối nguy hiểm trực tế và các cuộc tấn công trực tế là một nhiệm vụ quan trọng, đặc biệt khi dữ liệu của bạn và uy tín của bạn đang được đặt ở tầm ngắm. Trong bài viết này, chúng ta sẽ đưa ra một loạt các hướng dẫn chi tiết để giúp bạn duy trì sự an toàn cho website WordPress của mình. Từ việc cài đặt cơ bản cho đến các biện pháp bảo mật nâng cao, bạn sẽ được trang bị những kiến thức cần thiết để tự tin tiến xa trên con đường trực tuyến mà không phải lo lắng về sự an toàn.
Qua những bài hướng dẫn cụ thể và các giải pháp hiệu quả, bạn sẽ hiểu rõ hơn về các nguy cơ thường gặp và cách tối ưu hóa website WordPress của mình. Bằng cách áp dụng những biện pháp bảo mật này, bạn sẽ giảm thiểu nguy cơ bị tấn công, mất dữ liệu quan trọng và duy trì môi trường trực tuyến an toàn cho cả bạn và khách hàng của mình.
Hãy cùng chúng tôi bắt đầu khám phá những cách thức đảm bảo an toàn cho website WordPress của bạn trong bài viết dưới đây.
1. Sử dụng Theme và Plugin
Đối với cá nhân tôi thì thà dùng bản free còn hơn bản null/crack. Thực tế đúng như vây, bạn sử dụng bản null thì đâu đó trong các bản này bạn còn được “Khuyến mãi” cả mã độc vào.
Bằng chứng là trong quá trình làm việc tại đơn vị cung cấp server/hosting với vai trò kỹ thuật thì một ngày tôi nhận được cả vài chục web bị nhiễm mã độc. Và điểm chung là các web đều dùng các theme, plugin nuller. Một số sản phẩm bản quyền có giá cực cao nhưng bạn được mua với giá rất rẻ như (59k, 99k) chẳng hạn.
Một số sản phẩm “bản quyền” mà các người dùng WordPress ở VN thường dùng nhất là
- elementor pro
- flatsome
- advanced custom fields pro
- Yoast SEO Premium
Để dẫn chứng tôi đã tải một bản elementor pro trên mạng về sau đó dùng virustotal để quét và kết quả như bên dưới. Nó thật sự không an toàn các bạn à.
Như vậy việc sử dụng Theme và Plugin bản quyền hoàn toàn thì có bị nhiễm mã độc hay không. Tôi khẳng định với bạn là có. Tại thời điểm bạn cài thì website bạn sẽ an toàn, nhưng sẽ không an toàn trong thời gian sử dụng nếu việc bảo mật website của bạn lỏng lẻo.
Mặc dù việc sử dụng theme và plugin bản quyền không đảm bảo hoàn toàn tránh được mã độc, nhưng nó là một biện pháp tốt để giảm nguy cơ. Luôn luôn duy trì sự cảnh giác và thực hiện các biện pháp bảo mật cần thiết để bảo vệ trang web WordPress của bạn.
2. Quy tắc đặt mật khẩu
Nhiều bạn luôn cho rằng mật khẩu đặt sao cũng được “Ai mà biết”, nhưng không nhé. Không phải người ta scan bằng cơm đâu mà bot sẽ làm việc này. Việc đặt mật khẩu nó rất quan trọng, quan trọng mức nào thì qua ảnh bên dưới sẽ giúp bạn sẽ hiểu rõ hơn.
Đối với mật khẩu bạn nên đặt 8 ký tự trở lên bao gồm: Chữ in Hoa + Chữ Thường + Số + Ký tự đặc biệt
Ví dụ đây là một chuổi mật khẩu có độ phức tạp cao. Tạo mật khẩu ngẫu nhiên tại đây
K0QY$mdUxOsmhE8
3. Thường xuyên Update Core, Theme, Plugin WordPress
Câu hỏi mà tôi gặp hằng ngày nhiều nhất sau khi web bị mã độc là “Web tôi cả năm nay không làm gì cả tại sao lại bị mã độc“. Một câu hỏi rất vô tri. Bạn có thể hình dung một căn nhà nếu ở vài năm không bảo trì, chăm sóc liệu nó có xuống cấp hay không. Website cũng như vậy, bạn cần phải thường xuyên cập nhật khi có thông báo, vì các bản cũ có bug thì nhà phát triển họ mới ra bản cập nhật.
Vì vậy đừng ngần ngại khi có thông báo cập nhật. Và để an toàn hơn bạn cứ sao lưu trước khi làm việc đó.
4. Thay đổi các thông tin mặc định của WordPress
Mặc định khi cài WordPress sẽ sử dụng các thông tin mặc định của WordPress, ai cũng biết điều này và hiển nhiên hacker cũng biết. Sau đây là một số thông tin mặc định mà bạn nên thay đổi ngay:
- User: mặc định user có tên
admin
và bạn hãy thay đổi nó. - prefix database: Mặc định prefix sẽ là
wp_
và bạn hãy thay đổi nó. - Đường dẫn đăng nhập:
wp-admin
vàwp-login.php
.
5. Chọn nhà cung cấp Server Hosting uy tín
Việc chọn Hosting rất quan trọng, hosting giúp website vận hành tốt, và tất nhiên việc bảo mật phải đặt lên hàng đầu, vì đâu biết rằng Website bạn rất nhiều thông tin quan trọng.
Hiện tại ở Việt Nam có rất nhiều nhà cung cấp dịch vụ Server Hosting, rất khó để bạn lựa chọn và mình có sẵn một bài viết Top các nhà hosting tốt nhất năm 2022. Mời các bạn xem qua và lựa chọn
5. Phân quyền, bảo vệ file và thư mục với htaccess
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.
5.1 Vô hiệu hóa thực thi PHP trong thư mục /wp-content/uploads
RewriteRule ^wp\-content/uploads/.*\.(?:php[1-7]?|pht|phtml?|phps|js)$ - [NC,F]
5.2. Bảo vệ wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
5.3 Bảo vệ .htaccess khỏi truy cập trái phép
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
5.4 Chặn cross-site scripting (XSS)
# Blocks some XSS attacks
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F,L]
</IfModule>
5.5 Hạn chế quyền truy cập vào wp-includes
# Blocks all wp-includes folders and 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>
5.6 Hạn chế quyền truy cập trực tiếp vào các file PHP của Plugins & Themes
RewriteRule ^wp\-content/plugins/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]
RewriteRule ^wp\-content/themes/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]
5.6 Bảo vệ file xmlrpc.php
<files xmlrpc.php>
order allow,deny
deny from all
</files>
5.7 Giới hạn truy cập wp-admin
order deny,allow
allow from địa-chỉ-ip-của-bạn
deny from all
Tóm tắt lại sau đây là file .htaccess
mẫu của tôi. Bạn có thể copy và sử dụng ngay
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# Blocks all wp-includes folders and 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>
# Blocks some XSS attacks
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
# Disable PHP in Uploads - Security > Settings > System Tweaks > PHP in Uploads
RewriteRule ^wp\-content/uploads/.*\.(?:php[1-7]?|pht|phtml?|phps|js)$ - [NC,F]
# Disable PHP in Plugins - Security > Settings > System Tweaks > PHP in Plugins
RewriteRule ^wp\-content/plugins/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]
# Disable PHP in Themes - Security > Settings > System Tweaks > PHP in Themes
RewriteRule ^wp\-content/themes/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]
</IfModule>
# Bock access xmlrpc.php
<Files xmlrpc.php>
Order deny,allow
Deny from all
</Files>
# Bock access wp-config.php
<Files wp-config.php>
Order deny,allow
Deny from all
</Files>
# Bock access license.txt
<Files license.txt>
Order deny,allow
Deny from all
</Files>
# Bock access readme.html
<Files readme.html>
Order deny,allow
Deny from all
</Files>
# Bock access .htaccess
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
6. Trang bị thêm Plugin bảo mật
Bạn hãy trang bị thêm Plugin bảo mật để tăng cường bảo mật cho web. Một số Plugin tôi đề xuất như sau
- WordFence
- ithemes security
- Anti-Malware Security
7. Bảo mật ở Server
Bảo mật ở máy chủ (server) là một yếu tố cực kỳ quan trọng trong môi trường công nghệ thông tin và mạng. Dưới đây là một số cách cơ bản để bạn bảo mật.
7.1 Thay đổi Port SSH
Mặc định SSH Port là 22
Bạn hãy thay đổi nó ngay lập tức thành một port khác để hacker không scan được. Nếu bạn chưa biết cách đổi port SSH hãy xem hướng dẫn này
7.2 Cấu hình SSH Key và login passwd
SSH Key là một giải pháp khá an toàn để chứng thực cho việc đăng nhập. Khi bạn sử dụng SSH Key và tắt login passwd thì kẻ xấu cho dù có passwd root của không thể đăng nhập vào được
7.3 Cấu hình thêm Firewall
Firewall là bức tường lửa để ngăn chặn các cuộc tấn công ở bên ngoài. Từ đó giúp cho máy chủ bạn được an toàn hơn
- CSF
- Firewalld
- UFW
- fail2ban
7.4 Cài đặt thêm ứng dụng scan mã độc
Hiện có rất nhiều ứng dụng scan mã độc, điển hình là cpguard và imunify. Đây là 2 ứng dụng scan mà tôi thấy tốt nhất và có là sản phẩm trả phí. Tuy nhiên đối với Imunify có bản AV là bản miễn phí và bạn có thể cài đặt nó để sử dụng
8. Trang bị SSL cho website
SSL là cái không thể thiếu khi bạn thiết lập website. Hầu hết các Control Panel hay kịch bản script được cài trên Server Hosting đều có sẵn SSL miễn phí. Nếu bạn đang tìm kiếm cách cài hãy xem qua trang Caissl.com nhé. Website chia sẽ về SSL
9. Kiểm tra dữ liệu trước khi upload lên hosting
Bước này khá quan trọng, nếu file bạn vị nhiễm virus, shell thì khi upload file lên hosting đồng nghĩa với virus sẽ theo lên luôn. Vì vậy bạn nên tập thói quen kiểm tra cẩn thận các file trước khi upload lên hosting. Nếu không có kinh nghiệp bạn có thể sử dụng qua công cụ virustotal để scan.
10. Sao lưu dữ liệu định kỳ
Đây là bước rất quan trọng, việc backup định kỳ giúp bạn có thể bảo vệ toàn bộ website tại thời điểm đó, phòng trướng hợp xấu xãy ra. Mặc định nhà cung cấp luôn backup giúp bạn, tuy nhiên bạn cần backup riêng cho mình 1 vài bản theo tuần hoặc tháng.