NỘI DUNG
Thiết lập hCaptcha trên LiteSpeed Web Server để bảo vệ máy chủ
hCaptcha là gì?
hCaptcha là một dịch vụ bảo mật được thiết kế để bảo vệ các trang web khỏi các hành vi gian lận và spam tự động bằng cách yêu cầu người dùng xác nhận rằng họ là con người. hCaptcha hoạt động tương tự như reCAPTCHA của Google, nhưng có một số khác biệt:
- Bảo mật và Quyền riêng tư: hCaptcha được đánh giá cao về mặt bảo vệ quyền riêng tư vì không thu thập dữ liệu người dùng để phục vụ cho mục đích quảng cáo, một điểm khác biệt quan trọng so với reCAPTCHA của Google.
- Cơ chế hoạt động: hCaptcha yêu cầu người dùng thực hiện các nhiệm vụ đơn giản, chẳng hạn như xác định các hình ảnh có chứa đối tượng cụ thể hoặc giải quyết các bài toán đơn giản. Điều này giúp đảm bảo rằng người dùng là con người chứ không phải là các bot tự động.
- Tích hợp và tùy chỉnh: hCaptcha có thể dễ dàng tích hợp vào nhiều nền tảng và trang web, cho phép các nhà phát triển kiểm soát mức độ bảo mật và trải nghiệm người dùng.
- Nguồn thu nhập: Một tính năng đặc biệt của hCaptcha là nó cho phép các nhà phát triển trang web kiếm tiền từ việc hiển thị các captcha. Những bài kiểm tra mà người dùng phải giải quyết thường được sử dụng để huấn luyện các mô hình AI, và hCaptcha chia sẻ một phần lợi nhuận này với các chủ sở hữu trang web.
- Mở rộng sử dụng: hCaptcha đang ngày càng được sử dụng rộng rãi trên nhiều trang web, đặc biệt là các trang web quan tâm đến quyền riêng tư và bảo mật của người dùng.
Trong LiteSpeed Web Server 6.2.1, đã thêm hỗ trợ hCaptcha vào tính năng CAPTCHA trong hệ thống. Sự thay đổi này chủ yếu là do chính sách định giá mới của Google đối với reCAPTCHA. hCaptcha có thể ít tốn kém hơn, và LiteSpeed đã mang đến cho người dùng thêm sự lựa chọn mới.
Trong bài viết này tôi sẽ hướng dẫn các bạn cấu hình hCaptcha lên máy chủ LiteSpeed Web Server. Hãy cùng tôi thực hiện nhé.
Bước 1: Đăng ký tài khoản hCaptcha
Đầu tiên bạn hãy truy cập vào trang https://www.hcaptcha.com/ sau đó đăng ký tài khoản. Bạn có thể đăng ký bằng email, tài khoản Github hoặc thậm chí tài khoản Google của bạn.
Sau khi đăng ký xong bạn sẽ có 2 thông tin là Sitekey và Secret (Nhấn Generate để tạo). Bạn hãy lưu lại để cấu hình ở các bước còn lại.
Bước 2: Cấu hình trên LiteSpeed Web Server WebAdmin Console
Để đăng nhập vào LiteSpeed Web Server WebAdmin Console bạn có thể đăng nhập qua các thông tin sau.
https://Server-IP:7080/
https://Hostname-Server:7080/
Trong LiteSpeed Web Server WebAdmin Console. Bạn tìm và truy cập vào Configuration => Server => Security, và trong phần reCAPTCHA Protection,
Tại đây bạn hãy nhập Site Key và Secret Key với các giá trị mà bạn lấy ở Bước 1. Bạn có thể xem thêm thông tin về các cài đặt CAPTCHA khác tại đây.
Sau khi đã cấu hình hoàn tất. Bạn cần khởi động lại webserver để áp dụng cấu hình vừa thêm. Lệnh khởi động máy chủ bạn có thể sử dụng lệnh sau.
systemctl restart lsws
Bước 3: Cách sử dụng hCaptcha hiệu quả
Một trong những khía cạnh tuyệt vời của tính năng CAPTCHA là bạn có thể sử dụng nó để ngăn chặn các trang web ngừng hoạt động trong thời gian bị tấn công kéo dài.
Và cách dễ nhất để kích hoạt CAPTCHA cho mọi người dùng trên một trang web nhất định là sử dụng quy tắc mod_rewrite rất đơn giản thông qua .htaccess
RewriteEngine On
RewriteRule .* - [E=verifycaptcha]
Quy tắc trên sẽ khiến tất cả người dùng phải xem hCaptcha, và chỉ sau khi hoàn thành thử thách, họ mới có thể xem trang web như bình thường. Sau khi hoàn thành thử thách, LiteSpeed Web Server cũng sẽ đánh dấu IP đó là đáng tin cậy, vì vậy các thử thách mới sẽ không xảy ra cho mỗi lần truy cập trang web từ IP đó.
Mặc dù quy tắc trên hoạt động, nhưng thường không lý tưởng, vì nó có thể dẫn đến việc các điểm cuối nhận được các thử thách CAPTCHA, trong khi các khách hàng sử dụng các điểm cuối này không thể hoàn thành chúng. Ví dụ như API WooCommerce trên các trang web WordPress, hoặc thậm chí các callback của cổng thanh toán.
Chúng ta có thể sử dụng RewriteCond để loại trừ một số user-agents, IP hoặc URL nhất định, hoặc một cách tiếp cận hơi khác là chỉ phục vụ các trang CAPTCHA cho những trang đang bị tấn công tích cực.
Rất thường xuyên, khi các cuộc tấn công xảy ra, kẻ tấn công sẽ liên tục tấn công chỉ một vài trang cụ thể, hoặc đôi khi chỉ là trang chính. Trong những trường hợp như vậy, chúng ta có thể sử dụng các quy tắc rewrite rõ ràng để chỉ nhắm vào các trang này.
Một số ví dụ cơ bản
Bên dưới là một số ví dụ về các quy tắt sử dụng để ngăn chặn.
Nếu một trang liên tục bị tấn công, chúng ta có thể định nghĩa quy tắc sau trong tệp .htaccess của chúng ta:
RewriteEngine On
RewriteRule ^$ - [E=verifycaptcha]
Ví dụ nếu request đang truy cập cả trang chủ và /about-us
, chúng ta có thể giữ các quy tắc khá đơn giản như sau:
RewriteEngine On
RewriteRule ^$ - [E=verifycaptcha]
RewriteRule ^about-us$ - [E=verifycaptcha]
Hoặc sử dụng các quy tắc phức tạp hơn:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(|about-us)$
RewriteRule .* - [E=verifycaptcha]
Để xác định các URL bị tấn công, bạn có thể thường xuyên xem log truy cập của trang web và đơn giản là xem qua các log để xác định các endpoint mà bạn muốn chặn. Một phương pháp khác là sử dụng kết hợp các lệnh cut (hoặc awk), sort và uniq:
cat access.log | cut -d' ' -f7 | sort | uniq -c | sort -h
Ví dụ, điều này sẽ cho bạn số lượng đơn giản các URL được truy cập nhiều nhất trên trang web của bạn. Các URL bị tấn công thường sẽ xuất hiện với số lượng lớn hơn, và bạn có thể chạy lệnh này vài lần để xem URL nào tiếp tục tăng dần.
Một cách khác là chỉ xem xét 50.000 yêu cầu gần nhất, chẳng hạn. Điều này có thể cho ra bức tranh rõ ràng hơn. Để làm điều đó, chúng ta có thể sử dụng tail -50000 access.log thay vì cat access.log. Bạn có thể thấy một ví dụ về kết quả như sau:
241 /assets/images/da.png
263 /assets/styles/style.css
268 /assets/styles/main.css
299 /blog
328 /assets/scripts/popper.min.js
331 /assets/images/en.png
425 /assets/scripts/main.js
445 /favicon.ico
468 /robots.txt
200081 /
- Tài liệu tham khảo: https://blog.litespeedtech.com/2024/08/01/litespeed-web-server-now-with-hcaptcha/