1. OPNsense Captive Portal là gì?
OPNsense Captive Portal là một tính năng trong OPNsense, cung cấp khả năng triển khai mạng truy cập bắt buộc trên mạng không dây. Nó yêu cầu người dùng kết nối tới mạng và cung cấp thông tin đăng nhập hoặc thực hiện quy trình xác thực trước khi được phép truy cập vào internet.
Nên sử dụng OPNsense Captive Portal trong các trường hợp sau:
- Hotspot công cộng: Captive Portal thích hợp cho các địa điểm công cộng như quán cà phê, nhà hàng, sân bay, khách sạn, nơi bạn muốn cung cấp truy cập internet cho khách hàng, nhưng đồng thời muốn kiểm soát và theo dõi việc sử dụng internet của họ.
- Trường học và cơ quan: Captive Portal cung cấp phương pháp xác thực người dùng trước khi truy cập internet trong môi trường học tập hoặc làm việc. Điều này giúp quản lý và kiểm soát việc sử dụng internet của nhân viên, sinh viên hoặc người dùng trong tổ chức.
- Quản lý băng thông: Captive Portal cho phép bạn kiểm soát và giới hạn băng thông truy cập internet cho từng người dùng. Bạn có thể áp dụng chính sách băng thông, giới hạn tốc độ tải xuống và tải lên, đảm bảo công bằng và ổn định cho người dùng.
Ưu điểm của OPNsense Captive Portal:
- Xác thực người dùng: Captive Portal cho phép xác thực người dùng thông qua tài khoản hoặc quy trình xác thực bổ sung, đảm bảo chỉ những người dùng được xác thực mới có thể truy cập internet.
- Quản lý và giám sát: Bạn có thể quản lý và giám sát việc sử dụng internet của người dùng thông qua giao diện quản lý, theo dõi lưu lượng, kiểm soát băng thông và áp dụng các chính sách mạng.
- Linh hoạt: Captive Portal hỗ trợ nhiều phương pháp xác thực như trang đăng nhập, mã kích hoạt, SMS OTP và tích hợp với hệ thống quản lý người dùng hiện có.
Nhược điểm của OPNsense Captive Portal:
- Phức tạp cấu hình: Cấu hình và triển khai Captive Portal có thể phức tạp đối với người dùng không có kinh nghiệm về mạng và xác thực.
- Đòi hỏi tài nguyên: Sử dụng Captive Portal có thể đòi hỏi tài nguyên máy tính và băng thông mạng để xử lý việc xác thực và giám sát lưu lượng người dùng.
2. Thực hành.
Trước khi vào bài thực hành, bạn hãy tham khảo sơ đồ đấu nối của tôi nhé.
Để tạo dịch vụ Captive Portal, bạn hãy vào Service -> Captive Portal -> Administration, sau đó bấm dấu cộng (2) để thêm một Zone mới.
Dưới đây là mô tả chức năng của một số trường trong zone của OPNsense Captive Portal Setup:
- Enabled: Cho phép hoặc vô hiệu hóa tính năng Captive Portal trên zone đang cấu hình.
- Zone number: Xác định số thứ tự của zone Captive Portal. Đây là thông tin tham khảo và không có tác động đáng kể đến chức năng của Captive Portal.
- Interfaces: Chọn giao diện mạng mà Captive Portal sẽ hoạt động trên. Bạn có thể chọn nhiều giao diện nếu muốn áp dụng Captive Portal trên nhiều mạng.
- Authenticate using: Xác định phương pháp xác thực người dùng khi truy cập Captive Portal. Có thể là tài khoản local, LDAP, RADIUS hoặc các phương pháp xác thực khác.
- Always send accounting requests: Đặt để gửi yêu cầu báo cáo kế toán (accounting requests) mỗi khi người dùng truy cập Captive Portal.
- Enforce local group: Yêu cầu người dùng thuộc vào một nhóm cục bộ (local group) cụ thể để được truy cập vào internet thông qua Captive Portal.
- Idle timeout (minutes): Xác định khoảng thời gian không hoạt động (idle) tối đa cho phép trước khi người dùng bị đăng xuất tự động khỏi Captive Portal.
- Hard timeout (minutes): Thiết lập thời gian tối đa cho phép một phiên Captive Portal trước khi người dùng bị đăng xuất tự động.
- Concurrent user logins: Xác định số lượng người dùng đồng thời tối đa được phép truy cập Captive Portal.
- SSL certificate: Chọn chứng chỉ SSL/TLS được sử dụng cho trang đăng nhập Captive Portal để đảm bảo an toàn trong quá trình xác thực.
- Hostname: Xác định tên máy chủ (hostname) được sử dụng trong địa chỉ trang đăng nhập Captive Portal.
- Allowed addresses: Xác định danh sách địa chỉ IP được phép truy cập Captive Portal.
- Transparent proxy (HTTP): Cấu hình Captive Portal để hoạt động như một proxy trong việc xử lý lưu lượng HTTP.
- Transparent proxy (HTTPS): Cấu hình Captive Portal để hoạt động như một proxy trong việc xử lý lưu lượng HTTPS.
- Custom template: Cho phép bạn sử dụng một mẫu tuỳ chỉnh để tạo giao diện trang đăng nhập Captive Portal theo ý muốn.
- Description: Trường này cho phép bạn thêm mô tả cho zone Captive Portal để dễ dàng nhận biết và quản lý.
Ở phần demo mình chỉ setup 3 thành phần ở phần đánh dấu màu đỏ, sau đó bấm save lại.
Sau khi Save lại bạn sẽ có zone đầu tiên như dưới, đừng quên bấm Apply nhé.
Tiếp theo chúng ta cần tạo một template mẫu trong Captive Portal của OPNsense, Templates có tác dụng cung cấp khả năng tùy chỉnh giao diện trang đăng nhập của Captive Portal theo ý muốn. Khi sử dụng Templates, bạn có thể thiết kế và tạo ra một trang đăng nhập độc đáo và phù hợp với mong muốn và yêu cầu của môi trường mạng của bạn.
Các Templates cho phép bạn thay đổi các phần tử giao diện như hình ảnh, màu sắc, văn bản, biểu tượng và bố cục của trang đăng nhập Captive Portal. Bằng cách tạo và tùy chỉnh Templates, bạn có thể tạo ra trang đăng nhập có giao diện chuyên nghiệp, thương hiệu và tương thích với các yêu cầu thiết kế của tổ chức hoặc doanh nghiệp của bạn.
Các Template cũng cho phép bạn chèn mã HTML, CSS và JavaScript tùy chỉnh để thêm các chức năng và hiệu ứng đặc biệt vào trang đăng nhập. Điều này giúp tạo ra một trải nghiệm người dùng tốt hơn và cung cấp các tính năng bổ sung như thông báo, hướng dẫn sử dụng hoặc các liên kết quan trọng.
Hãy chuyển sang mục Templates (1) sau đó bấm vào nút tải về để tải template mẫu của OPNSense (do mình lười thiết kế nên mùng template mẫu).
Nó cho phép download template này về.
Sau đó bạn bấm vào dấu cộng ở dưới để import template này vào OPNsense.
Bấm vào Choose File.
Chọn template của bạn và đặt tên cho nó, cuối cùng bấm Upload.
Sau khi upload template vào hệ thống xong, bạn sẽ có một template như dưới và đừng quên bấm Apply nhé.
Tiếp theo mình vao phần System -> Access (1) -> Servers (2) và bấm vào dấu cộng (3) để thêm một hình thức Access mới.
Mình lựa chọn loại Access là Voucher, hãy đặt tên cho nó, đặt độ dài cùa Username và Password.
Sau khi lưu lại bạn sẽ có một access server mới như dưới.
Tiếp theo hãy quay lại phần cấu hình Captive Portal -> Voucher và bấm vào Create Vouchers để tạo các username/password cung cấp cho người dùng.
Dưới đây là mô tả tác dụng của các trường trong phần “Generate vouchers” của Captive Portal:
- Setting: Chọn cấu hình sử dụng cho mã voucher được tạo. Có thể chọn “One-Time” để mỗi mã voucher chỉ có thể sử dụng một lần, hoặc “Valid for” để mỗi mã voucher có thể sử dụng trong một khoảng thời gian nhất định.
- Validity: Xác định thời gian hiệu lực của mã voucher. Khi tới thời điểm này, mã voucher sẽ không còn hiệu lực và không thể sử dụng được nữa.
- Expires in: Đây là tùy chọn thời gian, nếu được chọn, sẽ xác định thời gian từ khi tạo mã voucher đến khi nó hết hạn.
- Number of vouchers: Xác định số lượng mã voucher sẽ được tạo ra. Số lượng này có thể được chỉ định tùy ý để đáp ứng nhu cầu sử dụng.
- Groupname: Cho phép gán mã voucher với một nhóm cụ thể (group). Điều này có thể hữu ích khi bạn muốn quản lý mã voucher theo từng nhóm người dùng hoặc mục đích sử dụng khác nhau.
Sau khi bấm vào Generate bạn sẽ được nhắc nhở download file lưu thông tin của username Captive Portal về máy tính (lưu ý bạn phải download nó về nhé vì thông tin password nằm ở trong file này).
Và đây là kết quả tôi có 10 username để đăng nhập.
Đây là nội dung file csv bạn được nhắc nhở download về, thông tin mật khẩu được lưu ở đây.
Tiếp theo bạn quay lại Administration (1) của Captive Portal và bấm vào chỉnh sửa (2).
Tại phần Authenticate using hãy chọn Voucher của bạn đã tạo ở bước trên và tương tự phần Custom template thì chọn template bạn đã tạo ở bước trên.
Sau khi bấm lưu lại bạn nhớ bấm Apply để áp dụng thay đổi.
Để đơn giản mình sẽ tạo 2 rules như dưới:
- Rule 1 cho phép kết nối TCP range port 8000-10000 đến IP Gateway của OPNSense với mục đích cho phép login vào trang Captive Portal của OPNsense.
- Rule 2 cho phép toàn mạng trong local được phép đi internet khi login thành công Captive Portal.
3. Kiểm tra kết quả.
Hãy vào Server 01 – 172.16.101.1/24 tiến hành kiểm tra trình tự như sau:
- Đảm bảo kết nối đến gateway của OPNsense nhằm mục đích xác thực Captive Portal.
- Test ping ra internet thì bị chặn vì Captive Portal chưa được login.
Không login Captive Portal đồng nghĩa bạn sẽ không truy cập được Internet.
Và bây giờ bạn hãy tiến hành login Captive Portal bằng cách vào url https://172.16.101.254:8000 để tiến hành xác thực. Hãy lấy thông tin username/password lưu trong file lúc nãy bạn đã tải về nhé.
Kết quả login thành công, bạn có thể ping ra internet và truy cập được trang web bình thường.
Bạn cũng có thể xem thông tin các username/password đang sử dụng mạng có xác thực Captive Portal bằng cách vào Services -> Captive Portal -> Sessions.
Chúc các bạn thành công.