Captive portal на windows
Организовать Captive Portal на Windows штатными средствами проблематично из-за особенностей работы брандмауэра (который, кстати, начал контролировать исходящие соединения только с Vista), поэтому в любом случае придется обращаться к сторонним решениям.
Выбор здесь не особенно велик — DNS Redirector, FirstSpot, PacketFence, myWIFIzone, работает под WinXP/2k), Wifidog и Antamedia HotSpot. Из них бесплатны PacketFence и Wifidog.
Из перечисленных наиболее функционален Antamedia HotSpot, который позволяет организовать свободный и предоплаченный доступ (по трафику, времени или скорости), управлять пропускной способностью, гарантируя нужную скорость разным клиентам, блокировать нежелательные сайты, получать статистику и многое другое.
Развертывание Antamedia HotSpot не представляет особой сложности, в режиме простой установки все компоненты (хотспот, интерфейс оператора и база данных) устанавливаются на один компьютер. Разобраться с первоначальными установками помогает визард, интерфейсы настраиваются автоматически, пользователь может также выбрать внешний вид страницы регистрации. Дальнейшее управление производится при помощи понятного интерфейса.
Безопасность wi-fi-соединения
Безопасность всех беспроводных соединений в публичных местах под большим вопросом. Имеется даже список взломанных сетей, с указанием IP адресов, физических адресов и паролей к ним. Если такой список есть, то взломанных еще больше. К тому же, не считая авторизации, по которой вас отследят, настройка беспроводной сети несильно отличается от домашнего варианта.
Фактически, здесь все зависит от того, кто настраивал точку доступа и какие задачи перед ним стояли. Если это просто делал один из сотрудников, то степень безопасности будет невысокая.
Будем честны, мало кто обращается для настройки пары роутеров к специалисту, который попросит за это приличное количество денег. Все считают, что справятся сами. Вот только настроить домашнюю сеть и публичную – это две разные вещи.
При самостоятельной настройке пользователи редко заходят дальше того момента, как у них начал работать вайфай. Они не обновляют роутеры, не закрывают возможность подключения из интернета, не ставят сложные пароли. Редко кто занимается настройкой фаерволла, блокировкой возможных проникновений, а также заботой об уязвимостях данной конкретной модели.
И еще много разных всяких «не». Вот и выходит, что часто такие самостоятельно настроенные сети взламываются, чуть ли не первым способом, найденным в интернете.
Простой человек не взломает их с первой попытки, но если есть опыт, то нет ничего сложного. Часть сетей ломают из любопытства, а не из злого умыла, но вам от этого не легче. Поэтому не стоит использовать публичные сети для передачи какой-то важной или конфиденциальной информации.
Постарайтесь не входить в банковские приложения и на другие подобные площадки.
В каких местах бывают публичные сети
Общий беспроводные сети располагаются в общественных местах, в которых человек проводит достаточно много времени. Это могут быть следующие заведения:
- торговый центр;
- гостиница;
- на вокзале;
- в аэропорту.
Также они находятся в местах, где связь с мобильной сетью плохая и вайфай становится единственным способом оставаться на связи. Таким мест не так уж и много, это Московский метрополитен и метро в СПб.
РЖД начало устанавливать точки доступа в поездах. Они часто проходят по тем местах, где нет мобильных вышек, так что это хорошее решение. Это относится и к поезду Ласточка, который быстро меняет свое положение, так что мобильная связь работает со сбоями из-за постоянной смены подключения к вышкам.
Не в каждом составе есть точка доступа, интернет доступен только в поездах со специальным знаком-логотипом Wi-Fi «Lastochka.Center».

Выбрать страницу для точки продаж
- В разделе «Маркетинг/Гостевой Wi-Fi» перейдите на вкладку «Страница входа».
- Наведите указатель мыши на сайт, нажмите
и выберите «Применить в точках продаж».
- Укажите точку продаж.
Если нет желания передавать персональные данные
Для авторизации по смс, звонку и электронной почте выход придуман давно. Есть сервисы, которые позволяют создать почту на один раз или арендовать номер на какое-то время. Таким образом, вы скроете на время свои личные данные, но удлините себе процесс входа в сеть.
Чтобы вообще не зависеть от публичных сетей, лучше купить мобильный тариф с большим запасом гигабайт. Там, где есть мобильная связь, он вас спасет. В остальных местах придется использовать публичные сети.
Вывод из всего это можно сделать такой: лучше пользуйтесь мобильной связью и домашними сетями, потому что неизвестно кто и как настраивал беспроводную сеть.
Авторизация осуществляется или сторонними сервисами или провайдерами, так что, за свои данные можете быть спокойны, они вряд ли куда-то уйдут. Это не помешает им самим присылать вам акции и другие рекламные предложения.
Идентификация по номеру телефона
Данный способ идентификации является наиболее распространённым, он не требует согласия по работе с персональными данными от пользователя Wi-Fi, как в случае использования паспорта, и не обязывает регистрироваться на сайте Госуслуг, для чего также необходим интернет, который пользователь пытается получить.
Последовательность действий пользователя для доступа к бесплатной сети Wi-Fi выглядит следующим образом:
- Абонент подключается к сети WiFi.
- Появляется приветственная страница заведения с информацией, что абонент должен открыть браузер и идентифицировать себя (на некоторых устройствах, например, iPhone, идентификация прямо с приветственной страницы не сохраняет cookie).
- В браузере, при переходе на любой URL, происходит переадресация абонента на страницу идентификации.
- Абонент вводит телефонный номер, запрашивает код доступа.
- Код доступа приходит на введенный номер телефона через SMS.
- Абонент вводит полученный код доступа на странице идентификации.
- Происходит запись сессионной cookie на абонентское устройство с сохранением в течение суток (это необходимо для повторного доступа в сеть без идентификации) и переход на запрошенный пользователем URL.
Владельцу заведения необходимо только установить и настроить оборудование Wi-Fi, подключить его к линии оператора связи и оплатить выбранный тарифный план. Работа по идентификации пользователя происходит на оборудовании оператора связи, как это происходит, рассмотрим на примере системы СКАТ от компании VAS Experts.
Используя e-mail или социальные сети
С этим разделом все понятно. Нажимайте на нужную кнопку, чтобы выбрать социальную сеть, а потом ждете подтверждения и входа в беспроводную сеть.

С таким способом есть одна проблема: требования законодательства она не выполняет. Это скорее способ собрать данные о почте и социальных сетях или накрутить себе подписчиков в группы. Если вам предлагают, то авторизуйтесь, только ждите, что ваши данные окажутся у них в руках, и вам будут предлагать все товары и акции.
Законным является этот способ в том случае, если социальная сеть передаст им ваш номер телефона.
Кто отвечает за идентификацию
Проводить идентификацию пользователя, регистрировать его устройство в сети и следить за временем рабочей сессии должен владелец заведения, предоставляющий доступ к открытой Wi-Fi сети. Ответственность и штраф (до 50 000 рублей для ИП и до 200 000 рублей для юридических лиц) за невыполнение требований постановления ложится также на него.
Существуют 3 основных способа организации идентификации:
- Установка специального оборудования (роутера, прокси-сервера) в сети Wi-Fi заведения. Такой способ чаще всего применяется владельцами гостиниц, где для идентификации гостя в сети используется номер комнаты, к которому привязаны его паспортные данные.
- Использование готового решения от фирмы посредника, которая предоставляет оборудование и сервис по идентификации по номеру телефона. Этот способ может применяться владельцами небольших кафе и ресторанов, но имеет ограничение по масштабированию и требует заключения отдельного договора и ежемесячной платы за сервис.
- Предоставление услуги идентификации оператором связи, с которым заключен договор на предоставление доступа в интернет. Наиболее универсальный и доступный вариант, так как не требует дополнительных затрат на оборудование, может оплачиваться по основному договору предоставления доступа к сети интернет и не имеет ограничений по числу абонентов бесплатного Wi-Fi.
Напомним, что идентификация может осуществляться тремя способами — по документу, удостоверяющему личность (паспорт, водительские права и т.д.), номеру мобильного телефона или учетной записи на сайте Госуслуг. Авторизация через социальные сети не отвечает требованиям Постановления и не является правомерной.
Настраиваем captive portal в linux
Разобравшись, как работает Captive Portal, легко реализовать его штатными средствами Linux. Причем доступно несколько способов — маркировка и блокировка пакетов, пришедших от неавторизованных пользователей, использование цепочки правил или шаманство с NAT.
Дополнительно на лету можно перенастраивать правила прокcи-сервера Squid или контент-фильтра DansGuardian, что позволит управлять выходом в интернет на уровне групп пользователей, да и просто кешировать и фильтровать информацию, блокируя доступ к нежелательным ресурсам. И кстати, именно такой подход применяется в специализированных дистрибутивах.
Для примера разберем вариант использования отдельной цепочки и DansGuardian. Первым делом создаем правила пакетного фильтра:
# Очищаем правила
ebtables -t broute -F
ebtables -F
# Переправляем пакеты, идущие к 80-му порту на стек iptables
ebtables -t broute -A BROUTING -p IPV4 --ip-protocol 6 --ip-destination-port 80 -j redirect --redirect-target ACCEPT
Не забываем разрешить специфические низкоуровневые протоколы:
ebtables -A INPUT -p ARP -j ACCEPT
ebtables -A FORWARD -p ARP -j ACCEPT
ebtables -A OUTPUT -p ARP -j ACCEPT
То же пишем и для LENGTH, и IPv4. Теперь создаем правила для iptables:
iptables -N captive
iptables -F captive
iptables -P FORWARD DROP
# Переправляем пакеты, идущие к порту 80, на 8080, где работает DansGuardian
iptables -t nat -I PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 8080
# Создаем цепочку для LAN
iptables -A FORWARD -s 192.168.1.0/24 -j captive
iptables -A FORWARD -d 192.168.1.0/24 -j captive
# Разрешаем локальный трафик (добавляем все необходимые сети)
iptables -I FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -I FORWARD -p udp -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -A captive -j RETURN
Не забываем разрешить ICMP, DNS, DHCP и прочие необходимые протоколы. Здесь, кстати, есть один важный момент: многие админы не заморачиваются и разрешают весь DNS-трафик. Этим пользуются некоторые юзвери для получения доступа в Сеть при помощи технологии DNS tunneling.
Конечно, итоговая скорость небольшая, но вполне достаточная, чтобы сидеть в аське, писать в твиттер или отдавать команды по SSH. И главное — при этом везде засветится IP твоей сети, а в логах какие-либо записи о несанкционированной деятельности будут отсутствовать, ведь не каждый админ пишет все запросы в журнал DNS-сервера. Поэтому лучше строго указать разрешенные серверы.
Настраиваем captive portal в zentyal
Если под Captive Portal выделяется новый сервер и все настройки нужно произвести в короткое время, то лучше обратиться к специализированным решениям, где все необходимое делается буквально парой нажатий клавиш. Яркий пример — серверный дистрибутив Zentyal, ориентированный на малые и средние корпоративные сети. Он может выступать в любой из четырех ролей сетевого шлюза, Office Server, сервера коммуникаций и инфраструктуры. Для поддержки Captive Portal следует во время установки активировать одноименный модуль (активируется роль Gateway и все сопутствующие пакеты). Затем в мастере первичной настройки правильно указываем на LAN-интерфейс. Создаем учетные записи пользователей и группы. Далее в интерфейсе настройки Zentyal переходим в меню Captive Portal и отмечаем в поле «Captive-интерфейсы» нужный, выбираем группу, участники которой будут иметь доступ, и указываем порт, на который будут перенаправляться пользователи. Вот и все. Теперь любой, кто желает подключиться к сети, вводит свои учетные данные, если аутентификация проходит успешно, появляется всплывающее окно, которое нужно держать открытым. Чтобы отключиться, достаточно нажать кнопку «Выйти» или просто закрыть окно браузера.
Если имеем шлюз, построенный на Ubuntu, то для установки связанных с Zentyal приложений проще использовать специальный репозиторий:
$ sudo add-apt-repository ppa:zentyal/3.0
$ sudo apt-get update
После чего команда sudo apt-cache search zentyal покажет более 20 модулей Zentyal.
iptables -I FORWARD -p tcp -s 192.168.1.0/24 -d 8.8.8.8/32 -j ACCEPT
iptables -I FORWARD -p udp -s 192.168.1.0/24 -d 8.8.8.8/32 -j ACCEPT
В принципе, на этот момент ничего особенного нет. Суть Captive Portal заключается в добавлении нужных правил на лету. Для этого понадобится скрипт, который будет получать IP/MAC и передавать их пакетному фильтру. Полностью HTML-страницу приводить здесь нет смысла, поэтому ограничимся ключевыми моментами с нужным функционалом. На странице, куда перенаправляется пользователь, должен быть следующий код, получающий IP- и MAC-адреса:
Настраиваем captive portal в zentyal
Если под Captive Portal выделяется новый сервер и все настройки нужно произвести в короткое время, то лучше обратиться к специализированным решениям, где все необходимое делается буквально парой нажатий клавиш. Яркий пример — серверный дистрибутив Zentyal, ориентированный на малые и средние корпоративные сети.
Он может выступать в любой из четырех ролей сетевого шлюза, Office Server, сервера коммуникаций и инфраструктуры. Для поддержки Captive Portal следует во время установки активировать одноименный модуль (активируется роль Gateway и все сопутствующие пакеты).
Затем в мастере первичной настройки правильно указываем на LAN-интерфейс. Создаем учетные записи пользователей и группы. Далее в интерфейсе настройки Zentyal переходим в меню Captive Portal и отмечаем в поле «Captive-интерфейсы» нужный, выбираем группу, участники которой будут иметь доступ, и указываем порт, на который будут перенаправляться пользователи. Вот и все.
Теперь любой, кто желает подключиться к сети, вводит свои учетные данные, если аутентификация проходит успешно, появляется всплывающее окно, которое нужно держать открытым. Чтобы отключиться, достаточно нажать кнопку «Выйти» или просто закрыть окно браузера.
Если имеем шлюз, построенный на Ubuntu, то для установки связанных с Zentyal приложений проще использовать специальный репозиторий:
$ sudo add-apt-repository ppa:zentyal/3.0
$ sudo apt-get update
После чего команда sudo apt-cache search zentyal покажет более 20 модулей Zentyal.

