Jump to content

Recommended Posts

Posted

Есть сабж, настроеный на использование MySQL. В таблице radcheck (стандартная структура)

есть следующая запись:

5 sqltest User-Password == 12345

 

При использовании radtest авторизация проходит нормально.

 

rad_recv: Access-Request packet from host 127.0.0.1 port 58266, id=17, length=59

User-Name = "sqltest"

User-Password = "12345"

NAS-IP-Address = 127.0.1.1

NAS-Port = 1812

+- entering group authorize {...}

++[preprocess] returns ok

++[chap] returns noop

++[mschap] returns noop

[suffix] No '@' in User-Name = "sqltest", looking up realm NULL

[suffix] No such realm "NULL"

++[suffix] returns noop

[eap] No EAP-Message, not doing EAP

++[eap] returns noop

++[unix] returns notfound

   expand: %{User-Name} -> sqltest

[sql] sql_set_user escaped user --> 'sqltest'

rlm_sql (sql): Reserving sql socket id: 1

[sql] expand: SELECT id, username, attribute, value, op FROM radcheck WHERE username = '%{SQL-User-Name}' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'sqltest' ORDER BY id

WARNING: Found User-Password == "...".

WARNING: Are you sure you don't mean Cleartext-Password?

WARNING: See "man rlm_pap" for more information.

[sql] User found in radcheck table

[sql] expand: SELECT id, username, attribute, value, op FROM radreply WHERE username = '%{SQL-User-Name}' ORDER BY id -> SELECT id, username, attribute, value, op FROM radreply WHERE username = 'sqltest' ORDER BY id

[sql] expand: SELECT groupname FROM radusergroup WHERE username = '%{SQL-User-Name}' ORDER BY priority -> SELECT groupname FROM radusergroup WHERE username = 'sqltest' ORDER BY priority

rlm_sql (sql): Released sql socket id: 1

++[sql] returns ok

++[expiration] returns noop

++[logintime] returns noop

++[pap] returns updated

Found Auth-Type = PAP

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!! Replacing User-Password in config items with Cleartext-Password. !!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!! Please update your configuration so that the "known good" !!!

!!! clear text password is in Cleartext-Password, and not in User-Password. !!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

+- entering group PAP {...}

[pap] login attempt with password "12345"

[pap] Using clear text password "12345"

[pap] User authenticated successfully

++[pap] returns ok

+- entering group post-auth {...}

++[exec] returns noop

Sending Access-Accept of id 17 to 127.0.0.1 port 58266

Finished request 12.

Going to the next request

Получаем доступ разрешён.

 

 

После вставки в таблицу строки

3 sqltest Simultaneous-Use == 1

 

радтест запрещает доступ, а в логе пишет

 

rad_recv: Access-Request packet from host 127.0.0.1 port 56386, id=110, length=59

User-Name = "sqltest"

User-Password = "12345"

NAS-IP-Address = 127.0.1.1

NAS-Port = 1812

+- entering group authorize {...}

++[preprocess] returns ok

++[chap] returns noop

++[mschap] returns noop

[suffix] No '@' in User-Name = "sqltest", looking up realm NULL

[suffix] No such realm "NULL"

++[suffix] returns noop

[eap] No EAP-Message, not doing EAP

++[eap] returns noop

++[unix] returns notfound

[sql] expand: %{User-Name} -> sqltest

[sql] sql_set_user escaped user --> 'sqltest'

rlm_sql (sql): Reserving sql socket id: 0

[sql] expand: SELECT id, username, attribute, value, op FROM radcheck WHERE username = '%{SQL-User-Name}' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'sqltest' ORDER BY id

[sql] expand: SELECT groupname FROM radusergroup WHERE username = '%{SQL-User-Name}' ORDER BY priority -> SELECT groupname FROM radusergroup WHERE username = 'sqltest' ORDER BY priority

rlm_sql (sql): Released sql socket id: 0

[sql] User sqltest not found

++[sql] returns notfound

++[expiration] returns noop

++[logintime] returns noop

[pap] WARNING! No "known good" password found for the user. Authentication may fail because of this.

++[pap] returns noop

No authenticate method (Auth-Type) configuration found for the request: Rejecting the user

Failed to authenticate the user.

Using Post-Auth-Type Reject

+- entering group REJECT {...}

[attr_filter.access_reject] expand: %{User-Name} -> sqltest

attr_filter: Matched entry DEFAULT at line 11

++[attr_filter.access_reject] returns updated

Delaying reject of request 13 for 1 seconds

Going to the next request

Waking up in 0.9 seconds.

Sending delayed reject for request 13

Sending Access-Reject of id 110 to 127.0.0.1 port 56386

Waking up in 4.9 seconds.

Cleaning up request 13 ID 110 with timestamp +12664

Ready to process requests.

Больше всего поражает строка "[sql] User sqltest not found"... как бороться?

 

Posted
После вставки в таблицу строки

3 sqltest Simultaneous-Use == 1

 

радтест запрещает доступ, а в логе пишет

Простите, а в какую именно таблицу вы это вставляете?

И вообще, что вы хотите добиться, используя параметр Simultaneous-Use ?

Posted
А sqluser есть в radusergroup ? Может пригодиться http://wiki.sirmax.noname.com.ua/index.php/Simult_Chek
м.б. sqltest? В группах нет - я эту таблицу не трогал т.к. нигде не сказано что этот параметр должен присваиваться именно группе. По приведённой ссылке параметр присваивается пользователю в таблицу радчек:

 

mysql> select * from radcheck where username='test';

+-------+-----------+------------------+----+-----------+

| id | UserName | Attribute | op | Value |

+-------+-----------+------------------+----+-----------+

| 9295 | test | Pool-Name | := | ippool_1 |

| 9294 | test | Password | == | password |

| 9293 | test | Auth-Type | := | MS-CHAP |

| 9296 | test | Simultaneous-Use | := | 1 |

+-------+-----------+------------------+----+-----------+

4 rows in set (0.00 sec)

 

Простите, а в какую именно таблицу вы это вставляете?

И вообще, что вы хотите добиться, используя параметр Simultaneous-Use ?

1. Как и положено, в радчек.

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

 

В дебаге радиуса указано, какой селект выполняется. В обоих случаях он идентичен, однако во втором случае возвращает 0 строк! Может я чего-то не знаю но sql не должен так работать....

 

Posted

Ваша задача решается маленькой доработкой SQL запроса и таблицы.

Возможно радиус не любит этот параметр в том виде, в котором вы его задаёте.

Если вы хотите сделать ограничение для всех пользователей - надо доработать только SQL запрос.

Если нужно сделать выборочное ограничение количества подключений > 1 - надо доработать таблицу и SQL запрос.

Posted
Ваша задача решается маленькой доработкой SQL запроса и таблицы.

Возможно радиус не любит этот параметр в том виде, в котором вы его задаёте.

Если вы хотите сделать ограничение для всех пользователей - надо доработать только SQL запрос.

Если нужно сделать выборочное ограничение количества подключений > 1 - надо доработать таблицу и SQL запрос.

В принципе можно всех. Какую доработку надо внести? Я не могу найти в каком файле задаётся "SELECT id, username, attribute, value, op FROM radreply WHERE username = '%{SQL-User-Name}' ORDER BY id -> SELECT id, username, attribute, value, op FROM radreply WHERE username = 'sqltest' ORDER BY id"

 

я бы модифицировал так: "SELECT id, username, attribute, value, op FROM radreply WHERE username = '%{SQL-User-Name}' ORDER BY id -> SELECT id, username, attribute, value, op FROM radreply WHERE username = 'sqltest' AND attribute= 'User-Password' ORDER BY id"...

 

 

Только почему фрирадиус не любит этот параметр? Для его активации в кофиге dialup.conf заложены готовые строки, в инете много мануалов по включению функции и нигде ни слова нет о доработке напильником!

Posted
А sqluser есть в radusergroup ? Может пригодиться http://wiki.sirmax.noname.com.ua/index.php/Simult_Chek

Добавил параметр в группу - теперь авторизация проходит успешно, но учёт количества сессий не производится.

 

rad_recv: Access-Request packet from host 127.0.0.1 port 39513, id=183, length=59

User-Name = "sqltest"

User-Password = "12345"

NAS-IP-Address = 127.0.1.1

NAS-Port = 1812

+- entering group authorize {...}

++[preprocess] returns ok

++[chap] returns noop

++[mschap] returns noop

[suffix] No '@' in User-Name = "sqltest", looking up realm NULL

[suffix] No such realm "NULL"

++[suffix] returns noop

[eap] No EAP-Message, not doing EAP

++[eap] returns noop

++[unix] returns notfound

   expand: %{User-Name} -> sqltest

[sql] sql_set_user escaped user --> 'sqltest'

rlm_sql (sql): Reserving sql socket id: 4

[sql] expand: SELECT id, username, attribute, value, op FROM radcheck WHERE username = '%{SQL-User-Name}' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'sqltest' ORDER BY id

WARNING: Found User-Password == "...".

WARNING: Are you sure you don't mean Cleartext-Password?

WARNING: See "man rlm_pap" for more information.

[sql] User found in radcheck table

[sql] expand: SELECT id, username, attribute, value, op FROM radreply WHERE username = '%{SQL-User-Name}' ORDER BY id -> SELECT id, username, attribute, value, op FROM radreply WHERE username = 'sqltest' ORDER BY id

[sql] expand: SELECT groupname FROM radusergroup WHERE username = '%{SQL-User-Name}' ORDER BY priority -> SELECT groupname FROM radusergroup WHERE username = 'sqltest' ORDER BY priority

[sql] expand: SELECT id, groupname, attribute, Value, op FROM radgroupcheck WHERE groupname = '%{Sql-Group}' ORDER BY id -> SELECT id, groupname, attribute, Value, op FROM radgroupcheck WHERE groupname = 'Main' ORDER BY id

rlm_sql (sql): Released sql socket id: 4

++[sql] returns ok

++[expiration] returns noop

++[logintime] returns noop

++[pap] returns updated

Found Auth-Type = PAP

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!! Replacing User-Password in config items with Cleartext-Password. !!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!! Please update your configuration so that the "known good" !!!

!!! clear text password is in Cleartext-Password, and not in User-Password. !!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

+- entering group PAP {...}

[pap] login attempt with password "12345"

[pap] Using clear text password "12345"

[pap] User authenticated successfully

++[pap] returns ok

+- entering group post-auth {...}

++[exec] returns noop

Sending Access-Accept of id 183 to 127.0.0.1 port 39513

Finished request 29.

Going to the next request

Posted

Проблема решена путём применения костыля:

 

файл /etc/freeradius/sql/mysql/dialup.conf

 

строка authorize_check_query = ....

заменяется на:

 

authorize_check_query =" SELECT id, username, attribute, value, op FROM ( \

SELECT id, radcheck.username, attribute, value, op, radacctid, acctstoptime \

FROM radcheck LEFT JOIN radacct ON radcheck.username=radacct.username \

WHERE radcheck.username='%{SQL-User-Name}' AND attribute='User-Password' ORDER BY radacctid DESC LIMIT 1) AS qwe \

WHERE ISNULL(radacctid) OR !ISNULL(acctstoptime)"

Двойной селект я не люблю - если кто знает как проще - поделитесь секретом)))

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.