Перейти к содержимому
Local

Рекомендованные сообщения

Всем привет!

 

Есть небольшая компания, которая хочет контролировать использование интернета своими сотрудниками (~30 пользователей). Авторизация пользователей по IP/MAC ненадежна. Поднятие PPPoE приведет к трудностям как для пользователей (надо "подключать" интернет), так и для админа (шлюз по умолчанию для пользователей после подключения PPPoE изменится и трафик пойдет через него => на сервере придется специальным образом обрабатывать доступ к внутренним ресурсам). squid-авторизация решает вопрос только для http-трафика и только если squid непрозрачный (а непрозрачный squid опять же геморрой для пользователей). Поэтому есть мысль использовать веб-авторизацию.

Значит идея следующая. Пишем для Stargazer новый модуль авторизации, который содержит в себе свой маленький https-сервер. Неавторизованный пользователь заходит на этот https-сервер и вводит там логин/пароль. Плагин аутентифицирует пользователя, и у последнего появляется интернет. Разлогинится можно на той же странице. Кроме того, после авторизации плагин помещает пользователя в специальный список и начинает следить за количетством потребляемого пользователем трафика. Если за последние N минут пользователь не потребил ни одного байта трафика, происходит автоматическое разлогинивание.

 

На шлюзе при этом настроен автоматический редирект неавторизованных пользователей, которые ломятся на любой 80-й порт, на эту страницу авторизации. В итоге для пользователей никаких дополнительных настроек - захотел в инет, заходишь на сайт, тебя редиректит на страницу логина, логинишься там, тебя редиректит обратно на сайт.

 

Я было собрался всё это запилить, но у меня странное ощущение, что задача-то вобщем не новая. Может быть есть какие-то типовые решения на этот счет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поднятие PPPoE приведет к трудностям как для пользователей (надо "подключать" интернет)

 

Пишем для Stargazer новый модуль авторизации

вы не логичны

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем привет!

 

Есть небольшая компания, которая хочет контролировать использование интернета своими сотрудниками (~30 пользователей). Авторизация пользователей по IP/MAC ненадежна.

у вас там корпорация хакеров которая ради пары лишних байт полезет менять себе мак ?:) Или чем она ненадёжна ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пропишите каждому пользователю МАК на порту свича. Или используйте opt82.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Captive portal в общем вы хотите. Круто че.

Несмотря на странноватую мотивацию про 30 юзеров и офисную сеть - идея вполне хорошая и будет востребована, хотя немного в другом ключе. Не так давно, чисто из интереса пилил такое на pfsense + radius - но работает на практике, это мягко говоря странновато. Свое родное - было бы на порядок круче и не требовало бы двух раздельных тазов.

 

P.S. а почему именно свой вебсервер тащить? Можно же сделать обертку над урезанным консольным авторизатором - это должно на порядок упростить реализацию, не?

Изменено пользователем nightfly

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Плюсану по поводу внешнего веб-сервера. А авторизацией можно рулить через Always Online.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
. А авторизацией можно рулить через Always Online.

Какраз нехорошо, ибо насколько помню auth_ao не совместим с айпишками в виде *, или через запятую. Там по духу однозначно auth_ia в контексте хотспото-образности ближе.

Изменено пользователем nightfly

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так можно ж предварительно конфигуратором пнуть чтобы айпиху запилить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Так можно ж предварительно конфигуратором пнуть чтобы айпиху запилить.

Ну да, это было бы вполне извращением в моем стиле :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сердечно благодарю за мнения!

 

Я таки почти одумался и вернулся к рассмотрению варианта с привязкой IP/MAC.

 

аторизатор старгейзера не канает ?

Авторизатор старгейзера хорош, но опять же дополнительное ПО на конечных машинах.

 

Пропишите каждому пользователю МАК на порту свича. Или используйте opt82.

+, но по условиям задачи у нас неизвестно какие свичи.

 

Captive portal в общем вы хотите. Круто че.

ВО! Я теперь знаю, по какому слову гуглить. Спасибо! :)

 

P.S. а почему именно свой вебсервер тащить? Можно же сделать обертку над урезанным консольным авторизатором - это должно на порядок упростить реализацию, не?

+, а ещё я внезапно вспомнил про CGI.

Но вообще изначально хотел заюзать вот это: https://www.gnu.org/software/libmicrohttpd/Вроде как раз для этих целей. Не C++ правда, но.

 

Плюсану по поводу внешнего веб-сервера. А авторизацией можно рулить через Always Online.

Always online как-раз не очень по причинам, озвученным нашим пытателем единорогов. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не понимаю, почему так много критики

у меня уже несколько лет сделано так:

есть "небольшой веб-сервер" на перле, который сидит на 81 порту. для неавторизированных пользователей - редирект с 80 и 443 порта на 81

веб сервер отдает одну страничку: введите имя-пароль и "включен постоянно"

если "включен постоянно", то запоминаем ИП+МАК и в дальнейшем веб-сервер при появлении трафика от абона автоматом включает его

по крону периодически проверяю трафик абона, если долгий простой - то выключаем через sgconf

вначале пробовал динамические адреса: устанавливал ИП перед включением, потом остановился на статических

 

работает - проблем особых нет

сеть: 1,5к абонов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
не понимаю, почему так много критики

Позырил в календарик, и О УЖАС - 2015-й год на дворе. Давно существуют более приемлемые и вменяемые способы ААА для абонентов.

Кэптив обертки имеют смысл только в вот таких вот публично-офисно-хотспотных решениях, ну или где динамикой сильно пахнет.

 

 

 

по крону периодически проверяю трафик абона, если долгий простой - то выключаем через sgconf

Сами догадаетесь, почему это стремота-стремная, или намекнуть?

 

 

работает - проблем особых нет

сеть: 1,5к абонов

Я не знаю что можно сделать, при таком размере абонбазы, чтобы что-то не работало.

Изменено пользователем nightfly

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

...

работает - проблем особых нет

сеть: 1,5к абонов

Ad-hoc решения всегда для кого-то работают. А представьте что у вас 10 сетей в пяти городах и трех странах, физики/юрики, схемы тарификации разные...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

  • Похожие публикации

    • Автор: ppv
      Підкажіть будь ласка яким чином генерується Платіжний ID, а це в мене в деяких абонентів 10 цифр а в деяких 9?
       
       
    • Автор: ppv
      В 79 строці файлу https://github.com/nightflyza/Ubilling/blob/master/openpayz/frontend/ipayx/index.php
      79   $customerId = $transactionInfo->acc;
      Так не працює, але якщо acc замінити на order тоді все гуд.
    • Автор: pavlabor
      Почитал вопросы возникающие вокруг работы ubilling и понял что проблемы связаны с архитектурой  Stargazer
      Насколько я понял проблем очень много, некоторые из них.
      Stargazer работает с базой в памяти и при параллельной работе с базой возникают конфликты с работой, например с внесением оплаты другим приложением.
      При остановке Stargazerа или биллинга идет сбой работы Насов.
      Текущая архитектура может стать ограничением по количеству возможно обслуживаемых клиентов.
       
      Проблемы не все, но этих достаточно чтобы задуматься о альтернативе написания эмулятора  Stargazer-а.
      Мое понимание, эмулятор должен выглядеть как модуль, который можно включить или выключить, или выбор работы или через Stargazer, или через внутренний модуль.
       
      Приветствуется любая критика и предложения,
      помощь в консультации и программировании.
      Спонсирование заинтересованных сторон, приветствуется.
    • Автор: ppv
      Скидочные средства начисляются по каждому позитивному платежу за текущий месяц при помощи вызова discountprocessing из API удаленного вызова. Так все працює. питань нема.
      Все это выглядит с точки зрения движения средств следующим образом:
       
      Попри те що працює, в "Рух коштів", не відображається строки скидок.
      В кого відображається ?
    • Автор: har_hayk
      Добрый день .
      Пожалуста помагите разабраться 
       
      Есть работаюшй Ubilling+NAS , NAS1 rscriptd, NAS2 rscriptd
      Недавно добавил еше одиу подсеть на (Ubilling+NAS) 
      Проблема заключаеться в том , что когда регестрирую новово ползовотеля , или меняю IP уже зарегистрировонному ползовотелю , все получают IP из нового пула но не всех пускает в инет 
      подскажите пожалуста где можно копать :
      P.S   Прастите за мой рускый ... 
       
      Железо 
      HP ProLiant DL 360 G7 , 32 GB RAM , 300 GB 10K SAS RAID 1 , 4 гигабитних интерфейса 
       
      $ /etc/rc.conf 
      hostname="..............."
      # maneg interface 
      ifconfig_em0="inet 192.168.2.2 netmask 255.255.255.0 -rxcsum -txcsum -tso"
      # LAN 
      ifconfig_bce0="inet 10.100.10.1 netmask 255.255.254.0 -rxcsum -txcsum -tso"
      # Unknown users network
      ifconfig_bce0_alias0="inet 10.5.0.1 netmask 255.255.240.0"
      #ifconfig_bce1="inet 10.0.0.1 netmask 255.255.255.0 -rxcsum -txcsum -tso"
      # WAN
      ifconfig_bce3="DHCP"
      sshd_enable="YES"
      gateway_enable="YES"
      # Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
      dumpdev="AUTO"
      # ====== added by UBinstaller ====
      gateway_enable="YES"
      #all needed services
      mysql_enable="YES"
      apache24_enable="YES"
      dhcpd_enable="YES"
      dhcpd_flags="-q"
      dhcpd_conf="/usr/local/etc/multinet/dhcpd.conf"
      dhcpd_ifaces="bce0"
      ubilling_enable="YES"
      ubilling_flags="bce0"
      #netflow sensor
      softflowd_enable="YES"
      softflowd_interfaces="bce0"
      softflowd_bce0_collector="127.0.0.1:42111"
      #optional services
      memcached_enable="NO"
      memcached_flags="-l 127.0.0.1 -m 64"
      radiusd_enable="NO"
      # ==========
      #access/shape/nat
      firewall_enable="YES"
      firewall_nat_enable="YES"
      dummynet_enable="YES"
      firewall_script="/etc/firewall.conf"
       
      $ /etc/firewall.conf
       
      #!/bin/sh
      # firewall command
      FwCMD="/sbin/ipfw -q"
      ${FwCMD} -f flush
      # Interfaces setup
      LAN_IF="bce0"
      WAN_IF="bce3"
      # Networks define
      ${FwCMD} table 2 add 10.100.10.0/23
      ${FwCMD} table 9 add 11.11.11.103/32
      #NAT
      ${FwCMD} nat 1 config log if ${WAN_IF} reset same_ports redirect_port tcp 10.100.10.163:34568 34568\
                              redirect_port tcp 10.100.10.45:8001 8001\
                              redirect_port tcp 10.100.10.45:88 88\
                              redirect_port tcp 10.100.10.187:8005 8005\
                              redirect_port tcp 10.100.10.186:6001 6001\
                              redirect_port tcp 10.100.10.90:34568 34568\
                              redirect_port tcp 10.100.10.86:37779 37779
      ${FwCMD} add 6000 nat 1 ip from table\(2\) to not table\(9\) out xmit ${WAN_IF}
      ${FwCMD} add 6001 nat 1 ip from any to me in recv ${WAN_IF}
      #Shaper - table 4 download speed, table 3 - upload speed
      ${FwCMD} add 12001 pipe tablearg ip from any to table\(4\) via ${LAN_IF} out
      ${FwCMD} add 12000 pipe tablearg ip from table\(3\) to any via ${LAN_IF} in
      # default block policy
      ${FwCMD} add 65533 deny all from table\(2\) to any via ${LAN_IF}
      ${FwCMD} add 65534 deny all from any to table\(2\) via ${LAN_IF}
      ${FwCMD} add 65535 allow all from any to any
      #unknown users redirect
      ${FwCMD} add 5 fwd 127.0.0.1,80 ip from 10.5.0.0/20 to not me dst-port 80
      ${FwCMD} add 6 allow udp from any 67,68 to any
      ${FwCMD} add 7 allow udp from any to any 67,68
       
      $ ipfw show 
       
      00005        0           0 fwd 127.0.0.1,80 ip from 10.5.0.0/20 to not me dst-port 80
      00006     4527     1867168 allow udp from any 67,68 to any
      00007        0           0 allow udp from any to any dst-port 67,68
      06000 21098492  2597744449 nat 1 ip from table(2) to not table(9) out xmit bce3
      06001 41121017 54772766168 nat 1 ip from any to me in recv bce3
      12000 21452104  2612722452 pipe tablearg ip from table(3) to any via bce0 in
      12001 41106700 54771024098 pipe tablearg ip from any to table(4) via bce0 out
      65533        1          52 deny ip from table(2) to any via bce0
      65534        0           0 deny ip from any to table(2) via bce0
      65535 10817267  9901546979 allow ip from any to any
       
      $ ipfw table 2 list 
      --- table(2), set(0) ---
      10.100.10.0/23 0
      $ ipfw table 9 list
      --- table(9), set(0) ---
      11.11.11.103/32 0
       

       
       
×