Настраиваем dhcp сервер
apt-get install isc-dhcp-server
nano /etc/default/isc-dhcp-server
#указываем, на каком интерфейсе будет слушать dhcp сервер
INTERFACES="eth1"
sudo nano /etc/dhcp/dhcpd.conf
# указываем
authoritative;
subnet 10.0.80.0 netmask 255.255.248.0 {
range 10.0.80.1 10.0.86.254;
option domain-name-servers 10.0.87.254;
option domain-name "wifi-free";
option subnet-mask 255.255.248.0;
option routers 10.0.87.254;
option broadcast-address 10.0.87.255;
default-lease-time 7200; #2h
max-lease-time 72000; #20h
}
/etc/init.d/isc-dhcp-server restart
Настраиваем nginx и php 5.6 fpm
Так как php обновилось до 7 версии и во всех репозитариях ubuntu уже лежит php7, то добавляем новый и ставим:
add-apt-repository ppa:ondrej/php
apt-get install php5.6-cli php5.6-common php5.6-mysql php5.6-gd php5.6-fpm php5.6-cgi php-pear
останавливаем установленный сервис и редактируем файлы настройки
service php5.6-fpm stop
nano /etc/php/5.6/fpm/php.ini
cgi.fix_pathinfo = 0
post_max_size = 200M
upload_max_filesize = 200M
nano /etc/php/5.6/fpm/pool.d/www.conf
security.limit_extensions = .php .php3 .php4 .php5
listen = /run/php/php5.6-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
service php5.6-fpm start
Можно убедится в том, что права доступа к сокету установлены верно:
ls -la /run/php/php5.6-fpm.sock
#srw-rw---- 1 www-data www-data 0 May 2 16:36 /run/php/php5.6-fpm.sock
Проверяем:
php -v
PHP 5.6.23-2 deb.sury.org~xenial 1 (cli)
Copyright (c) 1997-2022 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2022 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2022, by Zend Technologies
Переходим к Nginx
apt-get install nginx nginx-extras
Основные настройки Nginx хранятся в файле /etc/nginx/nginx.conf.
Настройки базового сайта хранятся в файле /etc/nginx/sites-available/default.
Базовый конфигурационный файл сайта принято помещать в папку /etc/nginx/sites-available/ и затем включить его путём добавления символической ссылки на этот файл в папке /etc/nginx/sites-enabled/.
Настраиваем php файлы обработки запросов и скрипты
Создаем таблицы в нашей базе данных:
SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE IF NOT EXISTS `mac-auth` (
`mac` char(17) NOT NULL COMMENT 'мак адрес устройства',
`code` int(6) NOT NULL COMMENT 'код авторизации',
`phone` varchar(15) NOT NULL DEFAULT '' COMMENT 'телефонный номер с которого пришло смс',
`updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'дата последнего изменения',
`created` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'дата создания',
UNIQUE KEY `mac` (`mac`),
KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `mac-ip` (
`mac` char(17) NOT NULL COMMENT 'мак адрес устройства',
`ip` varchar(15) NOT NULL COMMENT 'ip адрес устройства',
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'дата изменения',
KEY `mac` (`mac`),
KEY `ip` (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `mac-phone` (
`mac` char(17) NOT NULL COMMENT 'мак адрес устройства',
`phone` varchar(15) NOT NULL COMMENT 'номер телефона',
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'дата изменения',
KEY `mac` (`mac`),
KEY `ip` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `mac-ip`
ADD CONSTRAINT `mac` FOREIGN KEY (`mac`) REFERENCES `mac-auth` (`mac`) ON DELETE CASCADE ON UPDATE CASCADE;
SET FOREIGN_KEY_CHECKS=1;
создаем скрипт, при входе в систему, для проверки работы всех служб:
Настроить расписание
Задайте расписание для страниц авторизации. Например, чтобы по понедельникам при подключении к Wi-Fi появлялась одна страница, а в остальные дни другая.
- На вкладке «Страница входа» выберите точку продаж, наведите курсор на страницу авторизации и нажмите
.
- Кликните «Задать расписание» и укажите, когда показывать страницу.
- Выберите дату, день недели, число или месяц.
- Нажмите
.
Страница авторизации настроена. Посетители смогут подключиться к гостевой сети Wi-Fi. Количество подключений отразится в статистике.
Настройка captive portal в freebsd
Понимая, как работает пакетный фильтр, и владея навыками разработки на языке, используемом в веб, легко организовать Captive Portal в любой ОС. И *BSD здесь не исключение, причем реализация при помощи IPFW выглядит даже проще. Принцип остается тем же, что и ранее.
Все пакеты от неавторизованных пользователей блокируем и перенаправляем на веб-страницу. После того как гость подтверждает информацию, разрешаем выход в Сеть. Для удобства всю информацию об авторизованных IP будем сохранять в базу данных (в примере текстовый файл). Заносим в системный файл вроде /etc/rc.local (а лучше в отдельный, чтобы было легче искать) необходимые переменные:
# Файл с базой разрешенных IP
$db = "/tmp/session.db";
# IP-адрес и порт Apache
$gateway = "192.168.0.100,8080";
# Подсеть Wi-Fi
$wnet = "192.168.1.0/24";
# Проводная LAN
$pnet = "192.168.0.0/24";
# Список портов, которые необходимо блокировать и форвардить
$fwdports = "80,21,23,25,110,443";
# Группировка правил брандмауэра
$setnum = "set 5";
# Начальный номер правил для блокировки и форвардинга, желательно сделать число большим, чтобы не мешать текущим установкам
$fwdrulenum = "50000";
# Добавляем правило форвардинга
ipfw -q add $fwdrulenum $setnum fwd $gateway tcp from $wnet to any $fwdports
# Запрещаем выход с Wi-Fi в LAN (если нужно, конечно)
$denyrulenum = $fwdrulenum 1;
ipfw -q add $denyrulenum $setnum deny all from $wnet to $pnet
В веб-страницу добавляем следующий код. В примере пользователь в чекбоксе просто подтверждает некие условия, результат отправляется Perl-скрипту access.pl.

index.html
<form name="form1" method="post" action="access.pl">
<div align="center">
<input name="submit" type="submit" id="submit" value="I Agree">
</div>
</form>
Здесь Perl выбран исключительно для разнообразия, при желании можно переработать PHP-код, показанный выше. Сам скрипт:
Настройка оборудования
Для реализации схемы необходимо настроить оборудование оператора: систему DPI, DHCP-сервер, Web-сервер.
Настройка сети и форвардинг пакетов
Смотрим, какие у нас присутствуют сетевые карты и какие назначены им логические имена:
cat /proc/net/dev
В моем случае, это eth0 и eth1:
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 632643353 3624368 0 0 0 0 0 0 632643353 3624368 0 0 0 0 0 0
eth1: 8789521059 30492824 0 0 0 0 0 0 65843784529 28992970 0 0 0 0 0 0
eth0: 65798728800 56063700 0 0 0 0 0 0 8382628950 29920038 0 0 0 0 0 0
Редактируем файл настройки сетевых интерфейсов:
nano /etc/network/interfaces
auto eth0
iface eth0 inet static
# в сторону интернет шлюза
address 10.66.66.6
netmask 255.255.255.240
network 10.66.66.0
broadcast 10.66.66.15
gateway 10.66.66.1
dns-nameservers 10.66.66.1
auto eth1
iface eth1 inet static
# в сторону wifi пользователей
address 10.0.87.254
netmask 255.255.248.0
network 10.0.80.0
broadcast 10.0.87.255
Убедимся в том, что в системе действительно присутствуют IPv6 интерфейсы:
ip a | grep inet
Также можно увидеть, что некоторые приложения вывешивают TCP прослушиватели на интерфейсах IPv6. Посмотреть все прослушиваемые в системе порты можно командой:
sudo ss -lnptu | sort
Чтобы выключить поддержку IPv6 на всех сетевых интерфейсах сразу, открываем на редактирование файл sysctl.conf
sudo nano -Y sh /etc/sysctl.conf
В конец файла добавляем строки для включения форвардинга и отключения IPv6:
net.ipv4.ip_forward=1
net.ipv6.conf.all.disable_ipv6 = 1
Для проверки того, что наша опция сможет быть прочитана sysctl во время загрузки выполним:
sudo sysctl -p
/etc/init.d/networking restart
Настройка фаервола iptables
В данном разделе, нам требуется ограничить доступ к серверу и завернуть трафик на прокси. Для начала, настроим сохранение всех правил после перезагрузки:
apt-get install iptables-persistent ipset
так как в нашей задаче, нам необходимо, чтобы сохранялись и таблицы ipset, то немного правим следующий файл:
Необходимость авторизации
Идентификация пользователей Wi-Fi по паспортным данным или номеру телефона в общественных местах обязательна по закону (97-ФЗ от 05.10.2022 года, постановление правительства 758 от 31 июля 2022 г., № 801 от 12 августа 2022 г.).
Это сделано, чтобы ограничить использование бесплатных сетей для хакерских атак или другой незаконной деятельности. Было несколько историй насчет того, что кто-то через сети в кафе заходил на запрещенные сайты и заказывал там товары, занимался взломом чужих аккаунтов, подбором паролей или другими подобными вещами.
Проконтролировать все это при открытом вай-фае невозможно, как и отыскать человека, который все это делал. Он даже не обязан находится в пределах видимости, чтобы иметь возможность подключения.
Поэтому было принято решение ввести ограничения для публичных сетей, теперь они требуют авторизацию, а для подтверждения запрашиваются паспортные данные или подтверждение номера телефона.
По смс или звонку
Это распространенный способ, который стоит на большей части роутеров. Подключаетесь к вайфаю, входите в сеть и перед вами выскакивает окно с предложением авторизоваться. Соглашаетесь, после чего вам приходит SMS, из которой вводите код в поле.
Вместо сообщения может поступить звонок, а ввести надо последние несколько цифр его номера. Если все сработало правильно, то даже вводить ничего не надо, телефон сам перехватит сообщение и подставит цифры.
Иногда вам потребуется куда-то позвонить, чтобы подтвердить номер. Здесь не перепутайте, звоните с того номера, который указывали при подключении.

Получение доступа по паспорту или ваучеру
Доступ по паспорту уже давно не встречался лично мне в разных сервисах. Когда все только начиналось, у Ростелекома можно было ввести свои паспортные данные и получить доступ к интернету. Это длительный способ, так что его мало кто выбирает. Еще меньшее количество людей хочет отправлять свои паспортные данные непонятно кому.

Создать страницу авторизации
Страница авторизации содержит два экрана: экран входа и экран, который увидит пользователь после подключения к сети. Настройте их.
- В разделе «Маркетинг/Гостевой Wi-Fi» перейдите на вкладку «Авторизация» и в блоке «Сайты» нажмите
.
- Кликните поле шаблона и нажмите «Редактировать».
- Оформите экран: выберите фон, добавьте описание, рекламу или виджеты — пользователь увидит их при входе в сеть.
- Когда страницы сайта настроены, нажмите «Опубликовать».
Способы пройти авторизацию
Для подключения к сети вам потребуется подтвердить свою личность. Способов для этого есть несколько, первый из них – это по смс. Мобильный номер телефона зарегистрирован на человека, при его покупке берутся паспортные данные, так что это быстрый способ отследить входящего в сеть человека. Если понадобится, то и сам мобильный телефон есть возможность отследить.
Остальные способы связаны с подтверждением уже вашей личности. Где-то потребуется ввести паспортные данные, войти в аккаунт госуслуг, использовать какую-то из предложенных социальных сетей.
Способов много, так что стоит выбрать тот, что удобен вам в данный момент. Только не стоит слишком уж полагаться на надежность защиты вайфая и доверять ему все свои данные.
Ставим usb-redirector и модем
Так как, используется кластер под HyperV 2022R2, то возникает проблема, а именно как нам воткнуть модем. В нашей организации довольно успешно используется:
. Ставим его под Ubuntu
Схема идентификации оператором по номеру телефона
Помимо стандартного оборудования для предоставления доступа к сети интернет абонентам (коммутаторы, маршрутизаторы, граничный роутер, Wi-Fi точки доступа) оператор должен иметь:
Последовательность операций при работе по такой схеме:
- Абонентское устройство (смартфона, планшет, ноутбук) подключается к Wi-Fi роутеру заведения (та самая бесплатная сеть);
- Wi-Fi роутер обращается за новым IP к DHCP серверу оператора связи;
- При выдаче нового IP, DHCP сервер вызывает shell-скрипт, и передает данные на Wi-Fi роутер;
- Shell-скрипт по выданному IP активирует на СКАТ DPI услугу белый список и тариф с ограничениями доступа;
- WEB-сервер получает запрос на приветственную страницу, абонент активирует браузер и переходит на любой URL;
- WEB-сервер получает запрос на страницу идентификации (и проверяет cookie), абонент вводит телефонный номер и нажимает «получить код доступа»;
- WEB-сервер получает запрос на код доступа, формирует случайное число и отправляет на телефон абонента с помощью внешнего сервиса, абонент вводит в форму полученный код и нажимает «подтвердить»;
- WEB-сервер получает запрос на подтверждение кода доступа, если код правильный, вызывает shell-скрипт для удаления услуги белый список и установки тарифа Wi-Fi доступа, устанавливает cookie в браузере и переадресует на запрошенный URL.
Указать параметры авторизации
- В разделе «Маркетинг/Гостевой Wi-Fi» перейдите на вкладку «Страница входа».
- Выберите способ подключения:
- Укажите, какие номера могут использоваться: российские или любые.
- Выберите время сессии: 24 часа, 7 дней, 30 дней.
Устанавливаем sms-tools
Информацию о пакеты можно найти на
разработчика.
Устанавливаем и настраиваем:
apt-get install smstools
nano /etc/smsd.conf
находим строчку [GSM1]
[GSM1]
device = /dev/ttyUSB0
incoming = yes
baudrate = 9600
eventhandler = /var/www/sms_recieve.php
создаем файл обработчика входящих смс и делаем его исполняемым
nano /var/www/sms_recieve.php
chmod 755 /var/www/sms_recieve.php
service smstools restart
Установка mysql
В качестве сервера баз данных, выбрал MaridDB. По функционалу в чем-то даже лучше MySQL, но статья не об этом.
Установка squid с поддержкой ssl и отключением ipv6
Есть много статей, как собирать и устанавливать прокси, но этот этап оказался наверное самый муторный. По умолчанию, в репозитарии убунты лежит Squid без поддержки SSL. Решил пересобрать, и так прошло 2 дня… В итоге получился свой мануал, как собрать под x64 последнюю версию 3.5.20.
Ставим необходимый софт для сборки:
apt-get install git fakeroot checkinstall build-essential devscripts patch libssl-dev libgnutls28-dev
apt-cache policy squid3
apt-get update
apt-get build-dep squid3
Расcкомментируем репозитарии исходников и добавим новый:
Установка ubuntu server 16.04
Здесь все довольно банально:
- Создаем виртуальную машинку (2 ядра, 4 Гб памяти, 2 сетевых интерфейса, 30 Гб диск)
- Качаем последний дистрибутив, подключаем, ставим…
- Настраиваем сетевые интерфейсы, один смотрит в vlan сети wifi, второй в сторону шлюза
Через портал госуслуг
Такой способ авторизации ставят не все операторы, так что не удивляйтесь, если его не будет. Когда перед вами появится меню выбора варианта входа, то кликайте «Авторизоваться через Госуслуги» или на аналогичную надпись.

Заключение
Организовать точку доступа с различными вариантами использования не так уж и сложно. Выбор конкретного решения зависит от наличия времени на подготовку и желания копаться в настройках. Все представленные схемы можно легко развить до требуемого уровня.