10 Tweak Bảo Mật WordPress Hữu Ích

Bảo mật luôn luôn là một chủ đề nóng. Ngoài đời, người ta lắp lưới chống trộm, lắp báo động xe hơi và tìm đủ mọi cách để đảm bảo  an ninh của họ đến mức tối đa. Trên mạng, bảo mật cũng quan trọng như vậy, đặc biệt là cho những người kiếm sống từ các trang web và blog. Trong bài này, chúng tôi sẽ chỉ cho bạn một số mẹo hữu ích để bảo vệ trang blog WordPress của bạn.

1. Ngăn chặn các thông tin không cần thiết hiển thị

Vấn đề

Khi bạn đăng nhập thất bại vào một blog WordPress, hệ thống sẽ hiển thị một sốthông tin nói cho bạn biết vần đề ở đâu (Ví dụ : Mật khẩu hoặc tên đăng nhập không đúng). Điều này là tốt nếu bạn không may quên mật khẩu , nhưng nó cũng rất dễ cho những người muốn hack blog của bạn lợi dụng. Bạn có thể để wordpress không hiển thị các thông tin này một cách khá dễ dàng, vậy thì tại sao không bắt đầu ngay để nâng cao tính bảo mật cho website của bạn.

Giải pháp

Để loại bỏ tin nhắn đăng nhập lỗi, chỉ cần mở tập tin functions.php của theme, và dán đoạn mã sau:

add_filter('login_errors',create_function('$a', "return null;"));

Lưu các tập tin, và tự kiểm tra: sẽ không có thêm các tin nhắn được hiển thị nếu bạn không đăng nhập được.

Xin  lưu ý rằng có một số tập tin functions.php. Hãy đảm bảo thay đổi một trong những thư mục wp-content của bạn.

Giải thích

Với đoạn code này, chúng tôi đã thêm một hook đơn giản để ghi đè lên các hàm login_errors(). Bởi vì hàm tùy chỉnh mà chúng tôi tạo ra chỉ trả về kết quả NULL, tin nhắn được hiển thị sẽ là một chuỗi trống.

2. Sử dụng SSL để bảo mật

Vấn đề

Nếu bạn lo lắng về dữ liệu của bạn bị chặn lại trong lúc chuyển thông tin, thì bạn hoàn toàn có thể sử dụng SSL. Trong trường hợp bạn không biết nó là gì thì SSL là một giao thức mã hóa giúp bảo mật thông tin liên lạc qua mạng như Internet. Những trước khi mua SSL bạn phải tìm hiểu thật ký. Hãy đọc hướng dẫn về những điều cần biết khi mua chứng chỉ SSL của chúng tôi để biết thêm chi tiết và Tìm hiểu về các loại chứng chỉ SSL khác nhau để chọn loại phù hợp cho mình.

Bạn có biết rằng buộc WordPress phải sử dụng SSL là điều có thể? Không phải tất cả các dịch vụ hosting đều cho phép bạn sử dụng SSL, nhưng nếu bạn đang host trên Bluehost hoặc HostGator, thì SSL sẽ được kích hoạt.

Giải pháp

Một khi bạn đã kiểm tra máy chủ Web của bạn có thể xử lý SSL, đơn giản chỉ cần mở file wp-config.php của bạn (nằm tại thư mục gốc của WordPress), và dán mã sau đây:

define('FORCE_SSL_ADMIN', true);

Lưu các tập tin, và bạn đã hoàn tất!

Giải thích

Không có gì khó khăn ở đây. WordPress sử dụng rất nhiều các hằng số để tinh chỉnh phần mềm. Trong trường hợp này, chúng tôi chỉ đơn giản là xác định hằng số FORCE_SSL_ADMIN và thiết lập giá trị của nó thành true. Việc này sẽ bắt buộc wordpress sử dụng SSL.

3. Sử dụng .htaccess bảo vệ tập tin wp-config

Vấn đề

Là người dùng WordPress, bạn biết rằng tập tin wp-config.php quan trọng trong việc bảo mật như thế nào. Tệp này chứa tất cả thông tin cần thiết để truy cập vào cơ sở dữ liệu quý giá của bạn: tên người dùng, mật khẩu, tên máy chủ và nhiều hơn nữa. Bảo vệ các tập tin wp-config.php là điều rất quan trọng, vì vậy sẽ như thế nào nếu khai thác sức mạnh của Apache để làm việc này?

