12 típ bảo mật cho website wordpress

12 Tips bảo mật cho website wordpress

Cập nhật cách đây 3 năm

Với WordPress, rất dễ dàng để tạo một blog hoặc một trang web . Tuy nhiên, có những trường hợp ( đang tăng lên hàng ngày ) khi mọi người gặp khó khăn vì họ không chú ý đến các tính năng bảo mật của trang web hoặc blog WordPress.


1. Tên đăng nhập và mật khẩu

1.1 Tên tài khoản đăng nhập

Nếu bạn là người quản trị website hay người sáng tạo nội dung, đừng bao giờ đặt tên tài khoản dễ đoán trước như: admin, admin01, admin02. Việc đặt tên tài khoản thông dụng này ngoài việc giúp bạn “dễ nhớ” hơn, nó còn giúp cho các tin tặc tấn công website của bạn dễ dàng hơn. Phương pháp tấn công bằng brute-force attack thường dựa vào điểm yếu này.

Vậy nếu bạn đang sử dụng tên tài khoản là admin, hãy thay đổi ngay! Ở đây, ngay cả khi bạn thay đổi tên tài khoản của mình là toilaadmin, nó có thể tạo ra rất nhiều sự khác biệt và cứu bạn khỏi nhiều rắc rối (Tuy nhiên, đừng đặt tên này, đây là một ví dụ cho thấy cách thay đổi tên tài khoản có thể tạo ra một sự khác biệt đáng kể).


1.2 Đặt mật khẩu mạnh

Về vấn đề đặt mật khẩu, lời khuyên của chúng tôi là đừng nên đặt mật khẩu quá ngắn (quá ngắn ở đây là dưới 8 ký tự). Tốt nhất nên đặt mật khẩu từ 12 ký tự trở lên.

