[Multisite] Cài đặt WordPress Multisite trên máy chủ dùng VPSSIM

Hiện nay người dùng máy chủ Linux cài đặt VPSSIM để quản lý máy chủ và chạy WordPress cũng khá nhiều nên mình sẽ hướng dẫn chi tiết cách cài đặt Multisite, cấu hình subdomain và tên miền riêng cho website con trên máy chủ Linux sử dụng VPSSIM.

Trước tiên, bạn cần có sẵn một máy chủ Linux cài đặt VPSSIM và đã cài một website WordPress vào đó. Về việc này bạn có thể tham khảo tại trang chủ của VPSSIM hoặc sử dụng menu vpssim -> 1 -> 3 để cài đặt nhé.

Trong bài viết này, mình sẽ có các tên miền sau, dĩ nhiên là tất cả phải được trỏ về IP máy chủ:

  • azdigi.info – Tên miền chính của website
  • azdigi-dns.com – Tên miền riêng của website con dns.azdigi.info
  • azdigiweb.com – Tên miền riêng của website con web.azdigi.info

Do vậy khi làm theo hướng dẫn bạn nhớ đổi tên thành tên miền của bạn cho chính xác, đừng copy đại vào là không được đâu nhé.

Ngoài ra, trong bài viết mình sử dụng công cụ nano để sửa tập tin. Do vậy bạn hãy chắc chắn đã cài nano vào máy chủ nhé.

01
yum install nano -y

Thiết lập wildcard DNS

Để sub-domain hoạt động thì trong thiết lập DNS của tên miền chính phải có bản ghi loại A, tên là * và giá trị trỏ về IP của máy chủ.

Kích hoạt Multisite

Cũng giống như cách kích hoạt thông thường, ta sửa tập tin wp-config.php của website chính.

01
nano /home/azdigi.info/public_html/wp-config.php

Sau đó chèn đoạn sau vào dưới <?php:

01
define( 'WP_ALLOW_MULTISITE', true );

Nhấn Ctrl + O để lưu lại và Ctrl + X để thoát ra. Cái này mình không nhắc lại trong bài nữa nhé.

Sau đó đăng nhập vào wp-admin -> Tools -> Network Setupvà thiết lập Multisite với kiểu sub-domain hoặc sub-directory tùy ý bạn.

Và thêm đoạn dưới đây vào wp-config.php:

01
02
03
04
05
06
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'azdigi.info');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Riêng phần .htaccess bạn bỏ qua, bây giờ hãy sửa tập tin cấu hình tên miền chính trên NGINX:

01
nano /etc/nginx/conf.d/azdigi.info.conf

Tìm phần:

server_name azdigi.info;

Thay thành:

server_name azdigi.info *.azdigi.info;

Lưu lại và khởi động lại NGINX:

service nginx restart

Ok hoàn tất cài đặt.

Bây giờ bạn có thể truy cập vào trang quản trị WordPress và tạo website con như hướng dẫn tại đây.

Sử dụng tên miền riêng cho website con trên VPSSIM

Nếu như bạn muốn thêm tên miền nào thành tên miền riêng cho website con thì bạn phải thiết lập VirtualHost của NGINX trỏ tên miền đó về cùng thư mục. Trước tiên các tên miền đó sẽ cần trỏ về IP của VPS, sau đó bạn sửa tập tin cấu hình tên miền chính của website trên NGINX:

01
nano /etc/nginx/conf.d/azdigi.info.conf

Tìm phần:

server_name azdigi.info *.azdigi.info;

Thay thành:

server_name azdigi.info *.azdigi.info azdigi-dns.com azdigiweb.com;

Trong đó azdigi-dns.comazdigiweb.com là tên miền mình cần sử dụng cho website con. Và đừng quên restart lại NGINX nhé:

service nginx restart

Bây giờ bạn có thể cấu hình tên miền riêng bằng cách sửa tên miền của website con thành tên miền chính và sửa tập tin wp-config.php giống bài này.

Hoàn tất cài đặt.

Rất dễ dàng đúng không nào.

Sử dụng nhiều phiên bản PHP trên cùng một host

Hướng dẫn sử dụng nhiều phiên bản PHP trên cùng một host.

Bạn đang chạy cùng lúc nhiều blog/ website trên một host? Mỗi blog/ website của bạn lại chỉ hỗ trợ một phiên bản PHP nhất định? Trong trường hợp bạn muốn chạy PHP 7.x trên site này nhưng vẫn muốn giữ PHP 5.x trên site khác thì phải làm thế nào? Có thể bạn không để ý, nhiều nhà cung cấp hosting hiện tại đã cho phép làm việc này một cách dễ dàng thông qua cPanel. Đúng vậy, bạn hoàn toàn có thể sử dụng nhiều phiên bản PHP trên cùng một host, mỗi tên miền một phiên bản PHP khác nhau.

Ngay sau đây, tôi sẽ hướng dẫn cho các bạn cách thiết lập phiên bản PHP riêng cho từng tên miền. Tất nhiên là trong trường hợp cPanel của bạn có hỗ trợ.

Sử dụng nhiều phiên bản PHP trên cùng host

Thay đổi phiên bản PHP cho từng tên miền

1. Đầu tiên, các bạn cần truy cập vào cPanel của hosting mình đang sử dụng. Tìm xem có mục MultiPHP Manager hay không? Nếu có thì hãy click vào đó.

2. Trong giao diện MultiPHP Manager, hãy tích vào tên miền mà bạn muốn thay đổi phiên bản PHP, sau đó lựa chọn phiên bản PHP trong mục PHP Version. Click vào nút Apply để xác nhận.

3. Chờ chốc lát cho quá trình hoàn tất. Load lại tab trình duyệt, bạn sẽ nhìn thấy phiên bản PHP của tên miền đã được thay đổi.

Thay đổi thiết lập của phiên bản PHP

4. Giờ là lúc tùy chỉnh các thiết lập cho phiên bản PHP mà bạn vừa chọn. Quay trở lại giao diện chính của cPanel, tìm mục MultiPHP INI Editor và click vào đó.

5. Có 2 chế độ để chỉnh sửa thiết lập PHP: Basic Mode với giao diện đơn giản, dễ sử dụng nhưng ít thông số để tùy biến. Editor Mode đòi hỏi bạn phải có kiến thức chuyên sâu về PHP nhưng cho phép tùy biến nhiều thứ hơn.

  • Với Basic Mode, các bạn chỉ cần lựa chọn tên miền sau đó tắt/ bật hoặc chỉnh sửa các thông số rồi click vào nút Apply là được.

  • Với Editor Mode, các bạn buộc phải thêm các dòng code vào khung bên dưới để tùy chỉnh thông số PHP thông qua tập tin php.in. Đó là lý do tại sao tôi lại nói bạn cần có kiến thức chuyên sâu về PHP.

Click vào nút Save để lưu lại sau khi hoàn tất.

Đó là tất cả những gì các bạn cần làm để sử dụng cùng lúc nhiều phiên bản PHP trên một host, mỗi tên miền lại được chạy một phiên bản PHP riêng. Cũng không quá phức tạp phải không nào? Chúc các bạn thành công!

 

Lỗi 0-day của WordPress 4.7.4 và nó có nguy hại không?

Hôm nay có thể bạn đã từng nghe qua thông báo của mọi người rằng WordPress phiên bản 4.7.4 được phát hiện một lỗi 0-day (CVE-2017-8295) giúp tin tặc có thể lấy mật khẩu của người quản trị cao nhất là admin thông qua việc reset mật khẩu không cần cấp quyền vào email của chủ sở hữu.

Về chi tiết lỗi này bạn có thể tham khảo diễn giải chi tiết tại https://exploitbox.io/vuln/WordPress-Exploit-4-7-Unauth-Password-Reset-0day-CVE-2017-8295.html.

Tuy nhiên trong bài viết này mình sẽ giải thích thêm và chúng ta có thể biết rằng bạn có nguy cơ bị khai thác hay không, từ đó mới áp dụng cách cài plugin chặn reset mật khẩu.

Kịch bản tấn công

Theo ExplotItBox, đầu tiên tin tặc sẽ gửi một truy vấn HTTP tới website thông qua địa chỉ IP, nghĩa là website của bạn phải truy cập được thông qua IP. Nếu bạn nào dùng Shared Hosting sử dụng cPanel bản mới nhất thì không cần lo lắng nữa vì trước đây lâu lắm rồi họ đã có một bản vá về lỗi 0-day trên Linux, và với Shared Hosting bạn cũng không thể truy cập vào website thông qua IP.

