Các thủ thuật bảo mật, Hạn chế tấn công WordPress, Local Atack

WordPress là 1 CMS nhanh gọn và tùy biến cao và cộng đồng sử dụng đông đảo phát triển. CMS nào cũng có điểm yếu của nó, các hacker sẽ lợi dụng để tấn công website… nguyên nhân dẫn đến website bị hack phần lớn là do người dùng WordPress chưa bảo mật website một cách triệt để. Trong bài viết này WebtopViet sẽ hướng dẫn các bạn một số thủ thuật để bảo mật cho website sử dụng CMS WordPress an toàn, Bảo mật WordPress.

1. Giấu file wp-config.php

File wp-config.php rất quan trọng trong trang web wordpress, việc cất kỹ file nhạy cảm này cũng sẽ giúp bạn hạn chế phần nào tấn công từ các hacker.

Trong host linux, thông thường các tập tin của website sẽ đều nằm trong thư mục public_html và thường path sẽ là /home/username/public_html/wp-config.php.

Do đó, cách giấu file config tốt nhất là bạn nên đưa file wp-config.php ra khỏi thư mục public_html, bạn có thể đăng nhập vào host thông qua FTP và tạo thêm một thư mục tên bất kỳ nằm ngang hàng với public_html.

publichtml
Tạo thư mục ngang hàng với public_html

Sau đó tải file wp-config.php trong thư mục public_html và upload nó vào thư mục mới tạo. Cuối cùng là sửa file wp-config.php trong thư mục public_html thành như sau, xem liên kết ở dưới:

[code lang=”php”]
<php
if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
require_once(ABSPATH . ‘../baomat/wp-config.php’);
[/code]

Bạn thay chữ baomat thành tên thư mục của bạn mà bạn đã tạo nó ngang hàng với public_html.

Lưu ý: Cách này chỉ áp dụng cho các website có file cài đặt ngay trong thư mục public_html chứ không hỗ trợ một lớp thư mục khác. Bạn có thể áp dụng với thư mục www nếu có.

 

2.Liên tục thay đổi tiền tố “prefix_” trong Database

Database prefix (tiền tố CSDL) mặc định của WordPress sẽ là wp_, điều này vô tình làm cho các hacker biết rõ tên của từng table của website bạn nếu bạn không đổi tiền tố này đi.

Tên của các bảng trong CSDL có thể giống nhau. Nhưng mà tiền tố (prefix) thì tốt nhất nên là của riêng bạn. Do đó, khi cài đặt WordPress lần đầu thì bạn nên đặt cá nhân một chút.  Có thể dễ dàng thay đổi với các cách sau đây.

Dùng Plugin

Đây là một cách hoàn toàn đơn giản, nếu bạn lười hoặc bạn nhát khám phá. Bạn có thể thử dùng plugin sau “Change DB Prefix”. Sau khi cài đặt, các bạn chỉ cần gõ tên prefix hiện tại và prefix muốn chuyển, sau đó nhấp Save Change là hoàn tất. Rất đơn giản. Hoặc sử dụng iThemes Security để bảo mật toàn diện.

Nhưng nếu bạn là người thích vọc, bạn có thể tìm hiểu cách sau đây. Sẽ rất thú vị và hấp dẫn đó.

Dùng Php My Admin

Lưu ý: Nên backup lại DB và file wp-config.php trước khi thực hiện.

Nếu bạn chuyên nghiệp một xíu hoặc biết một chút về database thì có thể login vào phpmyadmin và thay đổi trong đó với câu lệnh (query) như sau:

[code lang=”sql”]
RENAME TABLE
wp_commentmeta TO newprefix_commentmeta,
wp_comments TO newprefix_comments,
wp_links TO newprefix_links,
wp_options TO newprefix_options,
wp_postmeta TO newprefix_postmeta,
wp_posts TO newprefix_posts,
wp_terms TO newprefix_terms,
wp_term_relationships TO newprefix_term_relationships,
wp_term_taxonomy TO newprefix_term_taxonomy,
wp_usermeta TO newprefix_usermeta,
wp_users TO newprefix_users;
[/dt_code]
[/code]

Trong đó wp_ là tiền tố hiện tại, newprefix_ là tiền tố cần chuyển sang (tiền tố này bạn có thể thay đổi tùy theo ý thích của mình).

