Triển khai hệ thống Wifi Captive Portal với Pfsense 2.3 và freeradius + mysql
Bài đăng này đã không được cập nhật trong 3 năm
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
- Sơ đồ hoạt động:
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.
- 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ế.
**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 radius@localhost 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
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.
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
Ta thấy đã vào được internet bình thường.
All rights reserved