-----[ HTTP Request ]----

POST /wp/wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: injected-attackers-mxserver.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 56
user_login=admin&redirect_to=&wp-submit=Get+New+Password

Ở đoạn trên, tin tặc sẽ ghim địa chỉ máy chủ email của họ vào, và trên Apache thì SERVER_NAME sẽ tự động thay thế bằng giá trị HOST trong truy vấn trên, tức là địa chỉ máy chủ email của tin tặc.

Khi đó, người quản trị sẽ nhận 1 email như sau:

Subject: [CompanyX WP] Password Reset
Return-Path: <wordpress@attackers-mxserver.com>
From: WordPress <wordpress@attackers-mxserver.com>
Message-ID: <e6fd614c5dd8a1c604df2a732eb7b016@attackers-mxserver.com>
X-Priority: 3
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Someone requested that the password be reset for the following account:

http://companyX-wp/wp/wordpress/

Username: admin

If this was a mistake, just ignore this email and nothing will happen.

To reset your password, visit the following address:

<http://companyX-wp/wp/wordpress/wp-login.php?action=rp&key=AceiMFmkMR4fsmwxIZtZ&login=admin>

Bạn sẽ thấy phần Return-Path sẽ chứa giá trị mà WordPress tự điền vào giá trị SERVER_NAME, tức là wordpress@địa-chỉ-máy-chủ-email-tin-tặc.ltd và kể cả Message-ID cũng chứa một địa chỉ của tin tặc.

Như vậy là đã rõ, nếu hệ thống hoặc người dùng vô tình phản hồi email này, thì tin tặc sẽ nhận chính cái nội dung email chứa khóa khôi phục mật khẩu quản trị. Như vậy ta sẽ có 3 trường hợp như sau:

  1. Một số email của người quản trị có tính năng tự động trả lời email kèm nội dung email được trả lời.
  2. Tin tặc sẽ gửi một lượng lớn email khiến máy chủ của người dùng bị ngập lụt dung lượng sử dụng hay đại loại vậy khiến email không thể gửi đi và phản hồi ngược lại.
  3. Nếu người dùng quản trị dùng email của Gmail hay các nhà cung cấp mail khác, tin tặc sẽ phải gửi một lượng lớn truy vấn như trên để nhà cung cấp chặn địa chỉ máy chủ tin tặc, từ đó email không thể gửi đi và phản hồi ngược lại.

Vậy điều này có nguy hiểm với bạn không?

Suy xét ra thì lỗi này sẽ nghiêm trọng và bạn có thể bị ảnh hưởng nếu:

  • Bạn đang dùng webserver Apache và có thể truy cập vào website thông qua IP. Nghĩa là không tạo virtualhost ấy.
  • Tin tặc phải biết được tên đăng nhập của người quản trị.
  • Tập tin wp-login.php phải được truy cập trực tiếp. Một số plugin ẩn đường dẫn đăng nhập như iThemes Security sẽ tự động chặn truy cập trực tiếp qua tập tin này. Ví dụ: http://www.oneday.vn/dang-nhap.
  • Người quản trị phải dùng email tự host thì sẽ may ra có nguy cơ, còn Gmail hay gì đó thì phải gửi một lượng email cực lớn cùng lúc họ mới chặn một máy chủ gửi đi.

Như vậy nếu bạn thỏa mãn các điều kiện trên thì có thể phòng chống bằng cách cài plugin Disable Password Reset để chặn chức năng quên mật khẩu đi. Còn nếu không thì lỗi này cũng không thật sự quá nguy hiểm như chúng ta tưởng tượng. Tuy nhiên trong tương lai, WordPress sẽ ra một bản vá để chúng ta yên tâm hơn.

Làm thế nào để xin cấp EV SSL (chứng chỉ số mở rộng) cho Doanh nghiệp?

Trước đây mình đã từng có rất nhiều bài viết về chứng chỉ SSL thông thường và cách cài đặt trên cPanel, Apache hay NGINX. Tuy nhiên lại chưa có cơ hội viết một bài viết đầy đủ về một loại chứng chỉ mà có thể nhiều người đang quan tâm để có được mà trên trình duyệt họ có thể hiện dòng chữ tên doanh nghiệp ngay bên cạnh địa chỉ website hỗ trợ giao thức HTTPS như thế này:

