Hướng dẫn hạn chế local attack trong WordPress

Từ trước tới nay, việc upload shell lên host sau đó deface đến cơ sở dữ liệu nhằm chiếm đoạt toàn quyền quản trị website là một trong những hình thức tấn công phổ biến nhất trên tất cả mọi mã nguồn, WordPress cũng không ngoại lệ.

Nhiệm vụ của local attack là tấn công vào các mục tiêu bảo mật kém trên server để giành quyền kiểm soát các website khác trên cùng một hệ thống. Do đó, khi sử dụng share host, bạn sẽ dễ bị local attack hơn là dùng máy chủ riêng hoặc máy chủ ảo nhưng nếu bạn có nhiều website mà không thể kiểm soát nổi thì dù là máy chủ gì thì cũng bị local attack.

Thông thường, các bước thực hiện trong quy trình hack local (hay Local Attack) gồm:

  1. Dò tìm các user có trong server
  2. Dò tìm và đọc nội dung file config (trong WordPress là file wp-config.php)
  3. Get thông tin login vào database
  4. Tấn công tài khoản admin
  5. Up shell

Như vậy, một trong những cách phổ biến khiến hacker mất thời gian trong việc tấn công là phải bảo mật file config thật kỹ. Trong bài viết này, mình sẽ hướng dẫn cho các bạn 9 cách bảo mật file wp-config.php trong WordPress để hạn chế local attack.

1. Giấu file wp-config.php

Mặc dù có một vài shell như Coleil có thể dò ra file config của mã nguồn dù bạn có giấu ở đâu nhưng việc bạn cất kỹ file config sẽ giúp hạn chế phần nào các hacker.

Trong host linux, thông thường các tập tin của website đều nằm trong folder public_html và đường dẫn thường là /home/username/public_html/wp-config.php. Do đó, cách giấu file config tốt nhất là bạn đưa file wp-config.php ra khỏi folder public_html. Bạn có thể đăng nhập vào host thông qua FTP và tạo thêm một folder có tên bất kỳ, nằm ngang hàng với folder public_html.

tao-folder-ngang-hang-publichtml

Tạo folder ngang hàng với folder public_html

Sau đó, bạn tải file wp-config.php trong folder public_html và upload nó vào folder mới tạo. Cuối cùng, sửa file wp-config.php trong folder public_html thành như sau:

<php
if ( !defined('ABSPATH') )
     define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . '../baomat/wp-config.php');

Bạn thay chữ baomat bằng tên của folder 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 folder public_html chứ không hỗ trợ một lớp folder khác. Bạn có thể áp dụng với folder www nếu có.

2. Thay đổi database prefix

Database prefix (tiền tố cơ sở dữ liệu) 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.

Có nhiều cách đổi tiền tố nhưng tốt hơn hết là sử dụng plugin iThemes Security để đổi (nhớ backup lại toàn bộ dữ liệu trước khi làm).

3. Đổi security key

Bạn thử mở file wp-config.php, kéo xuống dưới tìm đoạn có nội dung như sau:

define('AUTH_KEY', 'jpwfcb9izge9gnz9unoakwpovdtn754sekxebbs5zvdzgl187lftu51o6qucv6py');
define('SECURE_AUTH_KEY', 'lqodqrrfksxmn8qsy6i3kwshu7su1czmnt6xj6wtpx54er9c5dmweqptupwzzfpa');
define('LOGGED_IN_KEY', 'pxo6nd6mnfw04m3u0m38layynhrh7atesuqgonitzf0xxnqxyydqpfurqr3znsoi');
define('NONCE_KEY', 'bhlrnqwfoxfzhpcyhyqlo8jh7vhdh3ov4swgsmygwvfzx8q65hmilhwt4iylgkd8');
define('AUTH_SALT', 'prfbyplbizqiqu1i42hm622ovsznaoayr9abxcbz15xks54nnkhguzqhwkndzy6v');
define('SECURE_AUTH_SALT', 'erjzw2objjfmachy7vt9mq2ktufh2331ypnuaeanjl1oegorjrngvzvcrftnywkd');
define('LOGGED_IN_SALT', 'kpvryyyj1zwznarx4l8lloigurf9mqetnlojnxtygjhuqtj9acq4lpr5jsm2kyjg');
define('NONCE_SALT', 'arimerdvr8fbw7pkigotdb7psvc2ysa7bqrnunrzwbcqlkqhs6xzokhzwnrmsg3a');

Đó là các chuỗi ký tự ngẫu nhiên lưu lại các session của từng user khi đăng nhập vào bảng điều khiển Admin. Hãy chắc chắn rằng bạn đã nhập ký tự ngẫu nhiên cho các key trên. Bạn có thể truy cập vào đây để tự động tạo ra các chuỗi security key ngẫu nhiên sau mỗi lần F5 rồi copy vào.

Cũng nên lưu ý rằng, nếu website bạn đã đang bị hack thì cũng nên đổi lại key này vài lần trong tuần để đảm bảo.

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

Có vài hacker khá tinh vi, sau khi đã xâm nhập vào được website bạn thì 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 việc dùng tính năng Editor trong bảng quản trị, tốt nhất hãy tắt tính năng này đi nếu bạn không dùng tới. Cách tắt là chèn code sau vào bất kỳ dòng nào trong file wp-config.php:

define('DISALLOW_FILE_EDIT',true);

5. 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 theme/plugin 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/plugin thì hãy chèn code sau vào file wp-config.php:

define('DISALLOW_FILE_MODS',true);

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

chmod-wpconfig

CHMOD lại file wp-config.php

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

Đây cũng là một cách hay nếu bạn không muốn bất cứ ai đụng đế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:

location ~* wp-config.php
{
     deny all;
}

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

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

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

Folder wp-admin và file wp-login.php luôn là tâm đ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 folder wp-admin và chèn đoạn sau vào:

<FilesMatch ".*">
     Order Deny,Allow
     Deny from all
     Allow from 123.456.789
</FilesMatch>

Thay số 123.456.789 bằng IP của máy bạn, muốn biết IP của mình thì vào đây.

Đối với NGINX thì chèn đoạn này vào file config:

location ~ ^/(wp-admin|wp-login\.php)
{
     allow 123.456.789;
     deny all;
}

9. Sử dụng các plugin quét mã độc

Cách này có thể may mắn cho bạn biết trên host của bạn đang chứa các file nào để bạn có thể xóa nó đi hoặc tải về ngâm cứu. Dưới đây là các plugin tốt nhất để bạn quét mã độc trên host hoàn toàn miễn phí mà bạn có thể dùng:

và nếu bạn có tiền, mình khuyến khích các bạn nên sử dụng Sucuri Premium ($90/năm) để tìm và tự quét sạch mọi mã độc.

Tóm lại, việc bảo vệ trang WordPress trước vấn nạn local attack không chỉ dừng lại với các cách nêu trên nhưng mình nghĩ nếu bạn làm hết tất cả 9 cách thì sẽ hạn chế được một phần nào khả năng bị tấn công qua hình thức này. Ngoài ra, có một lưu ý vô cùng quan trọng để hạn chế local hack đó là dùng các shared hosting có uy tín và được hỗ trợ nhanh chóng. Bạn cũng đừng quên tham khảo thêm các kinh nghiệm bảo mật WordPress để có thể bảo mật trang WordPress của bạn tốt nhất nhé.

Nguồn: thachpham.com


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

×