Cách sử dụng iThemes Security để bảo mật WordPress

Cách đây không lâu, plugin hỗ trợ bảo mật khá nổi tiếng Better WP Security đã tiến hành sáp nhập vào iThemes và đổi tên thành iThemes Security. Điều này cũng có nghĩa là nó đã được thay đổi lại một số tính năng cũng như cách sử dụng hoàn toàn khác. Do vậy nếu bạn chưa hiểu các tùy chọn cũng như các thiết lập trong iThemes Security thì cũng không cần lo lắng vì ở bài này mình sẽ hướng dẫn về iThemes Security đầy đủ nhất.

Cấu hình hosting thích hợp

Plugin này được thiết kế để làm việc trên máy chủ Apache, do đó nếu bạn dùng NGINX thì sẽ không sử dụng được các chức năng như đổi đường dẫn admin, block spam bots trừ khi bạn có thể tự cấu hình được. Vì vậy, mình khuyến khích mọi người nên sử dụng plugin này cho các gói shared host thông thường như A2Hosting, Interserver hay StableHost.

Cách sử dụng iThemes Security

Tải plugin

search-ithemes-security

Tìm và cài plugin iThemes Security

Ngay sau khi cài xong, hãy ấn nút Secure Your Site Now để bắt đầu thiết lập.

ithemessecurity-start

Sau đó bạn chỉ cần click vào 2 tùy chọn như trong ảnh và ấn nút Dismiss để kết thúc.

ithemessecurity-quickstart

Sau đó bạn chuyển qua tab Settings và bắt đầu tìm hiểu các tùy chọn của nó.

ithemessecurity-settingtab

Ở đó có phần Go to là thanh điều hướng, khi bạn chọn từng phần trong đó thì cửa sổ sẽ dẫn bạn đi đến khu vực tương ứng để thiết lập. Hãy cùng tìm hiểu các tùy chọn của iThemes Security ở phần dưới nhé.

Các tùy chọn cơ bản của iThemes Security

Global Settings

Phần này sẽ chứa các thiết lập cơ bản cho iThemes Security.

  • Write to File – Tùy chọn này sẽ cho phép các plugin khác tự động thêm nội dung vào file wp-config.php và .htaccess, bạn nên chọn nó để có thể cài được các tính năng khác của iThemes Security hoặc các plugin tạo cache một cách tự động.
  • Notification Email – Địa chỉ email nhận các thông báo liên quan đến plugin iThemes Security, bạn có thể thêm nhiều email ngăn cách với nhau bằng một hàng.
  • Backup Delivery Email – Địa chỉ email nhận file backup nếu bạn backup dữ liệu bằng iThemes Securtity.
  • Host Lockout Message – Tin nhắn thông báo lỗi cho những người đăng nhập thất bại do bị khóa IP.
  • User Lockout Message – Tin nhắn thông báo lỗi nếu thành viên bị khóa.
  • Blacklist Repeat Offender – Kích hoạt sử dụng danh sách địa chỉ spam công cộng. Bạn nên chọn vì nó sẽ giúp bạn thoát khỏi các spammer có trong danh sách này.
  • Blacklist Threshold – Số lần IP bị khóa sẽ chuyển thành dạng khóa vĩnh viễn.
  • Blacklist Lookback Period – Thời hạn khóa các spammer có trong danh sách ở phần Blacklist Repeat Offender.
  • Lockout Period – Thời gian mỗi lần khóa nếu có ai đó cố gắng đăng nhập nhưng bị thất bại.
  • Lockout White List – Danh sách IP không bị khóa.
  • Email Lockout Notifications – Email nhận thông báo khi ai đó bị khóa.
  • Log Type – Kiểu ghi các log hoạt động của plugin, nên chọn là Database Only.
  • Days to Keep Database Logs – Thời hạn ghi của các log trong database, sau thời hạn các log sẽ bị xóa đi.
  • Path to Log Files – Đường dẫn của file log.
  • Allow Data Tracking – Cho phép iThemes thu thập các dữ liệu sử dụng của bạn để họ phân tích.

404 Detection

Đây là tùy chọn sẽ gửi thông báo mỗi khi thành viên truy cập một trang nào đó và phát hiện lỗi 404. Bạn nên cân nhắc bật chức năng này nếu trang của bạn đã có quá nhiều lỗi 404 vì nó sẽ hấp diêm cái hộp email của bạn và tốn rất nhiều tài nguyên.

  • Minutes to Remember 404 Error (Check Period) – Thời gian mà hệ thống tự ghi nhớ lỗi 404 và không báo vào lần sau.
  • Error Threshold – Số lỗi tối đa mà mỗi thành viên có thể gặp, nếu thành viên vào tối đa số trang 404 trong phần này thì sẽ bị khóa. Thường là hay xảy ra với bot spam.
  • 404 File/Folder White List – Các file/folder nó sẽ bỏ qua và không kiểm tra lỗi 404.

Away Mode

Đây là tính năng giúp bạn khóa trang quản trị trong thời gian nhất định, bạn chỉ có thể vào được trong một thời gian nhất định. Rất hữu ích cho website có 1 admin và bạn có thể tùy chọn khóa trang quản trị lúc bạn đang ngủ, làm việc chẳng hạn.

  • Enable away mode – Bật chức năng Away Mode.
  • Type of Restriction – Loại từ chối, nếu bạn truy cập vào website mỗi ngày thì chọn Daily.
  • Start Time – Thời gian bắt đầu “mở cổng” trang admin.
  • End Time – Thời gian đóng cổng trang admin.

Banned User

Tùy chọn cho phép bật chức năng ban một thành viên nào đó, kể cả bot spam.

  • Enable HackRepair.com’s blacklist feature – Bật chức năng khóa các bot spam có trong danh sách của HackRepair.com.
  • Enable ban users – Bật chức năng khóa thành viên (không phải thành viên trong trang WordPress của bạn).
  • Ban Hosts – Danh sách các IP sẽ bị ban, mỗi IP là một dòng.
  • Ban User Agents – Loại User Agents sẽ bị ban, áp dụng cho các bot spam. Bạn có thể lên Google gõ “Bad User Agents list” để lấy danh sách và bỏ vào tùy chọn này nếu muốn.
  • Whitelist Users – IP sẽ không bị ban.

Brute Force Protection

Tùy chọn này sẽ giúp bạn chống Brute Force Attack bằng hình thức hạn chế số lần đăng nhập sai.

  • Enable brute force protection – Bật chức năng chống Brute Force.
  • Max Login Attempts Per Host – Số lần đăng nhập sai tối đa của một IP.
  • Max Login Attempts Per User – Số lần đăng nhập sai tối đa của một thành viên.
  • Minutes to Remember Bad Login (check period) – Số thời gian ghi nhớ đăng nhập sai, nếu trong khoảng thời gian này mà vượt quá số lần đăng nhập sai cho phép thì sẽ bị khóa.

Database Backup

Tùy chọn hỗ trợ tự động sao lưu cơ sở dữ liệu. Chỉ nên bật nếu bạn có database nhỏ vì sử dụng BackWPUp hoặc BackupBuddy sẽ tốt hơn nhiều.

  • Backup Full Database – Backup toàn bộ cơ sở dữ liệu.
  • Backup Method – Phương thức sao lưu, nó sẽ gửi bản backup qua email hoặc chỉ lưu vào host hoặc cả 2.
  • Backup Location – Đường dẫn thư mục chứa file backup.
  • Backups to Retain – Số file backup sẽ giữ lại trên host. Ví dụ nếu bạn đặt là 5 thì nếu nó nhiều hơn 5 thì sẽ tự xóa bớt file backup cũ nhất.
  • Compress Backup Files – Hỗ trợ nén file backup.
  • Exclude Tables – Các table trong database bạn không muốn backup.
  • Schedule Database Backups – Bật tùy chọn tự động backup.
  • Backup Interval – Tự động backup sau số ngày nhất định.

File Change Detection

Tính năng gửi thông báo nếu có file nào đó trong host bị thay đổi, thường là để phát hiện các file bị chèn shell. Tuy nhiên chỉ nên bật đúng lúc cần vì nó tốn tài nguyên.

  • Enable File Change detection –  Bật tính năng phát hiện file bị thay đổi.
  • Split File Scanning – Chia nhỏ các phần trong code để kiểm tra lần lượt thay vì một lúc, đỡ tốn tài nguyên.
  • Include/Exclude Files and Folders – Tùy chọn loại bỏ hoặc bao gồm các file để phát hiện.
  • Files and Folders List – danh sách các file/folder mà bạn muốn loại bỏ/bao gồm để scan.
  • Ignore File Types – Các định dạng file mà nó sẽ bỏ qua.
  • Email File Change Notifications – Bật tính năng gửi thông báo qua email.

Hide Login Area

Bật tính năng đổi đường dẫn đăng nhập thay vì /wp-admin như cũ.

  • Login Slug – Slug đường dẫn đăng nhập mới, nếu bạn ghi là dangnhap thì địa chỉ đăng nhập của bạn sẽ có dạng example.com/dangnhap.
  • Register Slug – Slug đường dẫn đăng ký thành viên.
  • Enable Theme Compatibility – Tùy chọn tự động tương thích với theme.
  • Theme Compatibility Slug – Đường dẫn báo lỗi 404.

Secure Socket Layer

Đây là tính năng áp dụng SSL cho website nếu website bạn có chứng chỉ SSL. Nếu bạn không có SSL, tốt nhất để nguyên nếu không muốn lỗi cả website.

  • Front End SSL Mode – Bật SSL cho website.
  • SSL for Login – Bật SSL cho hệ thống đăng nhập trên website.
  • SSL for Dashboard – Bật SSL cho Dashboard.

Strong Password

Áp dụng bắt buộc sử dụng mật khẩu phức tạp để bảo mật.

  • Enable strong password enforcement – Bật chức năng bắt buộc mật khẩu mạnh.

System Tweaks

Các thiết lập trong đây sẽ can thiệp hệ thống hosting của bạn đang dùng để bảo mật. Do đây là thiết lập nâng cao nên đừng chọn nếu bạn không biết mình đang làm gì.

  • Protect System Files – Bảo mật các file quan trọng của WordPress như wp-config.php, .htaccess, wp-include, instal,….
  • Disable Directory Browsing – Không cho phép browse file tập tin bằng trình duyệt, nghĩa là nếu thư mục bạn không có file index thì nó vẫn không xuất hiện danh sách các file trong đó.
  • Filter Request Methods – Lọc các truy vấn gửi đi thông qua URL, nó sẽ chặn các truy vấn mang tính chất nguy hiểm hoặc đáng ngờ.
  • Filter Suspicious Query Strings in the URL – Lọc và chặn các truy vấn mang tính chất nguy hiểm trên URL, ví dụ như họ đang cố gắng truy cập vào các file trong thư mục themes, plugins.
  • Filter Non-English Characters – Một cách để hạn chế SQL Injection bằng cách chặn các query chứa ký tự lạ. Nên chọn.
  • Filter Long URL Strings – Lọc các truy vấn quá dài, thường là các attacker bằng hình thức SQL Injection thường viết truy vấn khá dài trên URL để thay đổi database. Nên chọn.
  • Remove File Writing Permissions – Tự động CHMOD bảo mật cho các file nhạy cảm, nếu bật thì các file đó sẽ được CHMOD thành 0444 thay vì 0644 như mặc định.
  • Disable PHP in Uploads – Không cho phép thực thi các mã PHP trong tính năng upload trong WordPress để tránh màng up shell lên host. Nên chọn.

WordPress Tweaks

Các tùy chọn này sẽ can thiệp vào mã nguồn của WordPress để bảo mật.

  • Remove WordPress Generator Meta Tag – Xóa các thẻ meta mặc định của WordPress tự sinh ra để làm cho hacker khó xác định số phiên bản WordPress mà bạn đang dùng để tìm bug.
  • Remove the Windows Live Writer header – Xóa thẻ header để hồi đáp lại truy vấn từ Windows Live Writer nhằm tránh lại các hình thức tấn công thông qua việc lợi dụng file này để đăng bài trái phép.
  • Remove the RSD (Really Simple Discovery) header – Xóa thẻ header chứa file xml-rpc trên header để tránh lại các hình thức tấn công bằng việc lợi dụng đăng bài trái phép.
  • Reduce Comment Spam – Chống spam ở comment.
  • Display Random Version – Tự động hiển thị ngẫu nhiên số phiên bản WordPress để hacker khó xác định phiên bản thật sự mà bạn đang dùng.
  • Disable File Editor – Không cho phép chỉnh sửa theme, plugin trong Dashboard.
  • Disable login error messages – Tắt hiển thị lỗi đăng nhập để hacker khó xác định là họ đăng nhập sai hay lỗi.
  • Force users to choose a unique nickname – Không cho thành viên sử dụng nickname trùng nhau.
  • Disables a user’s author page if their post count is 0 – Không tạo đường dẫn author riêng nếu họ chưa có bài.

Sau khi thay đổi xong, cứ ấn nút Save all Changes.

