Биллинговая система Nodeny

Главная категория => Nodeny 50 => Тема начата: goletsa от 12 Октября 2009, 12:17:52



Название: Вытаскивание маков юзеров из радиус запросов.
Отправлено: goletsa от 12 Октября 2009, 12:17:52
В логе радиуса пишутся такие параметры как мак и интерфейс пппове сервера:
Например:
Код:
Mon Oct 12 00:00:00 2009
        Service-Type = Framed-User
        Framed-Protocol = PPP
        NAS-Port = 17315
        NAS-Port-Type = Ethernet
        User-Name = "c-08-1372"
        Calling-Station-Id = "00:08:54:04:6A:20"
        NAS-Port-Id = "vlan6_obj"
        Acct-Session-Id = "818016ef"
        Framed-IP-Address = 10.5.251.191
        Acct-Authentic = RADIUS
        Event-Timestamp = "Oct 11 2009 23:59:47 MSD"
        Acct-Session-Time = 550
        Acct-Input-Octets = 916728
        Acct-Input-Gigawords = 0
        Acct-Input-Packets = 6394
        Acct-Output-Octets = 7974217
        Acct-Output-Gigawords = 0
        Acct-Output-Packets = 8032
        Acct-Status-Type = Interim-Update
        NAS-Identifier = "MikroTik"
        NAS-IP-Address = 192.168.0.10
        Acct-Delay-Time = 0
        Client-IP-Address = 192.168.0.10
        Acct-Unique-Session-Id = "fc01597bc77c3744"
        Timestamp = 1255291200

А можно ли както сделать чтобы при логине юзера по пппое в отдельную таблицу писались login\mac\nas-address?

В теории в недалеком будущем бы хотелось чтобы писалось например в отдельное поле таблицы dopdata...


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Efendy от 12 Октября 2009, 20:41:32
А можно ли както сделать чтобы при логине юзера по пппое в отдельную таблицу писались login\mac\nas-address?

Да, в sql.conf в authorize_check_query предусмотреть передачу параметра Calling-Station-Id
а процедуре radcheck записать в нужную таблицу


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: serojperoj от 13 Октября 2009, 13:11:12
переделал чуток radcheck();
если комуто надо - привязка user+pass+MAC(только тех клиентов у кого в доп. поле указан MAC Address)

если кто-то сделал что-то вроде этого - просьба поделитесь =) так-как в мускуле я совсем новенький и уверен что есть иной более грамотный вариант этого скрипта.


Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$  
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
BEGIN
  SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'==' AS Op
  FROM users WHERE name=login;
IF ((SELECT dopdata.field_value FROM users,dopdata WHERE dopdata.parent_id=users.id
  AND dopdata.template_num=1 AND dopdata.field_alias='_mac' AND users.name=login
  ORDER BY dopdata.revision DESC LIMIT 1) <> '') THEN

  SELECT users.id,users.name,'Calling-Station-Id' AS Attribute,dopdata.field_value AS Value,'==' AS Op
  FROM users,dopdata WHERE dopdata.parent_id=users.id AND dopdata.template_num=1
  AND dopdata.field_alias='_mac' AND users.name=login ORDER BY dopdata.revision DESC LIMIT 1;
END IF;
END$$
DELIMITER ;

запрос виглядет так:

Код:
mysql> use bill;
Database changed


Код:
mysql> call radcheck('seroj');
+----+-------+-----------+--------+----+
| id | name  | Attribute | Value  | Op |
+----+-------+-----------+--------+----+
|  1 | seroj | Password  | pass11 | == |
+----+-------+-----------+--------+----+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Код:
mysql> call radcheck('yazva');
+----+-------+-----------+---------+----+
| id | name  | Attribute | Value   | Op |
+----+-------+-----------+---------+----+
|  2 | yazva | Password  | pass222 | == |
+----+-------+-----------+---------+----+
1 row in set (0.00 sec)

+----+-------+--------------------+-------------------+----+
| id | name  | Attribute          | Value             | Op |
+----+-------+--------------------+-------------------+----+
|  2 | yazva | Calling-Station-Id | 00:34:58:5D:21:43 | == |
+----+-------+--------------------+-------------------+----+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Efendy от 13 Октября 2009, 13:21:01
я думаю
Код:
ORDER BY dopdata.revision DESC LIMIT 1
лучше заменить на подзапрос с выборкой наибольшей ревизии, см. представление users_rev. Мне кажется будет быстрее обрабатываться. Хотя надо, конечно, тестировать или план запроса смотреть


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: serojperoj от 14 Октября 2009, 01:22:40
наверное что-то типа этого..
1.
Код:
SELECT field_value FROM dopdata WHERE revision IN (SELECT rev FROM rev_users WHERE id IN (SELECT id FROM users where name=login)) AND field_alias='_mac';
2.
Код:
SELECT field_value from dopvalues where revision IN (SELECT rev FROM rev_users WHERE id IN (SELECT id FROM users where name=login)) and dopfield_id=4;

непомню точно в доках или на форуме было написано что dopdata=dopfields+dopvalues , тоесть смело можно пологать , что  второй запрос более легкий? и еще dopfield_id в таблице dopvalue неповторяютса?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Efendy от 14 Октября 2009, 07:14:27
2.
Код:
SELECT field_value from dopvalues where revision IN (SELECT rev FROM rev_users WHERE id IN (SELECT id FROM users where name=login)) and dopfield_id=4;

непомню точно в доках или на форуме было написано что dopdata=dopfields+dopvalues , тоесть смело можно пологать , что  второй запрос более легкий? и еще dopfield_id в таблице dopvalue неповторяютса?
абсолютно верно, dopdata это объединение таблиц dopfields и dopvalues, поэтому 2й запрос будет легче. dopfield_id это ссылка на описание поля в таблице dopfields, совершенно правильно по field_alias был вычислен dopfield_id. Для одной ревизии dopfield_id не повторяется


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Maks от 20 Августа 2010, 23:13:19
Я в Мускуле вообще не шарю, но задача у меня схожа с той что в этой теме.

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

Тобиш я пишу мак, а мне ответ, что комп с этим маком подключался с таких, таких учеток.
Идеально было бы время подключения, но если это сильно усложняет задачу (увеличивает стоимость) то не нужно.

Кто сможет реализовать и какова будет стоимоть?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 21 Августа 2010, 06:06:00
если через радиус, то измени процедуру авторизации, добавив один sql запрос Insert


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Maks от 21 Августа 2010, 09:55:08
Да через радиус.
И в доп полях будут записываться все маки или последний с которого была авторизация?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 21 Августа 2010, 10:07:36
можешь создать еще одно доп поле в БД и в него автоинкрементом будет каждый раз писаться новый мак.
но тогда правильней сделать еще одну таблицу для маков
чтобы одна учетная запись имела несколько маков.
типо поля ID, login, mac
и в нее постоянно дописывать маки, которые видит радиус

или вариант2, который быстрее и проще, это через update обновлять последний мак


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: elite от 21 Августа 2010, 11:30:12
или вариант2, который быстрее и проще, это через update обновлять последний мак
нужно видеть, менялся ли мак адрес у абонента или нет :)


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 21 Августа 2010, 18:04:45
Цитировать
SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'=='
    FROM users WHERE name=login;
далее сделать сравнение нового мака с тем что есть в бд


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: ser970 от 21 Августа 2010, 19:00:47
можешь создать еще одно доп поле в БД и в него автоинкрементом будет каждый раз писаться новый мак.
но тогда правильней сделать еще одну таблицу для маков
чтобы одна учетная запись имела несколько маков.
типо поля ID, login, mac
и в нее постоянно дописывать маки, которые видит радиус

или вариант2, который быстрее и проще, это через update обновлять последний мак

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


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 21 Августа 2010, 20:22:26
я думал тоже сделать так, но потом решил что для юзеров это геморно браузер подключать каждый раз.


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: ser970 от 21 Августа 2010, 21:16:43
я думал тоже сделать так, но потом решил что для юзеров это геморно браузер подключать каждый раз.
че геиморойно ? не совсем понял через что звери в однокласнки ходять? смыслн не каждый раз а только при включении компа (если он был отключен от сети более 300 сек)


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 21 Августа 2010, 21:21:28
я думал тоже сделать так, но потом решил что для юзеров это геморно браузер подключать каждый раз.
че геиморойно ? не совсем понял через что звери в однокласнки ходять? смыслн не каждый раз а только при включении компа (если он был отключен от сети более 300 сек)
я будучи пользователем уже не существующего провайдера Киевские Сети был очень озадачен каждый раз включать браузер.
позже написали HTTP авторизатор, т.е. запускаешь exe файлик, а он сам авторизует и все там делает по HTTP


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: ser970 от 22 Августа 2010, 10:27:41
я будучи пользователем уже не существующего провайдера Киевские Сети был очень озадачен каждый раз включать браузер.
позже написали HTTP авторизатор, т.е. запускаешь exe файлик, а он сам авторизует и все там делает по HTTP

можно и это конечно упростить тоесть появился новый апи в влане авторизаторизации -проверить откуда и перевести его.
но я хотел бы понял чем отличается запуск HTTP авторизатора от запуска оперы или ей подобной - никаких данных там вводить не надо - просто кнопка и все - вооще и ее можно убрать?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 22 Августа 2010, 10:36:09
Цитировать
но я хотел бы понял чем отличается запуск HTTP авторизатора от запуска оперы или ей подобной - никаких данных там вводить не надо - просто кнопка и все - вооще и ее можно убрать?
есть пользователи имбицилы совсем
или есть которые юзают роутер и по вайфаю кпк юзают, были преценденты с такими

я иду к тому, чтобы совсем убрать авторизацию.
дом в одном влане и пусть автоматом на роутере идет привязка.
одновременно работая с арп монитором, дабы не меняли мак, а если будут юзать чужой мак и Ip, то у нас в стране есть ст.361 ч.1 УК, сделать показательное наказание и все.

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


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: elite от 22 Августа 2010, 11:05:54
я иду к тому, чтобы совсем убрать авторизацию.
дом в одном влане и пусть автоматом на роутере идет привязка.
одновременно работая с арп монитором, дабы не меняли мак, а если будут юзать чужой мак и Ip, то у нас в стране есть ст.361 ч.1 УК, сделать показательное наказание и все.

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


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 22 Августа 2010, 11:17:12
я иду к тому, чтобы совсем убрать авторизацию.
дом в одном влане и пусть автоматом на роутере идет привязка.
одновременно работая с арп монитором, дабы не меняли мак, а если будут юзать чужой мак и Ip, то у нас в стране есть ст.361 ч.1 УК, сделать показательное наказание и все.

чтобы не усложнять жизнь себе и обсл. персоналу кучей скриптов, проверок вланов итд
а почему не поставить на доступ свичи с опшн82 + дхцп снупинг + айписурсгард? :)
или хочешь на неуправляемых свичах сделать?
в одной сети все правильно и красиво
user per vlan

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


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: ser970 от 22 Августа 2010, 11:24:19
Цитировать
но я хотел бы понял чем отличается запуск HTTP авторизатора от запуска оперы или ей подобной - никаких данных там вводить не надо - просто кнопка и все - вооще и ее можно убрать?
есть пользователи имбицилы совсем
или есть которые юзают роутер и по вайфаю кпк юзают, были преценденты с такими

я иду к тому, чтобы совсем убрать авторизацию.
дом в одном влане и пусть автоматом на роутере идет привязка.
одновременно работая с арп монитором, дабы не меняли мак, а если будут юзать чужой мак и Ip, то у нас в стране есть ст.361 ч.1 УК, сделать показательное наказание и все.

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

угу 361 362 363  только полностью статьи прочитай . ущербом в 50 -200грн эти статьи использовать не будут.(тут я хорошо знаком с этим ) даже организация с карточками на SLE4436 ( некоторый поймут о чем я) не смогла их использовать (а ушерб там по более будет) .

интересно апр как отследить смену мака?
я сканером надергал ip-mac  - выдернул кабель изменил себе ip и mac  воткнул кабель запретил апр посылку - и что покажет арп мониторинг?

роутеры не помеха - если клиенский роутер то его мак я юуду видеть на его порту = если мой то с него и смниму стату.

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


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: elite от 22 Августа 2010, 11:29:47
оптион82 - хорошо не спорю но не все свичи поддерживают - да особенно он не спасет от чуть продвинутых зверей.
порт с привязкой апи - да - но много ли свичей л2 поддерживают это ? и их цена?
опшн82+привязка айпи к порту - это спасет
а по поводу цены - да, для мелких сетей дорого :( поэтому и приходится придумывать всякие извраты типа впн и авторизаторов...


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 22 Августа 2010, 11:35:56
оптион82 - хорошо не спорю но не все свичи поддерживают - да особенно он не спасет от чуть продвинутых зверей.
порт с привязкой апи - да - но много ли свичей л2 поддерживают это ? и их цена?
опшн82+привязка айпи к порту - это спасет
а по поводу цены - да, для мелких сетей дорого :( поэтому и приходится придумывать всякие извраты типа впн и авторизаторов...
с PPP имхо больше времени уходит на обслуживание
то IP адрес VPN не так напишут, то Ip не так введут.
DHCP тоже не спасает, логины пароли забывают.

PPPoE имеет свойство в некоторых сегментах отваливаться, а VPN держится стабильно.

не бывает чтобы было все хорошо и просто )


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: elite от 22 Августа 2010, 11:44:44
с PPP имхо больше времени уходит на обслуживание
то IP адрес VPN не так напишут, то Ip не так введут.
DHCP тоже не спасает, логины пароли забывают.

PPPoE имеет свойство в некоторых сегментах отваливаться, а VPN держится стабильно.

не бывает чтобы было все хорошо и просто )

IPoE спасет человечество :)


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: ser970 от 22 Августа 2010, 11:49:55
опшн82+привязка айпи к порту - это спасет
а по поводу цены - да, для мелких сетей дорого :( поэтому и приходится придумывать всякие извраты типа впн и авторизаторов...

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



Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 22 Августа 2010, 12:00:56
Цитировать
можно вообще отказаться от браузера. и ловить посылку на порту 53  во влане авторизации и поней проверить легальность . и перевести порт в нормальный влан
представь вылезет пакет с этим маком с uplink порта и свич переведется в другой влан )
доступ потеряется...
я думал тоже сделать за счет snmpset но как-то отказался от этой идеи...

нужно провести статистику, как часто меняются маки абонентов у вас в сети


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: ser970 от 22 Августа 2010, 12:31:59
Цитировать
можно вообще отказаться от браузера. и ловить посылку на порту 53  во влане авторизации и поней проверить легальность . и перевести порт в нормальный влан
представь вылезет пакет с этим маком с uplink порта и свич переведется в другой влан )
доступ потеряется...
я думал тоже сделать за счет snmpset но как-то отказался от этой идеи...

нужно провести статистику, как часто меняются маки абонентов у вас в сети
не велезет проверяно. аплинки сами помечаются. да и каждому зверю пренедлежит порт и свич .
тут может я что то не правильно обяснил - не умею я это дело?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: ser970 от 22 Августа 2010, 12:47:06
да и как в порту который уде и так в другом влане может быть аплинк порт?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Maks от 22 Августа 2010, 21:46:28
Извиняюсь что перебью ваш разговор, но у меня задача так и осталась:
Вести статистику мак авторизаций - привязка логин - мак.

Кто мне растолкует пошагово, что создать, куда что дописать изменить?
Как ранее писал за деньгу.


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 22 Августа 2010, 23:53:25
если через радиус, то поидее добавить в процедуру `radreply`
 DECLARE usr_mac VARCHAR(15);
SELECT NULL,login,'Calling-Station-Id',usr_mac,'=';

затем что-то типо
INSERT into mac_table значения id и usr_mac


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Maks от 28 Августа 2010, 13:37:58
А подробнее что куда добавить...

Я не сильно жадный..

А то вирусовые абоны которые ип получают по DHCP ( У меня PPPoE+DHCP) уже кумарят, а вычислить их нет возможности.(кроме как ходить по свичам)


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Elisium от 28 Августа 2010, 22:53:21
...
А то вирусовые абоны которые ип получают по DHCP ( У меня PPPoE+DHCP) уже кумарят, а вычислить их нет возможности.(кроме как ходить по свичам)

Не хочется показаться рекламой или чемто подобным - UserSide довольно неплохо разруливает разные ситуации с МАКами и со свичами ...
Главное, что бы ваше железо было в списке поддерживаемых. ТП там довольно адекватная.
Я бы даже сказал, ДАЖЕ адекватнее Длинковской... И исправить ЧТОТО под ваше железо могу довольно быстро ...
п.с. ДА, мне их ТП понравилось. Столь быстрой и, главное, АДЕКВАТНОЙ, реакции я не видел вообще.
п.п.с. Правда, система стоит денех и наполовину сырая. НО - в плане обородования (ваш случай) есть ОЧЕНЬ серьезные сдвиги.
Два соответствующих модуля  для Нодени стоят БОЛЬШЕ денег, чем весь Юзерсайд.


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Maks от 29 Августа 2010, 11:36:35
У меня нет умных железок! , точнее есть 3, но это мелочь.

Мне нужно только чтоб маки записывались в доп данные.. все, что тут сложного то?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 29 Августа 2010, 12:25:41
труднее все это прикрутить к интерфейсу ноденай )


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 29 Августа 2010, 12:38:16
создай таблицу в бд bill с именем mac_log
сделай 2 поля (id и mac)
тип varchar, размеры полей на свое усмотрение, для мака хватит 18 символов
сравнение cp1251_general_ci
поле id - primary key

в raddb/sql.conf добавляешь строку
Код:
accounting_start_query = "insert into mac_log (id,mac) values ('%{SQL-User-Name}', ('%{Calling-Station-Id}'))"

в результате чего, в бд будут писаться:
Код:
testerlogin	00:40:F4:AE:DF:5F
можно добавить туда еще поле времени
правильней заносить бы туда id биллинга, а не логин, но в радиус запросе мы не можем этим оперировать, т.к. нет этих данных еще.

для продолжения дальше, нужно знать, тебе нужно чтобы туда писались все запросы или только прошедшие сверку паролей?
иначе продолжать нужно в postauth_query


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 29 Августа 2010, 12:59:50
а можно писать в уже готовую таблицу с допданными, тогда сразу ничего создавать не надо, а добавить условие where
и будет автоматом писаться в доп таблицы нужному юзеру.

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


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Maks от 29 Августа 2010, 13:04:10

для продолжения дальше, нужно знать, тебе нужно чтобы туда писались все запросы или только прошедшие сверку паролей?
иначе продолжать нужно в postauth_query

Записывать нужно тех кто прошел проверку.
А в доп данных ка сделать чтоб маки записывались все а не перезаписывались новыми.


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 29 Августа 2010, 13:49:41
заткнулся на том, чтобы передать в процедуру radpostauth переменную Calling-Station-Id
какие то затыки идут при объявлении процедуры и входящих переменных   ::)


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 29 Августа 2010, 14:00:23
такс, исправил

так будет выглядеть в sql.conf
Код:
postauth_query = "call radpostauth('%{SQL-User-Name}','%{Calling-Station-Id}')"

а процедура так
Код:
CREATE PROCEDURE `radpostauth` (IN login VARCHAR(64), IN mac VARCHAR(20))

остается только сделать грамотно insert в нужную табличку и дело шляпе


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 29 Августа 2010, 15:03:17
если я создал доп.поле _mac

и сделал в процедуре такой вот sql update
Код:
update dopdata set field_value=mac WHERE parent_id=(SELECT id FROM users WHERE name=login) AND field_alias='_mac';

то все вроде бы классно, в доп данные будут заноситься данные о маках, но!
если там раньше ничего небыло раньше, то этого значения нет и update делать некуда.

Efendy или кто-нибудь еще может подскажет как правильно логически решить условие?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Efendy от 30 Августа 2010, 11:51:44
ну делай upadte, если вернул 0 рядов - делай Insert


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: PBNM от 30 Августа 2010, 12:42:11
Реализовал немного иначе - создал таблицу login1 аналогичную login + поле call_from .
и

CREATE PROCEDURE `radreply1` (IN login VARCHAR(64),IN call_fr VARCHAR(64))
BEGIN
 ...
INSERT into login1 (mid,act,time,call_from) VALUES (usr_id,47,unix_timestamp(),call_fr);
...
END;

и в sql.conf тогда
authorize_reply_query = "call radreply1('%{SQL-User-Name}','%{Calling-Station-Id}%{Tunnel-Client-Endpoint}')"


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 30 Августа 2010, 13:59:36
ну делай upadte, если вернул 0 рядов - делай Insert
действительно, может даже сделаю проще через   UPDATE OR INSERT INTO


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: PBNM от 30 Августа 2010, 15:43:47
 Если через radreply то через insert - в таблице login1 получаем и сеансы работы клиентов - вдруг кто-то с разных mac / local_ip работает ...


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: stix от 30 Августа 2010, 16:04:51
Если через radreply то через insert - в таблице login1 получаем и сеансы работы клиентов - вдруг кто-то с разных mac / local_ip работает ...
можно тогда добавить в процедуру и вывод в биллинге, там где клиентсткая статистика > сеансы работы вклажка, добавить столбец еще один и привязать к этой таблице выборку.
если по vpn, то будет виден с какого подконектился ip, если mac - то с какого мака
ну и брать эти данные с Calling-Station-Id.
думаю эта фича полезна будет многим работающим с ppp


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Maks от 30 Августа 2010, 22:04:08
ага.. полезна спору нет.


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Maks от 03 Сентября 2010, 16:34:12
Ап, все стало или медленно но движется?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: YuSHa от 04 Декабря 2010, 20:32:15
актуально! кто реализовал в связке с микротиком??


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: serojperoj от 02 Октября 2011, 21:22:14
может кто скажет как заблочить MAC-address клиента? чтоб с этого MAC никогда не смогли авторизоваться через PPPoE?
не знаю в какую сторону копать. поменять процедуры в MySQL или в Freeradius-е предусмотрен вариант mac filtering?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: smallcms от 03 Октября 2011, 00:07:40
может кто скажет как заблочить MAC-address клиента? чтоб с этого MAC никогда не смогли авторизоваться через PPPoE?
не знаю в какую сторону копать. поменять процедуры в MySQL или в Freeradius-е предусмотрен вариант mac filtering?
Покопайте в сторону ipfw arp. Ради бана/ограничения на порт разве стоит лезть в дебри радиуса?


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: 0xbad0c0d3 от 03 Октября 2011, 00:41:49
Мне кажется, переделать процедуру в мускуле в разы проще, чем лезать в ipfw arp...


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: serojperoj от 09 Февраля 2012, 13:28:22
а как поступать с теми у кого ПК и ноут в запасе?

может кто-то уже справился с проблемой привязка по маку?

с одним маком все норм работает.

Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$ 
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
BEGIN

SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'mykey') AS Value,'==' AS Op FROM users WHERE name=login;

IF ((SELECT field_value from dopvalues where revision IN (SELECT rev
FROM rev_users WHERE id IN (SELECT id FROM users where name=login)) and
 dopfield_id=4) <> '') THEN

SELECT id,name,'Calling-Station-Id' AS Attribute,(SELECT field_value
from dopvalues where revision IN (SELECT rev FROM rev_users WHERE id IN
(SELECT id FROM users where name=login)) and dopfield_id=4) AS
Value,':=' AS Op from users where name=login;

END IF;

END$$
DELIMITER ;

тоесть проверяю поле Мак-Адрес(_mac) в тех. данных клиента, если оно не пустое то прибавляется еще один Select в процедуре radcheck().

но мне этого мало  :(  в Доп. Полях добавил еще одно поле - Мак-Адрес2(_mac2) , и теперь незнаю как в мускуле проверять сразу обе поля, один для ПК , другой для ноута.

типа IF (Calling-Station-Id == _mac) OR (Calling-Station-Id == _mac2) THEN ........ END IF;


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: Rico-X от 10 Февраля 2012, 10:09:01
А какой смысл в этом? Сменить мак дело пары минут, будете держать потом таблицу из сотни маков одного юзера? А не проще ли заслать монтажников отключить физически если железо тупое, на умном решение и так ясно.


Название: Re: Вытаскивание маков юзеров из радиус запросов.
Отправлено: serojperoj от 10 Февраля 2012, 14:51:48
так у нас юЗверов нету)) обычные , не продвинутые люди в ИТ сфере. мб один из 1000 слышал что такое Мак-Адрес