Cũng đừng nên sử dụng mật khẩu chỉ bao gồm chữ và số. Hãy thêm những ký tự đặc biệt vào mật khẩu. Tóm lại, một mật khẩu được cho là mạnh khi nó có độ dài trên 20 ký tự, bao gồm: chữ IN HOA, chữ thường, số và ký tự đặc biệt. Ví dụ như An4ye^uEmnhi3u. Dưới đây là kết quả kiểm tra độ mạnh của mật khẩu 14 ký tự này. (Bạn có thể tự kiểm tra mật khẩu của mình tại đây: https://howsecureismypassword.net/ )

Mật khẩu mạnh
Phải mất 204 triệu năm để bẻ khóa mật khẩu An4ye^uEmnhi3u
Mật khẩu yếu
Đây là kết quả kiểm tra mật khẩu 8 ký tự: matkhau1, chỉ mất 1 phút để máy tính tìm ra mật khẩu này

2. Thay đổi đường dẫn đăng nhập

Thông thường, để đăng nhập vào bảng quản trị website sử dụng nền tảng wordpress, bạn có thể sử dụng đường dẫn mặc định là: website/admin, website/wp-login.php hay website/wp-admin.php.

Tại sao bạn phải quan tâm đến đường dẫn đăng nhập – hay trang đăng nhập website của mình? Bởi vì các tin tặc cũng quan tâm đến đường dẫn này. Và phương pháp tấn công phổ biến vào trang đăng nhập này là brute-force attack. Trong cách tấn công này, các tin tặc về cơ bản cố gắng đoán tên đăng nhập và mật khẩu của bạn. Vậy nếu thế nào nếu bạn thay đổi đường dẫn đăng nhập mặc định này? Các tin tặc sẽ không thể thực hiện brute-force attack qua trang đăng nhập được nữa.

Cách nhanh nhất để thay đổi đường dẫn đăng nhập là sử dụng plugin. Và với mục đích này, chúng tôi nghĩ rằng WPS Hide Login là plugin đạt được tiêu chuẩn vàng – với chức năng chính là phép bạn chỉ định một URL đăng nhập tùy chỉnh mới và chặn tất cả lưu lượng truy cập vào các trang wp-admin và wp-login mặc định.

Nói là nhanh chóng bởi vì bạn chỉ mất vài giây để cài đặt plugin này. Tất cả những gì bạn cần làm là vào phần cài đặt -> WPS Hide Login và plugin này sẽ làm phần còn lại cho bạn.

WPS Hide Login plugin wordpress
Cài đặt plugin WPS Hide Login

Tuy phương pháp này không cao siêu gì, nhưng nó cũng khiến các tin tặc gặp khó khăn hơn trong việc tìm ra trang đăng nhập thật sự, việc thay đổi đường dẫn đăng nhập cũng ngăn chặn các bot được sử dụng cho mục đích độc hại truy cập vào tệp wp-login của bạn.


3. Giới hạn số lần đăng nhập

WordPress mặc định không giới hạn số lần thử đăng nhập vào hệ thống, nghĩa là người dùng có thể thực hiện đăng nhập liên tục vào website với vô hạn số lần thử. Điều này là không cần thiết với nhà quản trị, đồng thời là điểm yếu để tin tặc có thể khai thác.

Để hạn chế yếu điểm này, bạn có thể giới hạn số lần thử đăng nhập được thực hiện từ một địa chỉ IP cụ thể trong một khoảng thời gian đã định. Bất kể người dùng nào vượt quá giới hạn số lần thử đều có thể bị khóa tạm thời hoặc vĩnh viễn.

Và trong giới hạn bài viết này, chúng tôi sẽ hướng dẫn bạn 2 cách cài đặt tính năng này, một bằng plugin và một bằng code.


3.1 Sử dụng plugin Limit Login Attempts Reload

Đối với hầu hết người dùng, plugin Limit Login Attempts Reloaded là tùy chọn tốt nhất để hạn chế các lần thử đăng nhập. Vẫn còn nhiều plugin tương tự nhưng chúng tôi khuyên bạn nên sử dụng plugin này vì nó miễn phí 100%, hơn 1 triệu lượt tải với đánh giá 4,8 sao và việc cài đặt cũng khá dễ dàng.

Sau khi tải về và kích hoạt plugin, bạn đã hoàn tất việc thiết lập giới hạn đăng nhập cho website của mình, với tùy chỉnh mặc định là: 4 lần thử, khóa 20 phút nếu vượt quá số lần thử và khóa 24 giờ nếu bị khóa 4 lần. Bạn có thể thay đổi tùy chỉnh này bằng cách vào cài đặt -> Limit Login Attempts.

Thiết lập Limit Login Attempts Reloaded
Thiết lập Limit Login Attempts Reloaded

Một lần khóa tạm thời thường đủ để ngăn chặn một cuộc tấn công, vì tin tặc hoặc bot sẽ đơn giản chuyển sang những mục tiêu có khả năng tiếp theo. Tuy nhiên việc thêm một plugin (mặc dù plugin khá nhẹ) có thể khiến bạn cảm thấy dư thừa, đặc biệt với những bạn muốn giảm số lượng plugin vì lý do bảo mật hay hiệu suất. Do đó, chúng tôi sẽ hướng dẫn bạn tự cài đặt chức năng này là không cần plugin.


3.2 Sử dụng code

Điều bạn cần làm là thêm đoạn code sau đây vào file functions.php của theme. Nếu bạn nào chưa biết file function ở đâu thì vào Giao diện -> Chỉnh sửa giao diện sẽ thấy. Nếu bạn không thấy phần chỉnh sửa giao diện này thì có thể chức năng này đã bị tắt, bạn phải vào file wp-config.php bằng Cpanel hoặc FTP, kiếm dòng này:

define( 'DISALLOW_FILE_EDIT', true );

Xóa nó đi.

OK, trở lại file functions. Hãy thêm đoạn code sau đây:

/**
 * Giới hạn đăng nhập với 3 lần thử
 * Khóa trong vòng 5 phút
 */

function check_attempted_login( $user, $username, $password ) {
    if ( get_transient( 'attempted_login' ) ) {
        $datas = get_transient( 'attempted_login' );

        if ( $datas['tried'] >= 3 ) {
            $until = get_option( '_transient_timeout_' . 'attempted_login' );
            $time = time_to_go( $until );

            return new WP_Error( 'too_many_tried',
sprintf( __( '<strong>ERROR</strong>: 
You have reached authentication limit, 
you will be able to try again in %1$s.' ) , $time ) );
        }
    }
    return $user;
}
// Tùy chỉnh số lần thử tại đây - hiện tại là 3 lần
add_filter( 'authenticate', 'check_attempted_login', 30, 3 ); 
function login_failed( $username ) {
    if ( get_transient( 'attempted_login' ) ) {
        $datas = get_transient( 'attempted_login' );
        $datas['tried']++;
// Tùy chỉnh thời gian khóa ở đây - hiện tại là 300 giây
        if ( $datas['tried'] <= 3 )
            set_transient( 'attempted_login', $datas , 300 );
    } else {
        $datas = array(
            'tried'     => 1
        );
        set_transient( 'attempted_login', $datas , 300 ); // đây nữa
    }
}
add_action( 'wp_login_failed', 'login_failed', 10, 1 ); 

function time_to_go($timestamp)
{

    // converting the mysql timestamp to php time
    $periods = array(
        "second",
        "minute",
        "hour",
        "day",
        "week",
        "month",
        "year"
    );
    $lengths = array(
        "60",
        "60",
        "24",
        "7",
        "4.35",
        "12"
    );
    $current_timestamp = time();
    $difference = abs($current_timestamp - $timestamp);
    for ($i = 0; $difference >= $lengths[$i]
        && $i < count($lengths) - 1; $i ++) {
        $difference /= $lengths[$i];
    }
    $difference = round($difference);
    if (isset($difference)) {
        if ($difference != 1)
            $periods[$i] .= "s";
            $output = "$difference $periods[$i]";
            return $output;
    }
}

Lưu lại và kiểm tra kết quả.

Khóa đăng nhập wordpress
Khóa đăng nhập wordpress

Brute-force attacks là kiểu tấn công phổ biến cho tin tặc và các trang web WordPress thường là mục tiêu ưa thích (nhờ vào sự phổ biến của nền tảng). May mắn thay, ngăn chặn các cuộc tấn công này là tương đối đơn giản. Tất cả những gì bạn cần làm là ngăn chặn tin tặc và bot có thể thực hiện nhiều lần đăng nhập liên tiếp.

Bằng plugin hay code ở trên, chúng tôi đã giúp bạn cơ bản các bước bảo vệ website của mình. Và bây giờ, chúng ta cùng bước tiếp đến những chương tiếp theo trong 12 típ bảo mật này.



4. Sử dụng SSL cho website

Khi bạn đăng nhập vào trang web WordPress của mình thông qua mạng công cộng. Đây là một trong những trường hợp mà bạn có thể bị kẻ tấn công. Các tin tặc có thể lắng nghe lưu lượng và có thể truy cập yêu cầu HTTP của bạn. Sau khi truy cập yêu cầu của bạn trên WordPress, họ có thể thấy thông tin đăng nhập WordPress của bạn ở dạng văn bản thuần túy.

Điều này có thể được ngăn chặn bằng cách sử dụng giao thức SSL. Giao thức SSL cho phép trang web WordPress của bạn có thể truy cập qua HTTPS. Thông thường, các dịch vụ lưu trữ của bạn cung cấp điều đó trong đăng ký của bạn. Nếu không, bạn cần mua chứng chỉ SSL và đặt nó trên máy chủ trang web của mình. Bạn có thể muốn xem một số tùy chọn từ một số cửa hàng chứng chỉ SSL như Cửa hàng SSL giá rẻ. Hoặc bạn có thể làm theo hướng dẫn này để cài đặt SSL trên máy chủ của mình nếu bạn sở hữu nó.

Nếu trang web của bạn đã có chứng chỉ SSL và chạy trên HTTPS, thì hãy mở tệp wp-config.php của bạn và chỉnh sửa nó bằng mã sau:

// Use SSL (HTTPS) for the login page.
 define('FORCE_SSL_LOGIN', true);
// Use SSL (HTTPS) for the whole admin area.
 define('FORCE_SSL_ADMIN', true);

Đoạn mã trên đảm bảo rằng trang đăng nhập chỉ mở trên HTTPS.


5. Mật khẩu bảo vệ thư mục Wp-admin

Không có gì sai khi có hai mật khẩu. Nó chỉ thêm một mức độ bảo mật khác cho Khu vực quản trị viên WordPress của bạn. Điều này có thể được thực hiện bằng cách sử dụng một plugin có tên là AskApache Password Protect.

Plugin này giúp mã hóa mật khẩu của bạn và tạo tệp .htpasswd, cũng như đặt quyền đối với tệp được tăng cường bảo mật chính xác trên cả hai. Bạn cũng có thể sử dụng Bảo vệ mật khẩu cPanel trên Thư mục nếu bạn đang sử dụng Máy chủ lưu trữ web cPanel để bảo vệ bằng mật khẩu thư mục wp-admin.

Cập nhật: plugin này hiện đã bị gỡ bỏ do yếu tố bảo mật, phương pháp bảo vệ thư mục wp-admin bằng mật khẩu cũng được khuyến nghị là không nên sử dụng.


6. Sử dụng google recaptcha cho trang đăng nhập


7. Xóa thông báo lỗi trên trang đăng nhập

Khi bạn nhập sai mật khẩu hoặc tên người dùng không hợp lệ, bạn sẽ nhận được thông báo lỗi trong trang đăng nhập. Vì vậy, nếu một hacker làm đúng một điều, thông báo lỗi sẽ giúp họ xác định điều đó. Do đó, bạn nên loại bỏ hoàn toàn thông báo lỗi đó. Mở của bạn  functions.php nằm trong thư mục chủ đề của bạn và dán mã sau:

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

Một plugin có tên Secure WordPress cũng thực hiện được điều này và nó cũng có các tính năng khác.

Thông báo lỗi trên trang đăng nhập wordpress

8. Chỉ cho phép các IP cụ thể để đăng nhập

Trước khi nói thêm về vấn đề này, tôi muốn nói rõ. Tôi đề xuất bước này chỉ cho những người có địa chỉ IP tĩnh .

Nếu bạn biết địa chỉ IP của mình, hãy đưa IP đó vào danh sách trắng bằng cách sử dụng file.htaccess từ thư mục wp-admin của bạn . Bạn có thể cho phép nhiều địa chỉ IP đăng nhập vào khu vực quản trị của mình, tuy nhiên, khuyến nghị của tôi chỉ dành cho chủ sở hữu IP tĩnh.

Để đưa IP vào danh sách trắng, bạn phải mở thư mục wp-admin trên hosting lưu trữ trang web của mình, sau đó chỉnh sửa tệp có tên .htaccess và chỉ cần thêm các mã sau:

order deny,allow
# Thay 99.99.99.99 với địa chỉ IP mong muốn
allow from 99.99.99.99
# Cho phép nhiều địa chỉ IP để truy cập khu vực wp-admin bằng cách bỏ dấu # và chỉnh sửa địa chỉ IP của dòng bên dưới
# allow from 98.98.98.98
deny from all

Như bạn có thể thấy, hãy thay đổi 99.99.99.99 thành địa chỉ IP mong muốn của bạn, tương tự như vậy đối với IP thứ hai.


9. Xác thực hai yếu tố

Nói một cách đơn giản, khi một trang web triển khai Xác thực hai yếu tố, người dùng phải nhập hình ảnh xác thực bổ sung hoặc mã PIN bổ sung mà họ có thể chọn để nhận trên email hoặc thiết bị điện thoại của họ. Điều này đặt ra yêu cầu rằng người dùng đang cố gắng truy cập trang web có quyền truy cập vào thông tin khác mà họ có thể cung cấp để xác nhận danh tính của họ.

Quy trình Xác thực hai yếu tố rất đơn giản. Bạn chỉ cần đăng nhập vào trang web như bình thường. Sau đó, bạn sẽ được yêu cầu nhập mã OTP (Mật khẩu dùng một lần) được gửi đến thiết bị đã đăng ký của bạn (thiết bị được thiết lập trong khi triển khai Xác thực hai yếu tố) và chứng minh rằng bạn là quản trị viên hợp pháp. Có thể sử dụng số điện thoại, email, ứng dụng đã đăng ký để nhận mã này.


10. Sử dụng mật khẩu được mã hóa để đăng nhập

Khi bạn chưa bật SSL, phương pháp này rất hữu ích. Có một plugin cho phép bạn thực hiện công việc này, và nó được gọi là Semisecure Login Reimagined.

Semisecure Login Reimagined tăng tính bảo mật của quá trình đăng nhập bằng cách sử dụng khóa công khai RSA để mã hóa mật khẩu ở phía máy khách khi người dùng đăng nhập. Sau đó, máy chủ sẽ giải mã mật khẩu được mã hóa bằng khóa riêng tư. JavaScript được yêu cầu để kích hoạt mã hóa.

Cập nhật: Plugin đã ngừng cung cấp bản cập nhật, khuyến nghị không nên sử dụng.


11. Mật khẩu một lần

Plugin One Time Password cho phép bạn đăng nhập vào trang web WordPress của mình bằng mật khẩu chỉ hợp lệ cho một phiên. Mật khẩu dùng một lần ngăn chặn việc đánh cắp mật khẩu WordPress chính của bạn trong các môi trường kém tin cậy hơn, chẳng hạn như quán cà phê internet, chẳng hạn bởi keylogger.

Cập nhật: Plugin đã ngừng cung cấp


12. Cập nhật WordPress lên phiên bản mới nhất

Cuối cùng nhưng chắc chắn không kém phần quan trọng là luôn cập nhật phiên bản mới nhất của WordPress vì sau mỗi phiên bản được phát hành, WordPress cũng phát hành các lỗi và cách khai thác của phiên bản trước, điều này khiến Khu vực quản trị của bạn gặp rủi ro nếu bạn không nâng cấp.


Tóm lược

WordPress rất dễ sử dụng và đó là lý do tại sao mọi người đều yêu thích nó. Tuy nhiên, chúng tôi quên rằng chức năng dễ dàng này có thể tàn bạo nếu ai đó tìm thấy quyền truy cập vào trang web của bạn. Vì vậy, khuyến nghị của tôi là làm theo tất cả các bước tôi đã đề cập ở trên trong bài viết.

Nếu bạn gặp bất kỳ rắc rối nào, hãy cho tôi biết qua nhận xét và tôi sẽ giúp bạn giải quyết vấn đề đó.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.