Advanced

Đây là các thiết lập nâng cao, hạn chế táy máy nếu bạn sợ bị lỗi hoặc tốt nhất backup toàn bộ database và code trước khi sử dụng các công cụ trong đây.

Admin User

Các thay đổi trong đây sẽ ảnh hưởng tới tài khoản admin của website.

  • Enable Change Admin User – Đổi tên username của admin.
  • New Admin Username – Tên đăng nhập mới của admin.
  • Change User ID 1 – Thay đổi User ID của admin để tránh bị dò ra.

Change Content Directory

Tùy chọn trong đây sẽ thay đổi thư mục wp-content, rất nguy hiểm nếu bạn đã sử dụng website lâu rồi. Chỉ nên áp dụng cho các website mới.

Change Database Prefix

Thay đổi prefix của database thay vì wp_ như mặc định, tùy chọn này sẽ ít có khả năng lỗi nên bạn có thể yên tâm sử dụng.

 Lời kết

Đó là những tính năng quan trọng mà mình cần nói qua trong plugin iThemes Security này. Mặc dù phiên bản do iThemes phát triển ra mắt chưa được bao lâu nhưng theo đánh giá của mình, nó vẫn hoạt động khá tốt ở thời điểm hiện tại và sẽ còn tiếp tục chỉnh sửa và bổ sung khá nhiều. Hy vọng với plugin iThemes Security, bạn sẽ yên tâm hơn trong việc bảo mật WordPress.

9 cách hạn chế local attack trong WordPress

Thông tin thêm

Nếu bạn sử dụng Shared Host có hỗ trợ CloudLinux như AZDIGI, StableHost, A2Hosting,…thì không cần sợ local hack nên không cần làm theo bài này.

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) bao 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 nó là wp-config.php).
  3. Get thông tin login vào database.
  4. Tấn công tài khoản admin.
  5. Cuối cùng là up shell.

Mình không phải là một người chuyên về hacking nên các biến thể của nó có thể khác đi với kỹ năng của từng người, nhưng nhìn chung đa phần là vậy.

Như vậy, một trong những cách phổ biến mà sẽ khiến các hacker mất thời gian hơn trong việc tấn công đó là bảo mật file config thật kỹ. Và ở trong bài viết này, mình sẽ hướng dẫn bạn một số tips để 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 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 ra là các hacker “thực tập”.

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.

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

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:

01
02
03
04
<php
  if ( !defined(‘ABSPATH’) )
    define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
  require_once(ABSPATH . ‘../baomat/wp-config.php’);

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. Thay đổi database prefix

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.

Cách đổi tiền tố có nhiều cách, 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 nhé mặc dù mình làm rất nhiều lần mà không bị lỗi.

3. Đổi security key

Bạn thử mở file wp-config.php ra, kéo xuống dưới và có thấy một đoạn nội dung giống thế này?

01
02
03
04
05
06
07
08
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’);

Bên trên 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ó 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

01
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 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

01
define(‘DISALLOW_FILE_MODS’,true);

6. CHMOD file wp-config.php

CHMOD lại file wp-config.php

CHMOD lại 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.

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

01
02
03
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

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

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

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.

01
02
03
04
05
<FilesMatch “.*”>
 Order Deny,Allow
 Deny from all
 Allow from 123.456.789
</FilesMatch>

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

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

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

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

Bước 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 để mà 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 (chỉ $90/năm) để tìm và tự quét sạch mọi mã độc. Oneday.vn đang dùng dịch vụ này và thấy rất tốt.

Lời kết

Việc bảo vệ mình trước nạn local attack không chỉ dừng lại với các cách ở trên nhưng mình nghĩ nếu bạn làm hết tất cả các bước thì sẽ hạn chế 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, danh sách các shared host uy tín bạn có thể xem tại đây.

Đừng quên tham khảo thêm kinh nghiệm Bảo mật WordPress căn bản để có thêm nhiều cách hay hơn để bảo mật WordPress nhé.

Phương pháp hạn chế local attack trong WordPress toàn tập

Hiện nay với việc WordPress ngày càng phổ biến thì vấn đề bảo mật website WordPress ngày càng được chú trọng do các hacker cũng tập trung ngày càng nhiều vào nền tảng này. Một trong những phương pháp thường được sử dụng là local attack hoặc hack local. Vậy local attack nghĩa là gì ?

Continue reading “Phương pháp hạn chế local attack trong WordPress toàn tập”