Идентификация абонента в сети WiFi с помощью мобильного телефона
Ниже представлен вариант для самостоятельной реализации данного модуля.
Подробная инструкция развертывания Wi-Fi Hot Spot.
Введение
В связи с ужесточением правил доступа через публичные WiFi hotspots к сети оператора связи, появилась необходимость идентифицировать абонента одним из способов по телефонному номеру, по паспортным данным или через портал гос.услуг. В данном примере разберем организацию доступа с использованием идентификации абонента по телефонному номеру.
Схема работы
Последовательность действий:
- абонент подключается к сети WiFi
- появляется welcome page с информацией, что абонент должен открыть браузер и идентифицировать себя 1)
- абонент отрывает браузер, при переходе на любой URL, происходит переадресация абонента на страницу идентификации
- абонент вводит телефонный номер, запрашивает код доступа
- код доступа отправляется на телефонный номер через SMS
- абонент вводит полученный код доступа
- происходит запись сессионной куки на абонентское устройство с сохранением в течении суток 2) и происходит переход на запрошенный пользователем URL
Для настройки сети потребуется, подключенные отдельно:
- DHCP сервер для организации централизованной выдачи адресов абонентам, обладающий возможностью при выдачи нового IP адреса вызвать shell скрипт 3)
- Виртуальная машина с установленным WEB-сервером Apache (httpd), модулем просмотра статистики и отчетов (nfsen)
- Доступ к сервису для отправки SMS сообщений4)
- (опционально) NAT для уменьшения к-ва используемых IPv4 адресов, и записью лога трансляций IP↔IP,PORT 5)
- (опционально) Radius для аутентификации в сети по идентификатору абонента 6)
Схема сети (упрощенно):
- WiFi роутер, сконфигурированный для получения IP от централизованного DHCP сервера и установлена welcome page 7)
- Роутер(ы) сети
- СКАТ DPI
- Граничный роутер
таким образом весь трафик абонентов проходит через СКАТ DPI.
Последовательность работы:
- абонентское устройство подключается к WiFi роутеру
- WiFi роутер обращается за новым IP к DHCP серверу
- DHCP сервер вызывает shell скрипт, при выдаче нового IP, и отдает данные по новому IP на WiFi роутер
- shell скрипт по выданному IP на СКАТ DPI активирует услугу белый список и тариф с ограничениями доступа
- WEB-сервер получает запрос на welcome page, абонент активирует браузер и переходит на любой URL
- WEB-сервер получает запрос на страницу идентификации 8), абонент вводит телефонный номер и нажимает "получить код доступа"
- WEB-сервер получает запрос на код доступа, формирует случайное число и отправляет на телефон абонента, абонент вводит в форму полученный код и нажимает подтвердить
- WEB-сервер получает запрос на подтверждение кода доступа, если код правильный, вызывает shell скрипт для удаления услуги белый список и установки тарифа WiFi доступа, устанавливает куки в браузере и переадресует на запрошенный URL
Настройка DPI
используем описание классов protocols.txt
http cs0 https cs0 dns cs0 default cs1
Конвертируем:
cat protocols.txt|lst2dscp /etc/dpi/protocols.dscp
из архива с исходниками копируем на DPI сервер директорию:
htdocs/wifi/.script в /home/fastdpi/
создаем файл тарифа default_policing.cfg для доступа к интернет через WiFi - 10 mbit:
htb_inbound_root=rate 10mbit htb_inbound_class0=rate 1mbit ceil 10mbit htb_inbound_class1=rate 1mbit ceil 10mbit htb_inbound_class2=rate 8bit ceil 10mbit htb_inbound_class3=rate 8bit ceil 10mbit htb_inbound_class4=rate 8bit ceil 10mbit htb_inbound_class5=rate 8bit ceil 10mbit htb_inbound_class6=rate 8bit ceil 10mbit htb_inbound_class7=rate 8bit ceil 10mbit htb_root=rate 10mbit htb_class0=rate 1mbit ceil 10mbit htb_class1=rate 1mbit ceil 10mbit htb_class2=rate 8bit ceil 10mbit htb_class3=rate 8bit ceil 10mbit htb_class4=rate 8bit ceil 10mbit htb_class5=rate 8bit ceil 10mbit htb_class6=rate 8bit ceil 10mbit htb_class7=rate 8bit ceil 10mbit
создаем файл тарифа captive_portal_hard.cfg для блокировки доступа к интернет совместно с белым списком:
htb_inbound_root=rate 256kbit htb_inbound_class0=rate 8bit ceil 256kbit htb_inbound_class1=rate 8bit ceil 8bit htb_inbound_class2=rate 8bit ceil 8bit htb_inbound_class3=rate 8bit ceil 8bit htb_inbound_class4=rate 8bit ceil 8bit htb_inbound_class5=rate 8bit ceil 8bit htb_inbound_class6=rate 8bit ceil 8bit htb_inbound_class7=rate 8bit ceil 8bit htb_root=rate 256kbit htb_class0=rate 8bit ceil 256kbit htb_class1=rate 8bit ceil 8bit htb_class2=rate 8bit ceil 8bit htb_class3=rate 8bit ceil 8bit htb_class4=rate 8bit ceil 8bit htb_class5=rate 8bit ceil 8bit htb_class6=rate 8bit ceil 8bit htb_class7=rate 8bit ceil 8bit
Настроить услугу белый список:
cp_server=yoursite.ru/welcome.php
Настройка DHCP
- настроить удаленный запуск команд через SSH
- установить на триггер на выдачу нового IP: ssh dpi_user@dpi_host "/home/fastdpi/_add_captive_portal.sh <IP>"
Настойка Web-сервера
- настроить удаленный запуск команд через SSH
- настроить конфигурацию Apache, пример в директории архива conf/:
в conf.d/php.ini перенести/добавить настройки из примера conf/php.ini
включить файл main.conf
настроить DocumentRooot на /var/www/html/htdocs/wifi/ - скопировать htdocs/ в /var/www/html
- отредактировать /var/www/html/htdocs/wifi/.script/remove_captive_portal.sh
- отредактировать /var/www/html/htdocs/wifi/request.php указать USER и PASSWORD доступ к сервису отправки SMS сообщений