Lưu ý: Nhiều bạn đọc hỏi chúng tôi Tại Sao Không Tìm Thấy file .htaccess Trên WordPress. Hi vọng bài viết sẽ giúp ích cho bạn khi gặp tình huống tương tự

Giải pháp

Các tập tin htaccess nằm ở thư mục cài đặt gốc của WordPress. Sau khi tạo bản sao lưu của nó (nó là một tập tin quan trọng do vậy chúng ta nên luôn luôn có một bản sao an toàn), mở nó ra và dán đoạn mã sau:

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

Giải thích

Các tập tin Htaccess rất mạnh mẽ và là một trong những công cụ tốt nhất để bảo mật và ngăn chặn những truy cập không mong muốn vào các tập tin của bạn. Trong đoạn code này, chúng tôi chỉ đơn giản là tạo ra một quy tắc có thể ngăn chặn bất kỳ truy cập nòa vào tập tin wp-admin.php, do đó đảm bảo rằng không có evil bot ( chương trình độc) nào có thể truy cập vào nó.

4. Tạo blacklist những người dùng và chương trình không mong muốn

bảo mật

Vấn đề

Một người làm phiền bạn ngày hôm nay có thể sẽ làm phiền bạn một lần nữa vào ngày mai. Đã bao giờ bạn chú ý có bao nhiêu spam bot quay trở lại blog của bạn 10 lần một ngày để spam không? Giải pháp cho vấn đề này khá là đơn giản: cấm họ truy cập vào blog của bạn.

Giải pháp

Dán đoạn code sau vào tập tin .htaccess của bạn, nằm ở thư mục cài đặt gốc của WordPress(root). Như tôi đã nói, luôn luôn sao lưu các tập tin htaccess trước khi chỉnh sửa nó. Ngoài ra, đừng quên thay đổi 123.456.789 đến địa chỉ IP bạn muốn cấm.

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.456.789
</LIMIT>

Giải thích

Apache có thể dễ dàng sử dụng để cấm những người và chương trình không mong muốn tới trang web của bạn. Với đoạn code này, chúng tôi đang nói với Apache rằng tất cả mọi người được cho phép truy cập vào blog của chúng tôi ngoại trừ những người có địa chỉ IP 123.456.789.

Để có thể chặn nhiều người hơn, chỉ đơn giản là lặp lại dòng mã 4 này trên một dòng mới, bằng cách sử dụng địa chỉ IP khác, như hình dưới đây:

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.456.789
deny from 93.121.788
deny from 223.956.789
deny from 128.456.780
</LIMIT>

5. Bảo vệ Blog WordPress của bạn từ các script injection

Vấn đề

Bảo vệ các trang web động là đặc biệt quan trọng. Hầu hết các nhà phát triển luôn luôn bảo vệ các yêu cầu GET và POST của họ, nhưng đôi khi điều này là không đủ. Chúng ta cũng nên bảo vệ blog của chúng ta chống lại các script injection và bất kỳ nỗ lực nào nhằm thay đổi các biến PHP GLOBALS và _REQUEST.

Giải pháp

Code sau đây sẽ khóa các script injection và bất kỳ nỗ lực nào nhằm sửa đổi các biến PHP GLOBALS và _REQUEST. Dán nó vào tập tin htaccess của bạn. Hãy chắc chắn rằng bạn luôn luôn sao lưu các tập tin htaccess trước khi sửa đổi nó.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%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]

Giải thích

Sử dụng .htaccess, chúng tôi có thể kiểm tra các yêu cầu gửi đến. Những gì chúng tôi đã làm ở đây là kiểm tra xem liệu yêu cầu có chứa một <script> và liệu nó đã cố gắng thay đổi giá trị của các biến PHP GLOBALS hoặc _REQUEST không. Nếu bất kỳ một điều kiện nào ở trên được phát hiện (chứa script hoặc cố gắng thay đổi giá trị của các files), yêu cầu sẽ bị chặn và một lỗi 403 được gửi trở lại trình duyệt của khách hàng.

6. Chống content scraper

Vấn đề

