- Разбираю, как поднять собственный HotSpot
- Разворачиваем Wi-Fi HotSpot с использованием технологии Captive Portal
- Содержание статьи
- WARNING
- Как работает Captive Portal
- Настраиваем Captive Portal в Linux
- Настраиваем Captive Portal в Zentyal
- Настройка Captive Portal в FreeBSD
- Captive Portal на Windows
- Заключение
Разбираю, как поднять собственный HotSpot
Играясь с настройками комбайна по имени Mikrotik я наткнулся на такую впервые для меня ничего не значащую настройку, а именно именуемую, как HotSpot.
По первому поиску информации на этот счет в интернете я составил для себя первое впечатление, как я себе это представляю, а именно:
- Возможность создать страницу на которой идентифицировавшись можно получить доступ к интернету или закрытой локальной сети.
- Есть возможность управлять удаленными клиентами в плане скорости работы с интернетом или закрытой локальной сетью.
- Есть возможность управлять временем подключения.
И вот такой функционал меня заинтересовал и я приступаю к ее пошаговому воплощению:
В роли ][отспота у меня будет выступать железка: Mikrotik RB951Ui-2HnD (mipsbe), v6.36
План настройки следующий:
- Сброс всех настроек и обновление пакетов и firmware до самого актуального состояния на момент написания данной заметки.
- Идентифицирую железку: System — Identity
- Настраиваю SNTP клиент для получения точного времени: System — SNTP Client — и активируем отметив галочкой Enabled
- В настройках активирую, что интернет будет подавать на 2 порт (IP — DHCP Client — Add — и выбираю второй интерфейс, ether2, у меня IP-адрес полученный от DHCP сервера 10.7.8.153/23; DHCP Options = Hostname).
- В настройках активирую, что DNS адреса брать из сети (хотя можно указать и принудительно: IP — DNS, также не забываем отметить галочкой Allow Remote Requests). Затем проверяю, что данный Mikrotik видит всемирную паутину — открываю New Terminal
[admin@MikroTik] > ping interface=ether2 ya.ru
SEQ HOST SIZE TTL TIME STATUS
0 213.180.193.3 56 55 5ms
1 213.180.193.3 56 55 5ms
sent=2 received=2 packet-loss=0% min-rtt=5ms avg-rtt=5ms max-rtt=5ms
- Теперь создаю отдельно стоящий Bridge интерфейс (который будет представлять из себя отдельную подсеть, дабы подключившиеся к нему через Wifi были изолированы от рабочей сети) и присваиваю ему к примеру вот такой вот IP-адрес:
winbox — ip&mac — user&pass — Bridge — Add , все параметры оставляю дефолтными и не забываю после нажать Apply & OK.
После переходим во вкладку Ports окна Bridge и в созданный интерфейс объединяем интерфейс wlan1:
winbox — ip&mac — user&pass — Bridge — Ports — Add,
Interface: wlan1
Bridge: bridge1
и не забываем активировать внесенные изменения нажатием Apply & OK.
winbox — ip&mac — user&pass — IP — Addresses — Add ,
Address: 10.5.50.1/24
Interface : выбираю только что созданный интерфейс Bridge1 и также не забываю нажать Apply & OK.
А вот теперь уже можно переходить собственно к самому процессу поднятия HotSpot на Mikrotik‘е:
- winbox — ip&mac — user&pass — IP — HotSpot , задействую мастер Hotspot Setup
- HotSpot Interface: bridge1
- Local Address of Network: 10.5.50.1/24
и отмечаю галочкой: Masquerade Network (Необходимые правила в настройках Firewall активируются мастером).
- Address Pool of Network: 10.5.50.2-10.5.50.254
- Select Certificate: none
- IP Address of SMTP Server: 0.0.0.0
- DNS Servers: 10.5.50.1
- DNS Name: hotspot.polygon.local (Можно и не указывать вообще ничего)
- Name of Local HotSpot User: ekzorchik
- Password for the User: 712mbddr@
На заметку: В последствии можно на создавать специальных пользователей кому разрешен доступ к интернету.
и если после нажатия на кнопку Next — Вы видите окно с надписью «Setup has completed successfully» значит Вы на правильном пути, профиль HotSpot успешно создан.
После все также находясь в окне HotSpot, выделяю сформированную конфигурацию hotspot1, а затем нажимаю кнопку Reset HTML (и соглашаюсь с вопросом: Current html pages will be lost! Reset anyway? — Yes) дабы подгрузить дефолтную страницу приветствия для новых клиентов которые будут подключаться к данной точке доступа.
После переходим во вкладку Server Profile окна HotSpot, находим созданный шагами выше профиль именуемый, как hsprof1 и открываем его. В самой первой вкладке General проверяем что поля записей присутствуют:
- DNS Name: hotspot.polygon.local → адрес где будет располагаться страница приветствия.
- HTML Directory: hotspot — путь где находится сама страница, посмотреть где именно она лежит и что представляет из себя можно обратившись в элемент Files самой железки.
На заметку: раз сама страница hotspot это обычный html, то его можно и подредактировать, к примеру добавить собственный логотип организации, цвета, текст приветствия. Конечно об это я как нибудь в другой раз поговорю.
После переходим во вкладку Login окна HotSpot, данные настройки говорят как будет происходить взаимодействие пользователя с точкой доступа в частности авторизации:
- HTTP CHAP — аутентификация по нажатию кнопки сайта
- Cookie — авторизация на HotSpot через сохраненную куку.
- Trial — лимит времени использования бесплатного Wifi.
- Trial Uptime Limit — время на которое предоставляется доступ к интернету
- Trial Uptime Reset — время через которое пользователь может снова начать пользоваться интернетом.
(По дефолту: пользователь может использовать интернет 30 минут, а потом только через одни сутки он сможет подключиться и пользоваться бесплатным интернетом)
Как только все что Вам необходимо изменено не забываем активировать внесенные изменения нажатием кнопок: Apply & OK.
После переходим во вкладку User Profile окна HotSpot, открываем дефолтные настройки профиля Default, в данном профиле я задаю ограничение на использование полосы пропускания:
Rate Limit (rx/tx): 1М/1М
после не забываем активировать внесенные изменения нажатием кнопок: Apply & OK.
И так настройки HotSpot более или менее понятны и они завершены в рамках данной заметки, теперь же нужно настроить само радиовещание через интернет, для этого переходим к окну настройки Wireless:
winbox — ip&mac — user&pass — Wireless
заострять внимание на повторе шагов настройки я не буду, об этом у меня уже есть подробная заметка и заметка ограничения доступа из Wifi сети к локальной сети которую также необходимо будет проделать.
А что теперь, а ничего все сделано, как и планировалось, т. е. Я на своем мобильнике (Sony Xperia ZL) подключаюсь к сети test, затем запускаю привычным браузер (Firefox), в строке URL ввожу к примеру свой блог у меня экран «Войти в сеть» — где в строке адреса URL на авторизацию и окно ввода логина (login) и пароля (password) и на заднем фоне красуется надпись что hotspot поднят на оборудовании Mikrotik. В моем случаем введя идентификационные данные и нажав OK я попадаю на запрошенную страницу своего блога да и вообще к доступу использования интернета. Проверив через мобильник текущую скорость посредством сайта 2ip.ru все так и есть, как и задумано — моя скорость интернета ограничена: Входящая ( 0,97Мбит/с ), а Исходящая ( 0,90Мбит/с ).
На Mikrotik во вкладке Hosts окна Hotspot отображаются все те кто прошел аутентификацию на странице или те кто авторизовался по логину и паролю выданному системным администратором, выделив необходимого удаленно подключившегося его можно разъединить и ему придется заново вводить идентификационные данные или, если задействуется авторизация через Cookie, авторизация произойдет автоматически.
Вот теперь я знаю еще чуточку больше, главное верить в себя и все получится. Теперь могу если потребует того руководством по быстрому развернуть для клиентов точку доступа с использованием единого центра входа, а выдачей доступа будет заведовать сотрудница в баре по просьбе клиентов которые хотят в процессе ожидания ремонта своего автомобиля не только скоротать время за чашечкой кофе, но и посерфить. Вот как то так, на этом я прощаюсь с Вами, до новых заметок на моем блоге, с уважением автор блога — ekzorchik.
Источник
Разворачиваем Wi-Fi HotSpot с использованием технологии Captive Portal
Содержание статьи
При организации гостевого подключения к интернету в конференц-залах, публичных библиотеках и кафе особое внимание следует уделить обеспечению безопасности и максимально простой аутентификации. Технология под названием Captive Portal призвана в этом помочь.
WARNING
Администраторы точек доступа обычно разрешают все DNS-запросы из внутренней сети во внешнюю. Это можно использовать для несанкционированного выхода в интернет при помощи технологии DNS tunneling, реализованной в таких решениях, как Dnscat, Ozyman, NameServer Transfer Protocol (NSTX), Dns2tcp, и других.
Как работает Captive Portal
Все пользователи, которые хотят подключиться к публичной Wi-Fi-сети и выйти в интернет, вначале проходят через шлюз, который представляет собой комп с несколькими сетевыми интерфейсами. Шлюз действует как маршрутизатор и брандмауэр, а для возможности авторизации пользователя при помощи браузера он содержит еще и веб-сервер. Для аутентификации клиентов может использоваться внутренняя база данных или внешний RADIUS-сервер. Все пакеты от «неавторизованных» пользователей помечаются на брандмауэре, и посетитель переправляется на специальную веб-страницу (Captive Portal), где он может ознакомиться с условиями подключения и ввести логин/пароль (либо код доступа). После аутентификации пользователя производится идентификация компьютера, за которым он работает, его МАС- и IP-адреса заносятся в белый список брандмауэра. В самом простом случае пользователь может вообще не проходить аутентификацию, Captive Portal автоматически получает IP- и MAC-адреса компьютера, которые сразу подставляются в правилах брандмауэра. В последующем все пакеты проходят через маршрутизатор без ограничений. Дополнительно, в зависимости от роли, могут устанавливаться ограничения по скорости, времени, трафику или посещаемым ресурсам.
В настоящее время существует несколько проектов, позволяющих быстро развернуть Captive Portal: Wifidog, PacketFence, ChilliSpot и веб-интерфейс EasyHotspot, KATTIVE, PepperSpot и jkaptive. Выбор конкретного решения зависит от необходимых функций и поддерживаемых ОС. Например, ChilliSpot официально поддерживает несколько дистрибутивов Linux, FreeBSD, OpenBSD и OpenWRT. К слову, это единственное приложение, пакет которого доступен в официальном репозитории Ubuntu, и установить его просто:
Для организации простого портала без поддержки внешних средств аутентификации хватит и решения вроде jkaptive, а вот чтобы разобраться со всеми возможностями, заложенными в PacketFence, потребуется некоторое время. Некоторые из представленных проектов уже прекратили свое развитие, но все наработки по-прежнему актуальны. Также можно найти модули для различных языков, позволяющие самостоятельно создать Captive Portal из подручных средств. Например, для Perl он так и называется — Captive::Portal, есть модуль для Python/Django tollgate.org.au.
Кроме этого, ряд дистрибутивов-роутеров предлагает возможность быстрого создания Captive Portal буквально парой щелчков мышки: Untangle, pfSense, Zeroshell, m0n0wall, ClearOS и Zentyal. Но при желании или если невозможно изменить текущую конфигурацию сети нужные скрипты легко создать самостоятельно. Этим мы и займемся.
Настраиваем Captive Portal в Linux
Разобравшись, как работает Captive Portal, легко реализовать его штатными средствами Linux. Причем доступно несколько способов — маркировка и блокировка пакетов, пришедших от неавторизованных пользователей, использование цепочки правил или шаманство с NAT. Дополнительно на лету можно перенастраивать правила прокcи-сервера Squid или контент-фильтра DansGuardian, что позволит управлять выходом в интернет на уровне групп пользователей, да и просто кешировать и фильтровать информацию, блокируя доступ к нежелательным ресурсам. И кстати, именно такой подход применяется в специализированных дистрибутивах.
Для примера разберем вариант использования отдельной цепочки и DansGuardian. Первым делом создаем правила пакетного фильтра:
Не забываем разрешить специфические низкоуровневые протоколы:
То же пишем и для LENGTH, и IPv4. Теперь создаем правила для iptables:
Не забываем разрешить 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 apt-cache search zentyal покажет более 20 модулей Zentyal.
Выбираем пакеты для установки Captive Portal в Zentyal
В принципе, на этот момент ничего особенного нет. Суть Captive Portal заключается в добавлении нужных правил на лету. Для этого понадобится скрипт, который будет получать IP/MAC и передавать их пакетному фильтру. Полностью HTML-страницу приводить здесь нет смысла, поэтому ограничимся ключевыми моментами с нужным функционалом. На странице, куда перенаправляется пользователь, должен быть следующий код, получающий IP- и MAC-адреса:
При необходимости добавляем поле для проверки логина и пароля, нужные примеры легко найти в интернете. Далее в этом же скрипте подставляем полученные данные в правила iptables и DansGuardian, после чего перезапускаем последний:
После подключения клиента запись в /etc/dansguardian/lists/authplugins/ipgroups будет выглядеть так:
Параметр filter1 указывает на группу фильтров, так мы можем устанавливать специфические настройки для всех пользователей, подключающихся посредством Captive Portal. При необходимости так же легко в DansGuardian подставляется и логин пользователя, для реализации индивидуальных правил. Не забываем разрешить фильтр IP в dansguardian.conf:
Так как используемые системные команды может выполнять только root, немного подправим sudoers, чтобы их мог запускать и веб-сервер:
Новые правила iptables, появляющиеся в Zentyal после активации Captive Portal
Вот мы и реализовали простейший Captive Portal. Если хотспот будет работать сутками, следует побеспокоиться, чтобы через некоторое время таблица очищалась. Здесь можно придумать несколько вариантов. Например, параллельно создавать задание для cron, которое будет срабатывать через определенное время, убирая правило. Другой вариант — прописывать данные сессии в отдельный файл, а затем при помощи cron или при каждом вызове PHP-скрипта анализировать время создания файла и удалять устаревшие записи. В Zentyal, например, после регистрации пользователя открывается отдельное окно, а в каталоге /var/lib/zentyal-captiveportal/sessions создается файл, содержащий все данные сессии (IP- и MAC-адрес). Как только пользователь закрывает Popup, вся информация и правила очищаются.
Интерфейс настройки Captive Portal в pfSense
Настройка Captive Portal в FreeBSD
Понимая, как работает пакетный фильтр, и владея навыками разработки на языке, используемом в веб, легко организовать Captive Portal в любой ОС. И *BSD здесь не исключение, причем реализация при помощи IPFW выглядит даже проще. Принцип остается тем же, что и ранее. Все пакеты от неавторизованных пользователей блокируем и перенаправляем на веб-страницу. После того как гость подтверждает информацию, разрешаем выход в Сеть. Для удобства всю информацию об авторизованных IP будем сохранять в базу данных (в примере текстовый файл). Заносим в системный файл вроде /etc/rc.local (а лучше в отдельный, чтобы было легче искать) необходимые переменные:
В веб-страницу добавляем следующий код. В примере пользователь в чекбоксе просто подтверждает некие условия, результат отправляется Perl-скрипту access.pl.
Мастер настройки Antamedia HotSpot
Здесь Perl выбран исключительно для разнообразия, при желании можно переработать PHP-код, показанный выше. Сам скрипт:
Создание тарифного плана в Antamedia HotSpot
При желании дополняем скрипт проверкой МАС-адреса и перестройкой правил прокси-сервера. Вызвав функцию time(), мы также можем сохранить время соединения (в секундах), которое затем использовать для сброса старых соединений.
Captive Portal на Windows
Организовать Captive Portal на Windows штатными средствами проблематично из-за особенностей работы брандмауэра (который, кстати, начал контролировать исходящие соединения только с Vista), поэтому в любом случае придется обращаться к сторонним решениям. Выбор здесь не особенно велик — DNS Redirector, FirstSpot, PacketFence, myWIFIzone, работает под WinXP/2k), Wifidog и Antamedia HotSpot. Из них бесплатны PacketFence и Wifidog. Первый требует некоторой подготовки, а используемые во втором компоненты, такие как Apache, PHP, PostgreSQL, удобнее разворачивать на *nix-системе.
Из перечисленных наиболее функционален Antamedia HotSpot, который позволяет организовать свободный и предоплаченный доступ (по трафику, времени или скорости), управлять пропускной способностью, гарантируя нужную скорость разным клиентам, блокировать нежелательные сайты, получать статистику и многое другое. Развертывание Antamedia HotSpot не представляет особой сложности, в режиме простой установки все компоненты (хотспот, интерфейс оператора и база данных) устанавливаются на один компьютер. Разобраться с первоначальными установками помогает визард, интерфейсы настраиваются автоматически, пользователь может также выбрать внешний вид страницы регистрации. Дальнейшее управление производится при помощи понятного интерфейса.
Заключение
Организовать точку доступа с различными вариантами использования не так уж и сложно. Выбор конкретного решения зависит от наличия времени на подготовку и желания копаться в настройках. Все представленные схемы можно легко развить до требуемого уровня.
Источник