Tuy nhiên, sau khi đã thay đổi trong csdl thì bạn phải vào trong file wp-config.php và thay đổi một chút như sau:

[code lang=”php”]
$table_prefix = ‘wp_’;
[/code]

Thành

[code lang=”php”]
$table_prefix = ‘ newprefix_’;
[/code]

Như vậy thì đố các hacker có thể tìm ra được đó. Hoặc bạn có thể đổi prefix theo ý của mình hoặc bạn có thể random.org và thay đổi một cách ngẫu nhiên. Thường khoảng 1-2 tháng thì các bạn nên thay đổi một lần.

Bước cuối cùng, chúng ta cần phải tiến hành thay đổi thêm một số cái linh tinh nữa mới chạy hoàn chỉnh được. Có 2 bảng cần phải thay đổi.

– Bảng newprefix_option (bảng mới sau khi đổi) tìm tới dòng thứ 89 có tên là wp_user_rolesvà chuyển thành newprefix_user_roles.
– Bảng newprefix_usermeta, các bạn chuyển cột meta_key với các tiền tố wp_ thànhnewprefix_

Sau khi thay đổi xong thì coi như mọi thứ đã hoàn thành rồi đó.

 

3. Ẩn thông báo lỗi khi login

Thông báo lỗi khi login đôi lúc vô tình lại là thông tin để các hacker dò ra thông tin của bạn. Do đó, tốt nhất thì chúng ta nên ẩn nó đi. Và cách ẩn thông báo lỗi thì cũng rất đơn giản, bạn chỉ cần vào tập tin functions.php trong thư mục theme của bạn và thêm filter này vào

[code lang=”php”]
add_filter(‘login_errors’,create_function(‘$a’, "return null;"));
[/code]

4. Bảo mật hai lớp cho wp-admin bằng .htaccess

Thông thường, khi bạ gõ website.com/wp-admin thì nó sẽ hiển thị ra luôn màng hình đăng nhập. Tuy nhiên, muốn tối ưu hơn thì các bạn có thể tạo thêm một lớp bảo mật nữa từ server với file .htaccess. Khi người dùng vào wp-admin thì nó sẽ hiển thị ra một promt thông báo yêu cầu điền tài khoản và mật khẩu .

Nếu bạn nào đang sử dụng hosting và quản lý bằng Cpanel thì có thể thao tác đơn giản với tính năng có sẵn.

Các bạn đăng nhập vào Cpanel, trong Security Tab, chọn mục Password Protect Directories. Sau đó, chọn thư mục wp-admin và điển các thông tin vào là các bạn đã thành công.

Trong trường hợp các bạn sử dụng VPS hoặc sử dụng phần mền quản lý host khác thì có thể không có tính năng trên. Do đó, các bạn sẽ thực hiện thủ công với các bước như sau:

Bước 1: tạo tập tin htpasswds

Bạn cần phải tạo một tập tin có tên là .htpasswds đây là tập tin chứa đựng thông tin user và password của bạn. Tập tin này bạn có thể nằm ở vị trí nào đó mà mình thích. Trong ví dụ này tôi lưu ở home/user/public_html/wp-admin/passwd/

Bây giờ chúng ta sẽ tiến hành khai báo thông tin cho tập tin .htpasswds. Thông thường, tập tin này có thể dùng command line hoặc php để tạo, tuy nhiên để trực quan hơn, các bạn có thể dùng website này để tạo: http://www.htaccesstools.com/htpasswd-generator/

Sau khi tạo ra thì nó sẽ cung cấp cho mình một đoạn mã, các bạn copy đoạn mã đó vào file .htpasswds và lưu lại.

Bước 2: tạo tập tin .htaccess

Các bạn vào trong thư mục wp-admin, tạo ra một tập tin là .htaccess với nội dung như sau đây:

[code lang=”php”]
AuthType Basic
AuthName "My Protected Area"
AuthUserFile home/user/public_html/wp-admin/passwd/.htpasswd
Require valid-user
[/code]

Trong đoạn trên thì các bạn lưu ý là cần phải đổi đúng đường dẫn AuthUserFile và phải thay đổi đúng your-user-name là user mà bạn tạo. Sau khi tạo file này xong thì các bạn có thể vào wp-admin và xem thành quả.
Bước 3: Các lỗi hay gặp