Nếu blog của bạn có một chút tiếng tăm, mọi người sẽ không e ngại gì khi cố gắng sử dụng nội dung web của bạn trên các trang web riêng của họ để trục lợi mà không có sự đồng ý của bạn. Một trong những vấn đề lớn nhất là hot-linking đến hình ảnh của bạn, việc hot links dẫn đến hình ảnh của bạn bị sử dụng bừa bãi sẽ dẫn đến việc bòn rút băng thông của bạn.

Giải pháp

Để bảo mật trang web của bạn chống hot-linking và content scraper, đơn giản chỉ cần dán đoạn mã sau vào tập tin htaccess của bạn. Như mọi khi, đừng quên sao lưu khi sửa đổi tập tin htaccess.

RewriteEngine On
#Replace ?mysite.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don't hotlink" image url
RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

Một khi bạn đã lưu tập tin, chỉ trang web của bạn sẽ có thể liên kết đến những hình ảnh chỉ định, hoặc để chính xác hơn, không ai có thể liên kết đến hình ảnh của bạn, bởi vì nó sẽ là quá phức tạp và tốn thời gian. Các trang web khác sẽ tự động hiển thị các hình ảnh nohotlink.jpg. Lưu ý rằng bạn cũng có thể link đến một file không phải ảnh, như vậy trang web  cố gắng hot-link tới bạn sẽ hiển thị blank (trống) thay vì ảnh.

Giải thích

Đoạn code này, điều đầu tiên chúng tôi làm là kiểm tra referrer để xem nó có phải là URL của chúng tôi không . Nếu không, các tập tin có phần mở rộng JPG, GIF, BMP hoặc PNG, thì các hình ảnh nohotlink sẽ được hiển thị để thay thế.

7. Tạo một Plug-In để bảo mật Blog của bạn khỏi những yêu cầu URL độc hại

sm7

Vấn đề

Hacker và những kẻ xấu thường sử dụng các truy vấn độc hại để tìm và tấn công điểm yếu của một blog. WordPress có một bảo vệ mặc định tốt, nhưng việc nâng cấp lên vẫn có thể.

Giải pháp

Dán đoạn mã sau trong một file text và lưu nó là blockbadqueries.php. Sau đó, tải nó lên thư mục wp-content/plugins của bạn và kích hoạt nó như bạn sẽ làm với bất kỳ plugin nào khác. Bây giờ, blog của bạn được bảo vệ chống lại các truy vấn độc hại.

<?php
/*
Plugin Name: Block Bad Queries
Plugin URI: http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/
Description: Protect WordPress Against Malicious URL Requests
Author URI: http://perishablepress.com/
Author: Perishable Press
Version: 1.0
*/

global $user_ID;

if($user_ID) {
 if(!current_user_can('level_10')) {
 if (strlen($_SERVER['REQUEST_URI']) > 255 ||
 strpos($_SERVER['REQUEST_URI'], "eval(") ||
 strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
 strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
 strpos($_SERVER['REQUEST_URI'], "base64")) {
 @header("HTTP/1.1 414 Request-URI Too Long");
 @header("Status: 414 Request-URI Too Long");
 @header("Connection: Close");
 @exit;
 }
 }
}
?>

Giải thích

Những gì mã này làm là khá đơn giản. Nó sẽ kiểm tra các chuỗi yêu cầu quá dài  ( nhiều hơn 255 ký tự) và sự hiện diện của một trong hai hàm PHP eval hoặc base64 trong URI. Nếu một trong những điều kiện đó bị phát hiện, thì plug-in trên sẽ gửi một lỗi 414 đến trình duyệt của khách hàng.

8. Bảo mật bằng cách ẩn phiên bản của WordPress của bạn.

Vấn đề

Như bạn đã biết, WordPress sẽ tự động hiển thị phiên bản bạn đang sử dụng trong phần đầu của các tập tin blog của bạn. Điều này là khá vô hại nếu blog của bạn luôn luôn cập nhật phiên bản mới nhất (đó là chắc chắn là những gì bạn nên làm dù gì đi nữa). Nhưng nếu vì một số lý do nào đó mà blog của bạn không Cập Nhật, WordPress vẫn hiển thị và các hacker sẽ dễ dàng có được thông tin quan trọng này.

Giải pháp

Dán dòng mã sau vào tập tin functions.php của theme của bạn. Lưu và tải lại blog của bạn, kiểm tra phiên bản WordPress không còn trong phần tiêu đề nữa.

