Hướng dẫn bảo mật WordPress với .htaccess – Phần 1

Trong nội dung bài viết này POWERNET sẽ hướng dẫn bạn bảo mật WordPress với .htaccess để hạn chế khả năng bị tấn công và đảm bảo an toàn cho Website của bạn.

Đối với những người có trang Web WordPress bị hack, bạn sẽ biết rằng tin tặc có xu hướng sửa đổi các file trong mã nguồn và sẽ chuyển hướng tất cả truy cập sang url khác. Thường tin tặc sẽ sửa đổi các file php nằm trong thư mục themes hoặc upload file php vào thư mục Uploads của bạn. Trong nội dung bài viết này chúng tôi sẽ hướng dẫn bạn cách sử dụng file .htaccess để hạn chế khả năng bị tấn công cũng như tăng cường bảo mật cho Website wordpress của bạn.

Bảo mật WordPress với .htaccess

1. Vô hiệu hóa thực thi PHP trong thư mục /wp-content/uploads

Để làm điều này bạn chỉ cần thêm rules sau vào trong file .htaccess của bạn

RewriteRule ^wp-content/uploads/.*.(?:php[1-7]?|pht|phtml?|phps|js)$ - [NC,F]

2. Bảo vệ tệp tin wp-config.php

Để bảo vệ tệp wp-config.php của bạn khỏi sự truy cập trái phép, chỉ cần rule sau vào tệp .htaccess của bạn.

<files wp-config.php>
order allow,deny
deny from all
</files>

3. Bảo vệ .htaccess khỏi truy cập trái phép

Để bảo vệ .htaccess khỏi sự truy cập trái phép của tin tặc, bạn có thể ngăn chúng truy cập tệp thông qua rule này.

<files ~ "^.*.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

4. Chặn Cross-Site Scripting (XSS)

Đoạn mã sau đây bảo vệ trang web của bạn khỏi một số cuộc tấn công XSS cơ bản, cụ thể là tiêm một đoạn mã để cố gắng sửa đổi các biến toàn cục và yêu cầu.

# 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. Hạn chế quyền truy cập vào wp-includes

Thư mục /wp-includes/ chứa các tệp WordPress cốt lõi. Không có lý do nào để cho phép bất cứ ai có quyền truy cập vào nó, bao gồm cả chủ sở hữu và quản trị viên. Vì vậy, để tăng cường bảo mật, tốt nhất là nên hạn chế tất cả quyền truy cập vào nó.

# 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>

6. Hạn chế quyền truy cập trực tiếp vào các file PHP của Plugins & Themes

Như đã đề cập trước đó, không có lý do nào để bất kỳ ai có quyền truy cập vào các file php trong plugins và themes, vô hiệu hóa việc truy cập trực tiếp vào nó là một biện pháp bảo mật tốt.

RewriteRule ^wp-content/plugins/.*.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]
RewriteRule ^wp-content/themes/.*.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]

7. Vô hiệu hóa xmlrpc.php

XML-RPC là sử dụng giao thức WebService (SOAP) dùng XML để mã hóa và trao đổi dữ liệu (Remote Procedure Call XML) và có thể hỗ trợ các API của các CMS như WordPress API, Blogger API, ..Tính năng XML-RPC đã được bật mặc định trên WordPress kể từ phiên bản WordPress 3.5, và lý do chính cho việc này là cho phép ứng dụng di động WordPress giao tiếp với Website WordPress của bạn.

Nhìn chung, XML-RPC có nhiều nhược điểm hơn là ưu điểm, việc bật XML-RPC có thể dẫn đến tiếp xúc các lỗ hổng bên trong Website WordPress của bạn, và từ đó có thể trở thành mục tiêu tấn công của Hacker thông qua một số kiểu tấn công cơ bản như DDoS sử dụng pingback XML-RPCBrute force sử dụng XML-RPC. Do đó các bạn nên tắt XML-RPC để tăng tính bảo mật cho Website của mình

<files xmlrpc.php>
order allow,deny
deny from all
</files>

8. Giới hạn truy cập wp-admin

Nếu bạn đang sử dụng IP tĩnh bạn có thể muốn giới hạn quyền truy cập chỉ vào wp-admin và chỉ cho phép địa chỉ IP của bạn được quyền truy cập. Để làm điều này, bạn cần tạo một file .htaccess bên trong thư mục wp-admin với nội dung sau:

order deny,allow
allow from địa-chỉ-ip-của-bạn
deny from all

9. Tìm kiếm một nhà cung cấp Hosting uy tín

Ngoài cách dùng .htaccess để tăng cường bảo mật các bạn cũng nên lựa chọn cho mình một nhà cung cấp Hosting uy tín để sử dụng.

Đối với các Hosting Linux tại POWERNET đều sử dụng Cloud Linux đảm bảo hạn chế 100% Local Attack, ngoài ra hệ thống còn được tích hợp phần mềm Malware & Virus với công nghệ Imunify360.

Kết luận

Tổng kết lại chúng ta sẽ có file .htaccess hoàn chỉnh như sau:

<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>

Hy vọng qua bài viết này phần nào sẽ giúp các bạn có thể bảo mật WordPress với .htaccess một cách tốt hơn.

Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới:
Tel: 0236 267 5555
Hotline : 0979 347 999
Ticket: Bạn sử dụng Email đăng ký dịch vụ để truy cập vào hệ thống Ticket và gửi yêu cầu
Email: Bạn có thể dùng email đăng ký dịch vụ gửi trực tiếp về: support@powernet.vn
Từ khoá: