BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 27 июн 2025, 21:29

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
СообщениеДобавлено: 15 мар 2010, 19:44 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
принимая во внимание эту схему
Код:
запрос -> скрипт предобработки -> антиспам (блокировка) -> биллинг (проверка наличия логина/пароля, баланса и т.д.) -> штатный Reject-To-Accept -> скрипт аутентификации -> антиспам (сбор стстистики) -> ответ

как можно сделать так чтобы при авторизации выполнить незамысловатую проверку и если логин не попадает под регексп - послать reject не доводя дальнейшие проверки до биллинга?
т.е. сократить схему до такой:
Код:
запрос -> скрипт предобработки -> ответ


пока получилось только так:
Код:
import bitel.billing.server.radius.*;
import java.util.*;

if (request.getPacketType() == RadiusPacket.AUTHENTICATION_REQUEST.intValue()) {

    login = request.getStringAttribute(RadiusStandartAttributes.User_Name);

    if (!login.matches("^foo|bar|baz$")) {
        request.setStringAttribute(RadiusStandartAttributes.User_Name, "");
    }
}

т.е. при авторизации, если логин не попадает под шаблон обнуляем логин и биллинг радостно сообщает что такого договора нет, а в идеале хотелось бы так:
Код:
import bitel.billing.server.radius.*;
import java.util.*;

if (request.getPacketType() == RadiusPacket.AUTHENTICATION_REQUEST.intValue()) {

    login = request.getStringAttribute(RadiusStandartAttributes.User_Name);

    if (!login.matches("^foo|bar|baz$")) {
        тут создать пакет и послать RadiusPacket.AUTHENTICATION_REJECT;
    }
}

т.е. вообще исключить внутренние проверки (уменьшить цикл и снизить нагрузку), но что-то не выходит :(
помогите, пожалуйста, или я хочу невозможного?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2010, 20:13 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
бамп


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 мар 2010, 15:18 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
В данный момент этот функционал можно реализовать только описанным вами способом..
Чтобы полноценно реализовать, надо наверное сделать возможность установки опции специальной в запрос, типа того: http://www.bgbilling.ru/v5.0/doc/ch03s08s01.html
И ошибку авторизации выдавать типа "Запрос отфильтрован".
А зачем вам это, опишите.. Что за там запросы посторонние?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 мар 2010, 21:36 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Администратор писал(а):
В данный момент этот функционал можно реализовать только описанным вами способом.

ок, так и будем делать ...

Администратор писал(а):
А зачем вам это, опишите.. Что за там запросы посторонние?

дело в том что есть большая сеть в которой юзеры считают что "перезвон" в РРРоЕ соединении больше 1 секунды - это моветон, но даже не это основная проблема ... основная проблема в том что правильные логин и пароль никто в соедиение не вбивает и получается что из этой сети ежесекундно приходит толпа запросов на авторизацию вида:
Код:
23 18:03:49
Type=AUTHENTICATION_REQUEST
Attributes:
User-Name=++++++++++
NAS-Identifier=mpd
User-Password=----------
NAS-IP-Address=xxx.yyy.zzz.10
NAS-Port=374
Tunnel-Medium-Type=
Service-Type=2
Tunnel-Client-Endpoint=00:21:85:ca:1c:ee
Framed-Protocol=1
Acct-Session-Id=9356629-909-374
NAS-Port-Id=vlan909
NAS-Port-Type=15
Calling-Station-Id=002185ca1cee
Called-Station-Id=
mpd-link=909-374

23 18:03:49
Type=AUTHENTICATION_REJECT
Process time auth: 6 common_auth: 1
Attributes:
Reply-Message=14

нет
Код:
User-Name=++++++++++
User-Password=----------

это не опечатка и не скрытие реальных данных - это кто-то себе забил именно такой логин и пасс! оттуда приходит масса подобных логинов, которые, в лучшем случае, являются именем машины в сети, а обычно - звездочки, плюсики и т.п. ерунда ... пока в mpd нет PPPoE Connection Throttling, хотя может быть будет, то приходится терпеть эти все запросы ... да, в БГБ есть антиспам, но антиспам в данном случае - это как из пушки по воробьям, IMHO ... дело в том что у меня все логины запросто попадают под регексп и если бы была возможность прямо в скрипте предобработки проверить логин регекспом и послать reject не доводя дело до антиспама, то общая производительность БГБ выросла бы, т.к. не пришлось делать лишних проверок ...

если позволите - выскажу маленький, совершенно мизерный, фичереквест - сделайте опцию в конфиге NAS-а
Код:
# тип разрешенных User-Name
nas.allowed.username="<regexp>"

и если User-Name не попадает под регексп (например в dialup - логин, в voip - телефон), то сразу слать reject, т.е. сведя все к схеме выше:
Код:
запрос -> скрипт предобработки -> ответ

тогда антиспам будет обрадатывать только нужные запросы, например защищая радиус от атак на перебор пароля и не будет заниматься пустыми атрибутами или атрибутами содержащими, пардон, ерунду ...
я полагаю у многих пользователей БГБ атрибут User-Name можно описать регекспом, как минимум таким
Код:
^[A-Za-z0-9]+$

ну или таким
Код:
^[\w\d]+$

что по сути одно и тоже ... ведь есть же список символов разрешенных в пароле (password.chars), так пусть будет список/регексп символов разрешенных в логине ;)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 мар 2010, 21:47 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
Поддерживаю, странные запросы авторизации со странными юзернеймами - весьма популярны и у меня

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 мар 2010, 20:20 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
традиционный бамп


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 апр 2010, 18:45 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
бамп


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 апр 2010, 20:31 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
можно? нельзя? скажите хоть что нибудь, пожалуйста


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 апр 2010, 12:42 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Ну традиционно дописал в TODO, а там уж как время будет :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 апр 2010, 07:46 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Цитата:
nas.allowed.username="<regexp>"


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 апр 2010, 08:53 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Кстати, у меня не работает команда
Код:
./radius.sh flush_script_cache

http://bgbilling.ru/v5.0/doc/ch03s08s01.html

Пока не перезагрузил радиус, новые скрипты предобрабоотки для NAS не применились.

Код:
version 5.0 build 265 from 31.03.2010 14:32:18


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 июн 2010, 21:34 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
бампну ка я тему пока 5.1 не зарелизили ...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.065s | 43 Queries | GZIP : On ]