Công ty TNHH Phần mềm Oneday : http://www.oneday.vn

Chứng chỉ này được gọi là EV SSL (Extend Validated SSL). Đây là một loại chứng chỉ SSL doanh nghiệp, mà mình thì lại không chuyên về cái này nên từ khi mình là thành viên của một doanh nghiệp là Oneday.vn thì mới có cơ hội trải nghiệm qua và có tư liệu viết thành bài như thế này.

Vậy đăng ký một chứng chỉ EV SSL có khó không, đăng ký như thế nào, điều kiện được cấp và thời gian trong bao lâu? Tất cả mình sẽ diễn đạt lại trong bài viết này mà mình nghĩ ai cũng có thể làm được, có chút đỉnh chi phí.

Chứng chỉ EV SSL là gì và nó có bảo mật hơn không?

Chứng chỉ EV SSL (Extend Validated SSL) là một loại chứng chỉ cao cấp nhất dành cho các đối tượng là doanh nghiệp hoặc tổ chức được cấp phép hoạt động. Điều này có nghĩa là EV SSL không thể cấp cho cá nhân hay bất kỳ một pháp nhân nào không được cấp phép bởi cơ quan có thẩm quyền trong nước sở tại.

Về cơ bản, EV SSL không bảo mật tốt hơn so với các chứng chỉ SSL bình thường khác như DV (Domain Validated), OV (Organization Validated) vì tất cả loại chứng chỉ SSL đều hỗ trợ mã hóa lên tới 256-bit và độ dài của khóa từ 2048 trở lên. Tuy nhiên EV SSL sẽ có một số khác biệt mà không phải chứng chỉ nào cũng có như:

  • Tăng độ uy tín của website cao hơn vì quy trình xác thực kỹ lưỡng.
  • Phí đảm bảo cao hơn so với các loại chứng chỉ khác. Ví dụ với Comodo thì là $1.750.000 còn GeoTrust là $1.500.000 chẳng hạn. Còn với các chứng chỉ bình thường thì dao động từ $10.000 đến $500.000.

Do vậy, bạn nên xác định rằng EV SSL không bảo mật cao hơn hay xịn hơn với các chứng chỉ SSL khác mà nó sẽ có giá trị về hình thức nhiều hơn.

Đăng ký EV SSL cần giấy tờ gì ở Việt Nam?

Tại Việt Nam, khi đăng ký EV SSL thì chỉ cần chuẩn bị bản scan rõ chữ của Giấy phép đăng ký kinh doanh hợp lệ do Bộ kế hoạch & đầu tư cấp. Đồng thời, tên miền chính của website đăng ký EV SSL phải được thể hiện được trong các trang Whois, với tên miền Việt Nam thì tra cứu tại https://www.vnnic.vn/whois-information. Sẽ tốt hơn nếu bạn dùng email theo tên miền chính của website luôn.

Các bước đăng ký chứng chỉ EV SSL cho doanh nghiệp

1.Mua chứng chỉ EV SSL

Bước đầu tiên bạn có thể mua một chứng chỉ EV SSL hợp lệ ở bất kỳ nơi nào và của CA (Certificate Authority) nào như Comodo, Symantec, Geotrust,…mình khuyến khích chọn Comodo vì mức giá phải chăng. Bạn có thể mua tại Namecheap nếu muốn thanh toán qua quốc tế hoặc MuaSSL.COM nếu bạn cần mua tại Việt Nam. Sở dĩ mình khuyến khích MuaSSL là vì mình cũng là khách hàng tại đây và chế độ hỗ trợ rất tốt, mua chứng chỉ SSL thanh toán sau 7 ngày chứ không cần thanh toán ngay với mức giá có thể gọi là tốt nhất tại Việt Nam.

Nếu bạn mua EV SSL tại MuaSSL.COM thì có thể bỏ qua các bước phía dưới và nhờ bên đó làm giúp luôn nhé, khỏi phải mò mẫm tốn thời gian.

Lưu ý là khi mua EV SSL, bạn sẽ có một mã order ID tại Comodo và sử dụng nó để liên lạc với Comodo nhằm xác thực.

2. Tạo CSR và Private Key

Bước kế tiếp là bạn cần tạo một mã CSR dành cho chứng chỉ SSL này và một private key theo mã CSR đó. Lưu ý là bạn phải giữ lại tập tin CSR và Private Key để sử dụng sau này khi đã có chứng chỉ.

Bạn có thể xem cách tạo mã CSR trên cPanel hoặc tạo mã CSR trên VPS/máy chủ Linux.

3. Gửi xác thực

Sau khi có mã CSR và kích hoạt chứng chỉ EV SSL, bạn sẽ đến bước mệt nhất đó là chứng thực. Với các CA khác mình không rõ nhưng với Comodo thì quy trình chứng thực như sau:

Nếu doanh nghiệp của bạn chưa có đầy đủ thông tin trên Duns and Bradstreet (D&B) bị thiếu hoặc không có số Duns Number. Do vậy nếu doanh nghiệp bạn đã có Duns Number thì thật là tiện lợi vì không phải làm bước chứng thực rườm rà như ở phía dưới. Comodo chỉ cần xác minh thông tin doanh nghiệp trên D&B.

Nếu bạn không có Duns Number thì bạn phải sử dụng phương thức xác minh là nhờ luật sư gửi thư đảm bảo. Hãy thuê một luật sư có khả năng nói tiếng Anh tốt và có giấy phép hành nghề, giấy phép kinh doanh đầy đủ để viết một thư đảm bảo, bạn có thể xem mẫu tại đây và gửi qua email evdocs@comodo.com. Nếu bạn không thể tự làm bước này, hãy liên hệ muassl.com và họ sẽ lo cho bạn khâu này với chi phí 1.000.000 đồng/lần.

Điền thông tin công ty và thông tin người nhận điện thoại xác thực từ Comodo, sẽ có 2 bản là EV SSL Certificate Subscriber Agreement EV SSl Request Form. Nếu bạn thuê luật sư bên muassl.com ở bước trên thì họ sẽ điền sẵn cho bạn 2 mẫu này. Hãy in ra và ký tên đầy đủ.

Tiếp theo Comodo sẽ liên lạc qua điện thoại với người nhận cuộc gọi xác thực đã điền ở bước trên trong khoảng 4-5 giờ sau khi gửi. Nếu không có ai gọi thì vào đây để chat với họ kêu họ gọi ngay. Trường hợp của mình gặp phải là trước đó đã có người gọi rồi mà sau đó họ lại bắt gửi lại hai văn bản ở bước trên và gọi tiếp, sau đó không thấy ai gọi nên vào đó yêu cầu họ gọi ngay, họ sẽ gọi ngay.

Khi gọi họ sẽ hỏi về tên công ty, lĩnh vực kinh doanh, địa chỉ website và xác nhận rằng bạn đang đăng ký chứng chỉ SSL bởi Comodo CA. Bạn xác nhận lại với họ là được, một cuộc gọi mất khoảng 2 phút chứ không nhiều. Mà bật mí nhé, Comodo toàn cử người giọng Ấn Độ.

Sau khi gọi điện thoại xác thực xong thì khoảng 8 giờ sau bạn sẽ nhận được một email kèm chứng chỉ EV SSL như thế này là hoàn tất.

4. Cài đặt

Sau khi có tập tin chứng chỉ SSL rồi thì bây giờ chúng ta có thể cài đặt nó như bao chứng chỉ SSL khác thôi, bạn có thể tham khảo thêm cách cài đặt chứng chỉ SSL mà mình đã viết:

  • Cài chứng chỉ SSL trên cPanel
  • Cài chứng chỉ SSL trên NGINX
  • Cài chứng chỉ SSL trên Apache
  • CÀi chứng chỉ SSL trên VestaCP (thay vì dùng mã chứng chỉ của Let’s Encrypt thì bạn copy mã chứng chỉ của Comodo vào)

Vậy là xong rồi đó, bây giờ website bạn đã có một chứng chỉ SSL màu xanh lè xanh lét kèm theo tên của công ty trên thanh địa chỉ. Ở trên là những gì mình đã làm để đăng ký chứng chỉ SSL cho công ty mình và mình nghĩ bạn cũng có thể làm thành công theo bước y hệt như vậy.

 

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