remove_action('wp_head', 'wp_generator');

Giải thích

Để thực hiện các hành động nhất định, WordPress sử dụng một cơ chế được gọi là “hooks”, cho phép bạn móc một hàm này với một hàm khác. Hàm wp_generator, cái sẽ hiển thị phiên bản WordPress, được nối. Chúng tôi có thể hủy bỏ hook này và ngăn không cho nó thực hiện bằng cách sử dụng hàm remove_action().

9. Thay đổi tên đăng nhập “Admin” mặc định

sm9

Vấn đề

Tấn công trực tiếp ( Brute Force) là một trong những cách dễ dàng nhất để tìm ra  mật khẩu. Phương pháp này khá là đơn giản: Thử các mật khẩu khác nhau càng nhiều càng tốt cho đến khi tìm thấy mật khẩu đúng. Người sử dụng của phương pháp tấn công trực tiếp ( brute force) sử dụng các từ điển cung cấp cho chúng rất nhiều các mẫu mật khẩu khác nhau.

Biết tên người dùng của bạn  làm cho vấn đề dễ dàng rất nhiều vì khi đó họ chỉ phải dò mật khẩu. Đây là lý do tại sao bạn nên luôn luôn thay đổi tên người dùng mặc định “admin” thành một cái gì đó khó có thể đoán.

Lưu ý rằng WordPress 3.0 cho phép bạn chọn tên người dùng mong muốn theo mặc định. Vì vậy, mẹo này vẫn hữu ích nếu bạn vẫn còn sử dụng tài khoản “admin”cũ từ phiên bản cũ của WordPress.

Giải pháp

Nếu bạn vẫn chưa thay đổi tên đăng nhập “admin”, chỉ cần chạy truy vấn SQL sau đây để cơ sở dữ liệu của bạn thay đổi nó. Đừng quên xác định tên người dùng mong muốn.

UPDATE wp_users SET user_login = 'Your New Username' WHERE user_login = 'Admin';

Giải thích

Tên người dùng được lưu trữ trong cơ sở dữ liệu. Để thay đổi tên người dùng, một truy vấn UPDATE đơn giản là đủ. Lưu ý rằng truy vấn này sẽ không chuyển giao các bài viết được viết bởi”admin” đến tên người dùng mới của bạn;

10. Bảo mật bằng cách ngăn ngừa quét thư mục

Vấn đề

Theo mặc định, hầu hết các máy chủ cho phép liệt kê thư mục. Vì vậy, nếu bạn gõ www.yourblog.com/wp-includes vào thanh địa chỉ trình duyệt, bạn sẽ thấy tất cả các tập tin trong thư mục đó. Điều này chắc chắn là một nguy cơ bảo mật, vì một hacker có thể nhìn thấy thời gian qua các tập tin đã được sửa đổi và truy cập chúng.

Giải pháp ( đã được cập nhật)

Chỉ cần thêm dòng sau đây vào tùy chỉnh Apache hoặc tập tin htaccess của bạn:

  • Options -Indexes

Giải thích

Xin lưu ý rằng chỉ như vậy là không  đủ để cập nhật tập tin robots.txt của blog với Disallow: /wp*. Điều này sẽ bảo mật và ngăn các thư mục wp khỏi bị index, nhưng sẽ không ngăn người dùng nhìn thấy nó. Các bạn có thể tham khảo thêm hướng dẫn của chúng tôi về những cách tiện dụng để bảo vệ trang wordpress của bạn.

Về tác giả

Duy Anh

Chào các bạn,

Mình là coder, đang sống và làm việc ở Mỹ. Mình thích viết lách nên muốn dành khoảng thời gian trống để chia sẻ các thủ thuật giúp các bạn xây dựng được trang web riêng của mình. Bạn nào cần xây dựng blog, web thì cứ ới, rảnh là mình giúp, tất cả FREE nhé!

2 Bình luận

Ý kiến cá nhân của bạn

bộ công cụ Wordpress hữu ích dành cho mọi website

Bộ công cụ hữu ích dành cho mọi website Wordpress

Bao gồm theme & plugin tốt nhất và được sử dụng nhiều nhất!

Xin vui lòng kiểm tra email để xác thực tài khoản!