Hướng dẫn bảo mật wordpress với file htaccess

0
613

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

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. Bảo vệ file xmlrpc.php

Hiện nay các chuyên gia đã phát hiện ra một phương thức mới để tấn công các website WordPress thông qua XML-RPC. Phương thức này tỏ ra hiệu quả khi kết hợp với cách truyền thống là Brute Force. Nó sẽ cố gắng vét cạn tất cả username/password để đăng nhập vào website và thực thi các lệnh được điều khiển tữ xa của hacker. Vì vậy để hạn chế điều này hãy chặn truy cập vào file xmlrpc.php trên website của bạn.

<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 HOSTVN đề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 scan malware và gửi thông báo cho khách hàng ngày khi phát hiện malware

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. Ngoài ra bạn cũng có thể muốn xem thêm Top các plugin bảo mật WordPress tốt nhất hiện nay.

Xem tiếp bài trong serie<< Cấu hình wp-config tăng cường bảo mật và tối ưu tốc độ cho WordPressHướng dẫn clone mã nguồn wordpress trên hosting cPanel >>
email-business-leaderboard-blog-v3.png
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments