forum.bitel.ru
http://forum.bitel.ru/

как послать reject из скрипта предобработки?
http://forum.bitel.ru/viewtopic.php?f=5&t=3717
Страница 1 из 1

Автор:  snark [ 15 мар 2010, 19:44 ]
Заголовок сообщения:  как послать reject из скрипта предобработки?

принимая во внимание эту схему
Код:
запрос -> скрипт предобработки -> антиспам (блокировка) -> биллинг (проверка наличия логина/пароля, баланса и т.д.) -> штатный 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;
    }
}

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

Автор:  snark [ 19 мар 2010, 20:13 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

бамп

Автор:  Администратор [ 23 мар 2010, 15:18 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

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

Автор:  snark [ 23 мар 2010, 21:36 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

Администратор писал(а):
В данный момент этот функционал можно реализовать только описанным вами способом.

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

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

дело в том что есть большая сеть в которой юзеры считают что "перезвон" в РРРоЕ соединении больше 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), так пусть будет список/регексп символов разрешенных в логине ;)

Автор:  Akhmat [ 23 мар 2010, 21:47 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

Поддерживаю, странные запросы авторизации со странными юзернеймами - весьма популярны и у меня

Автор:  snark [ 25 мар 2010, 20:20 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

традиционный бамп

Автор:  snark [ 02 апр 2010, 18:45 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

бамп

Автор:  snark [ 07 апр 2010, 20:31 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

можно? нельзя? скажите хоть что нибудь, пожалуйста

Автор:  Администратор [ 12 апр 2010, 12:42 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

Ну традиционно дописал в TODO, а там уж как время будет :)

Автор:  Cromeshnic [ 29 апр 2010, 07:46 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

Цитата:
nas.allowed.username="<regexp>"


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

Автор:  Cromeshnic [ 29 апр 2010, 08:53 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

Кстати, у меня не работает команда
Код:
./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

Автор:  snark [ 25 июн 2010, 21:34 ]
Заголовок сообщения:  Re: как послать reject из скрипта предобработки?

бампну ка я тему пока 5.1 не зарелизили ...

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/