Đây là một số lỗi có thể xảy ra khi dùng phương thức bảo mật này.
Lỗi 404 Error hoặc Too many redirects error: trong trường hợp này thì bạn cần phải vào trong file . htaccess gốc ở thư mục root của WordPress (không phải file vừa tạo trong wp-admin), và thêm vào một dòng như sau

[code lang=”php”]
ErrorDocument 401 default
[/code]

Lỗi không dùng được file ajax-admin.php: Nguyên nhân là khi chúng ta bảo mật thư mục wp-admin thì đồng thời nó cũng sẽ chặn các truy cập vào thư mục này thông qua các tập tin trong đó. Do đó, các plugin có sử dụng ajax-admin.php ngoài front-end sẽ không thể truy cập đc. Trong trường hợp đó, bạn có thể thêm đoạn code sau vào file .htaccess ở thư mục wp-admin

[code lang=”php”]
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>
[/code]

Không chạy được .htaccess: Nguyên nhân do có thể bạn chưa “Enable Apache Htaccess Files”. Cách thực hiện thì rất đơn giản. Bạn có thể vào trong ftp và tìm dòng lênh như sau /etc/apache2/apache2.conf (cái đường dẫn này còn tùy nhé)

[code lang=”php”]
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
[/code]

Bạn chữa AllowOverride None thành AllowOverride All.
Lưu lại và khởi động lại Apache.

[code lang=”php”]
sudo /etc/init.d/apache2 reload
[/code]

Các bạn có thể tham khảo thêm tài liệu này nhé:https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles

5. Không nên hiển thông tin thị thư mục

Thông thường, nếu bạn vào một thư mục trên website mà nó không có sự hiện diện của các tập tin như index.html, index.php,… thì tự động server sẽ trả về toàn bộ danh sách các tập tin, các thư mục con có trong nó.

Chính vì thế, muốn bảo vệ thông tin của bạn thì tốt nhất trong mỗi thư mục nên có 1 file index.html rỗng hoặc file index.html đó sẽ tự redirect về trang chủ.

Nếu lười, bạn có thể thêm một lệnh sau ở trong tập tin .htaccess

6. Lựa chọn một mật khẩu siêu việt

Thật là lố bịch khi bạn đặt một cái mật khẩu ngô nghê đến mức ai cũng biết. Hãy chọn một mật khẩu của riêng mình. Đảm bảo rằng, trong mật khẩu của bạn phải có các yêu tố như sau:

– Có ít nhất 1 chữ cái in HOA
– Có ít nhất 1 số tự nhiên (1234567890)
– Có ít nhất một ký tự đặc biệt (~!@#$%^&*()_+=|\)

Một mật khẩu tốt phải có tối thiểu 12 ký tự hỗn hợp (bao gồm các ký tự nêu trên). Một điểm đáng chú ý nữa là bạn hạn chế sử dụng chức năng ghi nhớ mật khẩu của trình duyệt. Nếu người khác vô tình được ngồi vào máy của mình và vô tình login một cách tự đông vào back-end thì chuyện gì đến rồi cũng sẽ đến.

 

7. Không nên dùng user với tên admin hoặc root

Nếu bạn đang sử dụng tài khoản với cái user name là admin, root, administrator,… thì tốt nhất nên thay đổi nó đi. Vì đó là một trong những cái username phổ biến, hacker hoàn toàn có thể sử dụng nó để xâm nhập vào hệ thống của bạn. Nếu muốn đổi thì cũng đơn giản, bạn chỉ cần thực hiện một trong hai cách sau đây:

– Tạo một tại khoản mới với username mới và set nó ở quyền quản trị cao nhất. Sau đó login vào tài khoản mới và xóa cái username cũ đi.
– Nếu bạn rành về quản lý CSDL thì có thể login vào phpmyadmin và vào bản wp-users để thay đổi.

 

8. Cấm sửa theme và plugin trong bảng điều khiển

Có một vài hacker khá tinh vi đó là sau khi đã xâm nhập vào được website bạn thì họ sẽ chèn một vài đoạn mã nào đó nằm rải rác bên trong các theme/plugin mà bạn đang dùng.

Do đó, hãy cân nhắc dùng tính năng Editor trong bảng quản trị, tốt nhất là hãy tắt nó đi nếu bạn không dùng tới, cách tắt là chèn đoạn này vào bất kỳ dòng nào trong file wp-config.php

[code lang=”php”]
define(‘DISALLOW_FILE_EDIT’,true);
[/code]

 

9. Cấm cài thêm theme/plugin

Cũng không có ngoại lệ trong trường hợp hacker có thể tự ý cài thêm một plugin hay theme nào đó mà bên trong đó toàn chứa mã độc nếu họ có quyền truy cập vào bảng điều khiển. Do đó, nếu bạn không có nhu cầu cài theme theme/plugin thì hãy đặt đoạn sau vào file wp-config.php

[code lang=”php”]
define(‘DISALLOW_FILE_MODS’,true);
[/code]

10. CHMOD file wp-config.php

Mặc định các file trong WordPress sẽ được CHMOD thành 644 và folder là 755. Tuy nhiên đối với file wp-config.php thì bạn cũng nên CHMOD tối ưu hơn, bạn có thể thay thành 440, 444 hoặc 400. Cứ thử 400 trước, không được thì thử 444.

 

11. Chặn thực thi file wp-config.php

Đây cũng là một tip hay nếu bạn không thích bất cứ ai sờ mó đến file wp-config.php trên host.

Đối với máy chủ NGINX thì chèn đoạn sau vào file config

[code lang=”php”]
location ~* wp-config.php {
deny all;
}
[/code]

Còn đối với máy chủ Apache thì chèn đoạn sau vào file .htaccess

[code lang=”php”]
<Files wp-config.php>;
order allow,deny
deny from all
</Files>
[/code]

12. Khóa đường dẫn wp-admin

[code lang=”php”]
<FilesMatch ".*">
Order Deny,Allow
Deny from all
Allow from 123.456.789
</FilesMatch>
[/code]

Thay số 123.456.789 thành IP của máy bạn
Đối với NGINX thì chèn đoạn này vào file config.

[code lang=”php”]
location ~ ^/(wp-admin|wp-login\.php) {
allow 123.456.789;
deny all;
}
[/code]

Dĩ nhiên thư mục wp-admin và file wp-login.php luôn là điểm tấn công nếu một ai đó muốn truy cập vào website của bạn. Do đó, tốt hơn hết là chặn hết tất cả lượt truy cập vào hai khu vực này, trừ bạn ra.

Để làm được việc này bạn có thể sử dụng tính năng Login Protect trong Incapsula hoặc tạo một file .htaccess trong thư mục wp-admin và chèn đoạn sau vào.

 

13. Thường xuyên update WordPress và Plugin

WordPress là một trong những mã nguồn mở có tốc độ update nhanh cũng sắp chóng mặt. Nguyên nhân là nó được ưa chuông nhất hiện tại, nhưng càng nhiều người dùng thì người ta sẽ thường xuyên phát hiện lỗi và buộc nhà phát triển phải vá lỗi để đảm bảo khả năng về bảo mật cũng như cải thiện chất lượng khi người dùng và lập trình viên sử dụng.

 Do đó, bạn hãy thường xuyên kiểm tra và nâng cấp WordPress core cũng như các Plugin đang có trên website của mình. Ngoài ra bạn cũng nên xóa hoàn toàn đi các plugin nào không sử dụng mà vẫn để ở chế độ Deactive.

14. Thường xuyên backup dữ liệu

Cách bảo vệ an toàn nhất là nên backup dữ liệu thường xuyên (cả database, source code, resource,…). Nếu số bạn may mắn thì hosting hoặc VPS bạn đang xài không có vấn đề gì xảy ra cả. Nhưng nếu số bạn đen thì mọi thứ đen tối đều có thể xảy ra (cháy nổ server, lũ lụt, sét đánh, bị đánh bom, máy bay rới trúng….) chính vì thế chúng ta cần phải backup thường xuyên “Cẩn tắc vô ái náy”.

Thông thường, nếu như website của bạn có lượt comment thường xuyên hoặc bài viết ngày nào cũng có thì có thể backup 1 ngày/lần. Nếu không thường xuyên thì 3 ngày/lần. Bạn có thể backup manual (tức tự backup) hoặc dùng 1 trong số các plugin sau đây để backup:

WP-DB-Backup: Backup lại core database và các bảng khác nếu có.
WP Time Machine: Sẽ backup dữ liệu của bạn, sau đó sẽ sync sang Dropbox hoặc Amazon AWS S3.
WordPress Backup: Sẽ backup lại thư mục upload, themes và plugin của bạn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.