I. Giới thiệu

Nếu mọi người từng đi đến các khách sạn hay sân bay thì có thể thấy mỗi khi kết nối đến hệ thống mạng không dây thì đều thấy hiện lên một trang portal quảng cáo về địa điểm đó và yêu cầu chúng ta xác nhận thông tin … Đó chính là giải pháp Captive Portal giúp họ quảng bá về công ty cũng như các dịch vụ mà họ cung cấp. Không những vậy giải pháp trên còn giúp bảo mật hệ thống, quản lý được ai đang sử dụng mạng cũng như băng thông người đó sử dụng làm hao tốn tài nguyên bao nhiêu.

II. Giải pháp triển khai Captive Portal sử dụng firewall Pfsense và freeradius, Mysql

  1. Sơ đồ hoạt động:

Wifi Captive Portal.png

Mô hình triển khai bao gồm:

  • wireless: mô hình cài đặt của chúng ta không phải cài gì đặc biệt đến wireless controller này, chỉ cần enable một SSID là được, ở đây mình mở một mạng wifi tên Meeting.
  • Pfsense : phiên bản cài đặt 2.3
  • radius server: Cài đặt freeradius và mysql server.
  1. Các bước triển khai:

**a. Trên pfsense:

Enable tính năng Captive Portal trong phần Service.

Tạo 1 Captive Portal Zones: Cấu hình 1 số tham số sau:

  • Interface: chọn Interface kết nối đến wireless
  • Maximum concurrent connections: cho phép số lần 1 user được sử dụng đồng thời.
  • Idle timeout: khoảng thời gian người dùng bị ngắt mạng khi không sử dụng mạng.
  • Hard timeout: khoảng thời gian người dùng bị ngắt mạng kể cả khi vẫn đang sử dụng mạng.
  • Radius Authentication: chọn PAP để xác thực tài khoản bằng radius server
  • Primary RADIUS server: điền IP, port, secret key radius server ( secret key sẽ nói đến ở mục cài đặt freeradius ).
  • HTML Page Contents: mặc định đã có sẵn web portal của pfsense, nếu muốn thay đổi mình có thể upload file HTML hoặc PHP thay thế.

2.PNG

**b. Cài đặt radius server và mysql server:

yum install -y freeradius freeradius-mysql freeradius-utils mysql-server

Giờ ta cần khởi chạy radius và mysql server:

service mysqld start

service radiusd start

Giờ cần cài đặt mật khẩu cho user root của mysql:

mysqladmin -u root password 123456

Giờ tạo database tên là Meeting:

mysqladmin -u root -p create meeting

Giờ tạo 1 user radius và cho phép chỉnh sửa trong database meeting:

mysql -u root -p

GRANT all ON radius.* TO [email protected] IDENTIFIED BY "123456";

exit

Giờ ta cần import dữ liệu cho database meeting:

mysql -u radius -p meeting < /etc/raddb/sql/mysql/cui.sql

mysql -u radius -p meeting < /etc/raddb/sql/mysql/ippool.sql

mysql -u radius -p meeting < /etc/raddb/sql/mysql/nas.sql

mysql -u radius -p meeting < /etc/raddb/sql/mysql/schema.sql

mysql -u radius -p meeting < /etc/raddb/sql/mysql/wimax.sql

Giờ cần chỉnh sửa tham số trong file /etc/raddb/radiusd.conf

Mình bỏ dấu "#" trước dòng có "sql.conf"

Chỉnh sửa tiếp file /etc/raddb/sql.conf

cấu hình các tham số sau:

login = “radius”
password = “123456”
readclients = yes

Sửa tiếp file /etc/raddb/sites-enabled/default

Bỏ dấu "#" trước các dòng có "sql"

Giờ restart mysql và radius

service mysqld restart

service radiusd restart

**c. Cài đặt daloradius để quản lý radius server qua web

Tải file cài đặt từ website http://www.daloradius.com/ và giải nén ra được thư mục daloradius-0.9-9

restore dữ liệu database daloradius

mysql -uradius -p 123456 < daloradius-0.9-9/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

Chỉnh sửa file daloradius-0.9-9/library/daloradius.conf.php

Thêm các tham số DB, user và pass

$configValues[‘DALORADIUS_VERSION’] = ‘0.9-9’;
$configValues[‘FREERADIUS_VERSION’] = ‘2’;
$configValues[‘CONFIG_DB_ENGINE’] = ‘mysql’;
$configValues[‘CONFIG_DB_HOST’] = ‘localhost’;
$configValues[‘CONFIG_DB_USER’] = ‘radius’;
$configValues[‘CONFIG_DB_PASS’] = ‘123456’;
$configValues[‘CONFIG_DB_NAME’] = ‘meeting’;

copy thư mục daloradius-0.9-9 vào thư mục /var/www/html

mv daloradius-0.9-9 /var/www/html/daloradius

giờ login vào trang quản lý daloradius bằng trình duyệt

https://10.0.1.198/daloradius

sử dụng user/pass mặc định là administrator/radius

Tạo user cho người dùng:

Management – > New user -> user Authentication

Điền các tham số: username, password, Password type để cleartext=Password, phần group để trống cũng được.

3.PNG

Giờ chúng ta thử nghiệm bằng cách kết nối đến wifi Meeting:
Khi kết nối đến wifi Meeting, sẽ tự động xuất hiện một trang portal bắt nhập tài khoản
4.PNG

Ta thấy đã vào được internet bình thường.
5.PNG