Перейти до

Новая сборка СТГ 2.4


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

  • Відповіді 545
  • Створено
  • Остання відповідь

Top Posters In This Topic

Если "file not found" - значит rlm_stg.so лежит в неправильнои месте. У меня, например (Gentoo Linux), в /usr/lib

Да нет, там же где и все ...

ладно, разберусь сообщу, мне кажется - формат файла....

 

# ./check-radiusd-config
Ignoring deprecated command-line option -pStarting - reading configuration files ...
reread_config:  reading radiusd.conf
Config:   including file: /usr/local/freeradius/etc/raddb/clients.conf
main: prefix = "/usr/local/freeradius"
main: localstatedir = "/var"
main: logdir = "/var/log/radius"
main: libdir = "/usr/local/freeradius/lib"
main: radacctdir = "/var/log/radius/radacct"
.....
Module: Library search path is /usr/local/freeradius/lib
Module: Loaded exec
exec: wait = yes
exec: program = "(null)"
exec: input_pairs = "request"
exec: output_pairs = "none"
exec: packet_type = "(null)"
Module: Instantiated exec (exec)
Module: Loaded expr
Module: Instantiated expr (expr)
Module: Loaded PAP
pap: encryption_scheme = "crypt"
pap: auto_header = no
Module: Instantiated pap (pap)
Module: Loaded CHAP
Module: Instantiated chap (chap)
Module: Loaded MS-CHAP
mschap: use_mppe = yes
mschap: require_encryption = yes
mschap: require_strong = no
mschap: with_ntdomain_hack = no
mschap: passwd = "(null)"
mschap: ntlm_auth = "(null)"
Module: Instantiated mschap (mschap)
Module: Loaded DIGEST
Module: Instantiated digest (digest)
Module: Loaded preprocess
.....
Module: Instantiated detail (detail)
Module: Loaded System
unix: cache = no
unix: passwd = "(null)"
unix: shadow = "(null)"
unix: group = "(null)"
unix: radwtmp = "/var/log/radius/radwtmp"
unix: usegroup = no
unix: cache_reload = 600
Module: Instantiated unix (unix)
radiusd.conf[269] Failed to link to module 'rlm_stg': file not found
radiusd.conf[480] Unknown module "stg".
radiusd.conf[475] Failed to parse accounting section.

 

....

 

Оказывается нужен файл rlm_stg.la:

 

# rlm_stg.la - a libtool library file
# Generated by hand
#
# Please DO NOT delete this file!
# It is necessary for linking the library.

# The name that we can dlopen(3).
dlname='rlm_stg-1.1.6.so'

# Names of this library.
library_names='rlm_stg-1.1.6.so rlm_stg-1.1.6.so rlm_stg.so'

# The name of the static archive.
old_library='rlm_stg.a'

# Libraries that this one depends upon.
dependency_libs=' /usr/local/freeradius/lib/libradius.la -lcrypt -lnsl -lresolv -lpthread'

# Version information for rlm_sqlcounter.
current=0
age=0
revision=0

# Is this an already installed library?
installed=yes

# Should we warn about portability when linking against -modules?
shouldnotlink=yes

# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''

# Directory that this library needs to be installed in:
libdir='/usr/local/freeradius/lib'

 

результат:

 

rlm_stg: stg_init()
Module: Loaded stg
rlm_stg: stg_instantiate()
stg: password = "varez"
stg: server = "192.168.xxx.xx"
stg: port = 8888
stg: local_port = 8887
Module: Instantiated stg (stg)

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

Хм, а что за система?

Первый раз вижу чтобы для динамической компоновки под Linux требовалось что-то кроме .so-шки

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

Первый раз вижу чтобы для динамической компоновки под Linux требовалось что-то кроме .so-шки

RedHat 9.2, FreeRadius 1.1.6

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

 

но это пол беды, правильно, когда модуль к радиусу кладется в src/modules и собирается вместе с радиусом.

 

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

вечером гляну с дебагом, вот кусок лога:

 

Sun Jun 29 23:31:14 2008 : Info: Ready to process requests.
Mon Jun 30 12:18:31 2008 : Auth: Login OK: [inavto/<CHAP-Password>] (from client C7204-IN-GW port 12)
Mon Jun 30 12:18:36 2008 : Auth: Login OK: [tarbaza/<CHAP-Password>] (from client C7204-IN-GW port 17)
Mon Jun 30 12:18:38 2008 : Auth: Login OK: [albreht/<CHAP-Password>] (from client C7204-IN-GW port 22)
Mon Jun 30 12:18:42 2008 : Auth: Login OK: [dyuna2/<CHAP-Password>] (from client C7204-IN-GW port 8)
Mon Jun 30 12:18:46 2008 : Auth: Login OK: [zenitavto/<CHAP-Password>] (from client C7204-IN-GW port 16)
Mon Jun 30 12:19:06 2008 : Error: WARNING: Unresponsive child (id 32771) for request 1
Mon Jun 30 12:19:08 2008 : Error: WARNING: Unresponsive child (id 65541) for request 3
Mon Jun 30 12:19:12 2008 : Error: WARNING: Unresponsive child (id 16386) for request 5
Mon Jun 30 12:19:16 2008 : Error: WARNING: Unresponsive child (id 81926) for request 7
Mon Jun 30 12:19:18 2008 : Error: WARNING: Unresponsive child (id 49156) for request 9
Mon Jun 30 12:19:18 2008 : Auth: Login OK: [kredmaster/<CHAP-Password>] (from client C7204-IN-GW port 2)
Mon Jun 30 12:19:36 2008 : Error: WARNING: Unresponsive child (id 114696) for request 10
Mon Jun 30 12:19:38 2008 : Error: WARNING: Unresponsive child (id 98311) for request 11
Mon Jun 30 12:19:42 2008 : Error: WARNING: Unresponsive child (id 131081) for request 12
Mon Jun 30 12:19:44 2008 : Error: WARNING: Unresponsive child (id 147466) for request 13
Mon Jun 30 12:19:44 2008 : Auth: Login OK: [malyshev/<CHAP-Password>] (from client C7204-IN-GW port 14)
Mon Jun 30 12:19:48 2008 : Error: WARNING: Unresponsive child (id 163851) for request 14
Mon Jun 30 12:19:50 2008 : Error: WARNING: Unresponsive child (id 196621) for request 16
Mon Jun 30 12:20:05 2008 : Error: WARNING: Unresponsive child (id 180236) for request 17
Mon Jun 30 12:20:05 2008 : Auth: Login OK: [voip/<CHAP-Password>] (from client C7204-IN-GW port 21)
Mon Jun 30 12:20:08 2008 : Error: WARNING: Unresponsive child (id 213006) for request 18
Mon Jun 30 12:20:11 2008 : Error: WARNING: Unresponsive child (id 229391) for request 19
Mon Jun 30 12:20:14 2008 : Error: WARNING: Unresponsive child (id 245776) for request 20
Mon Jun 30 12:20:16 2008 : Error: WARNING: Unresponsive child (id 278546) for request 22
Mon Jun 30 12:20:18 2008 : Error: WARNING: Unresponsive child (id 262161) for request 23
Mon Jun 30 12:20:35 2008 : Error: WARNING: Unresponsive child (id 294931) for request 24
Mon Jun 30 12:20:35 2008 : Error: WARNING: Unresponsive child (id 311316) for request 25
Mon Jun 30 12:20:44 2008 : Error: WARNING: Unresponsive child (id 344086) for request 27
Mon Jun 30 12:20:44 2008 : Error: WARNING: Unresponsive child (id 327701) for request 28
Mon Jun 30 12:20:44 2008 : Error: WARNING: Unresponsive child (id 360471) for request 29
Mon Jun 30 12:20:44 2008 : Error: WARNING: Unresponsive child (id 376856) for request 30
Mon Jun 30 12:20:48 2008 : Error: WARNING: Unresponsive child (id 393241) for request 31
Mon Jun 30 12:20:48 2008 : Error: WARNING: Unresponsive child (id 409626) for request 32
Mon Jun 30 12:21:19 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:21:19 2008 : Error: WARNING: Unresponsive child (id 458781) for request 35
Mon Jun 30 12:21:19 2008 : Error: WARNING: Unresponsive child (id 475166) for request 36
Mon Jun 30 12:21:35 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:21:35 2008 : Error: WARNING: Unresponsive child (id 507936) for request 38
Mon Jun 30 12:21:49 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:21:49 2008 : Error: WARNING: Unresponsive child (id 491551) for request 39
Mon Jun 30 12:21:49 2008 : Error: WARNING: Unresponsive child (id 524321) for request 40
Mon Jun 30 12:22:19 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:28 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:32 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:33 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:35 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:36 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:38 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:38 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:42 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:48 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:52 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:23:58 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:24:02 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:24:03 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:24:05 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:24:06 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:24:08 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:24:08 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request
Mon Jun 30 12:24:12 2008 : Info: The maximum number of threads (32) are active, cannot spawn new thread to handle request

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

Вот уж не знаю. У меня не ищет .la-файлы.

По поводу сборки. Да, можно ложить исходники в предварительно распакованный freeradius и оттудова собирать. Но это неверный путь, т.к. у человека может не быть исходников радиуса. На самом деле, для плагинов есть интерфейс, который описан несколькими заголовочными файлами. Вот эти файлики я вытащил из исходников радиуса, слегка подчистил и положил в include. С ними и собирается. Почему колом встает - это я совсем хз. На Gentoo и Debian работает прекрасно.

Ссылка на сообщение
Поделиться на других сайтах
Вот уж не знаю. У меня не ищет .la-файлы.

По поводу сборки. Да, можно ложить исходники в предварительно распакованный freeradius и оттудова собирать. Но это неверный путь, т.к. у человека может не быть исходников радиуса. На самом деле, для плагинов есть интерфейс, который описан несколькими заголовочными файлами. Вот эти файлики я вытащил из исходников радиуса, слегка подчистил и положил в include. С ними и собирается. Почему колом встает - это я совсем хз. На Gentoo и Debian работает прекрасно.

У тебя какая версия радиуса ? судя по хеадерам 1.1.3 ?

Ссылка на сообщение
Поделиться на других сайтах
На рабочей машине (Gentoo) 1.1.7

На дебиане не помню. Кажется, 1.1.6

Кинь мне почтой свою собранную версию стг модуля с либами (ldd) - посмотрю в дебаге отличие в поведении...

Ссылка на сообщение
Поделиться на других сайтах
Ммм... Не понял при чем тут модуль к авторизации на циске. Циска работает с FreeRADIUS, а не с модулем.

А зачем тогда модуль ? Где тебе freeradius возьмет network authorization ?

правильно, в каком либо хранилище отличным от данного модуля так как он это не умеет, как следствие, описывать пользователей надо 2 раза, 1 - в старгайзере, 2 - еще где либо = mysql,file,....

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

Все равно ничего не понял.

Решение об авторизации принимает FreeRADIUS. Основываясь на информации от модулей.

Чего не хватает твоей циске, что она не хочет авторизоваться через FreeRADIUS?

И зачем описывать пользователя 2 раза?

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

Решение об авторизации принимает FreeRADIUS. Основываясь на информации от модулей.

Чего не хватает твоей циске, что она не хочет авторизоваться через FreeRADIUS?

И зачем описывать пользователя 2 раза?

1. network authorization

2. av-pair

 

Ну глянь в гугле например, что из себя представляет "aaa authorization network default group radius", не перепечатывать же сдесь цискины мануалы.

Ссылка на сообщение
Поделиться на других сайтах
The aaa authorization network default group radius command configures network authorization via RADIUS. This can be used to govern address assignment, the application of access lists, and various other per-user quantities.

Видимо, это ты чего-то не понимаеш. Модуль rlm_stg.so представляет собой прослойку между FreeRADIUS и Stargazer. Ответ Access-Accept посылает FreeRADIUS, а не модуль. Решение о посылке аксепта он принимает на основании правильности пароля и дополнительного ответа старгейзера. Смотри, в секции authorization модуль rlm_stg.so просто предоставляет FreeRADIUS'у Cleartext-Password для запрошенного юзера (из базы Stg). В секции authentication модуль rlm_stg.so принимает решение, позволять авторизоваться этому юзеру или нет. То есть, даже если пароли совпадают, этот модуль в этой секции может отменить решение.

Молчание циски на Access-Accept, скорее всего, результат отсутствия некого поля в этом ответе. Так поле ж недолго добавить - нужно только понять какое...

И я так подозреваю, что это поле Service-Type. Но, по скольку, "на руках" у меня циски нету и я с ними никогда не работал - я не могу свои подозрения проверить.

Еще раз повторюсь: связка модулей mod_radius.so (со стороны Stg) и rlm_stg.so (со стороны FreeRADIUS) сама по себе RADIUS-сервером не является. Она просто предоставляет FreeRADIUS'у необходимую информацию и, дополнительно, авторизует, если надо, пользователей в системе Stargazer.

Ссылка на сообщение
Поделиться на других сайтах
Видимо, это ты чего-то не понимаеш. Модуль rlm_stg.so представляет собой прослойку между FreeRADIUS и Stargazer.

Это все чудесно, и я с тобой совершенно согласен, вероятно я нетак преподношу свою мысль, ибо ты описываеш совершенно правильную ситуацию, но не касающуюся данной темы, попробую цитатами из мануалов:

 

http://www.cisco.com/en/US/tech/tk59/techn...080093f4b.shtml

 

User passes authentication (i.e. username/password is good)

   but fails authorization (profile not set up for Service-Type=Framed &

   Framed-Protocol=PPP):

RADIUS: Received from id 13 171.68.118.101:1645, Access-Accept, len 20

RADIUS: saved authorization data for user 15AD58 at 15ADF0

AAA/AUTHEN (56862281): status = PASS

AAA/AUTHOR/LCP As1: Authorize LCP

AAA/AUTHOR/LCP: Async1: (959162008): user='cse'

AAA/AUTHOR/LCP: Async1: (959162008): send AV service=ppp

AAA/AUTHOR/LCP: Async1: (959162008): send AV protocol=lcp

AAA/AUTHOR/LCP: Async1: (959162008): Method=RADIUS

RADIUS: no appropriate authorization type for user.

AAA/AUTHOR (959162008): Post authorization status = FAIL

AAA/AUTHOR/LCP As1: Denied

AAA/AUTHEN: free_user (0x15AD58) user='cse' ruser=''

   port='Async1' rem_addr='async' authen_type=PAP service=PPP priv=1

As1 PAP: O AUTH-NAK id 27 len 25 msg is "Authorization failed"

 

Это и есть результат неправильной отработки aaa authorization network default group radius

 

И при чем сдесь фрирадиус ? Он использует любые доступные для него хранилища в зависимости от секции/действия которые от него требуют.

Если данный/данные методы не заложены/описаны в хранилищах он возвращает отказ.

rlm_stg = хранилище, не умеющее authorization.

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

Авторизация - это неотъемлимая часть RADIUS. Если бы rlm_stg.so ее не умел - его бы небыло в секции авторизации.

Я еще раз перечитал доступные материалы по Cisco и FreeRADIUS и еще раз убедился в том, что циске не хватает некоторых полей в ответе радиуса. В частности: Service-Type := NAS-Prompt-User и/или cisco-avpair = "shell:priv-lvl=15" (это поле не является обязательным). Их можно дописывать к ответу в секции post-auth (смотри документацию на FreeRADIUS). Именно так работает rlm_stg.so, если необходимо назначать пользователям статические IP-адреса в VPN - он добавляет параметр Framed-IP-Address.

Ссылка на сообщение
Поделиться на других сайтах
Авторизация - это неотъемлимая часть RADIUS. Если бы rlm_stg.so ее не умел - его бы небыло в секции авторизации.

Я еще раз перечитал доступные материалы по Cisco и FreeRADIUS и еще раз убедился в том, что циске не хватает некоторых полей в ответе радиуса. В частности: Service-Type := NAS-Prompt-User и/или cisco-avpair = "shell:priv-lvl=15" (это поле не является обязательным). Их можно дописывать к ответу в секции post-auth (смотри документацию на FreeRADIUS). Именно так работает rlm_stg.so, если необходимо назначать пользователям статические IP-адреса в VPN - он добавляет параметр Framed-IP-Address.

Ну да :) это я и имел в виду.

Только не надо путать механизм authentication и authorization :(

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

 

предлагаю свою помощь в отлове этого бага, он у меня встречается раз на 2-3 дня, а то и чаще. Говорите чего делать.

Код курить...

Ну, в общем, делаеш отладочные вставки во все места, где только можно и ждеш пока не произойдет баг. Потом начинаеш анализ логов.

В принципе, если мужество присутствует, могу через некоторое время выслать по почте или где-то выложить спецверсию сорсов mod_auth_ia - чтобы вы его покатали а потом мне логи заслали.

madf, сделай плиз inetaccess.cpp с дебаг инфом густым.

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

 

предлагаю свою помощь в отлове этого бага, он у меня встречается раз на 2-3 дня, а то и чаще. Говорите чего делать.

Код курить...

Ну, в общем, делаеш отладочные вставки во все места, где только можно и ждеш пока не произойдет баг. Потом начинаеш анализ логов.

В принципе, если мужество присутствует, могу через некоторое время выслать по почте или где-то выложить спецверсию сорсов mod_auth_ia - чтобы вы его покатали а потом мне логи заслали.

madf, сделай плиз inetaccess.cpp с дебаг инфом густым.

Сам навставляй printfd(__FILE__, "чего меня интересует\n");

или syslog(LOG_CRIT, "чего меня интересует"); если лениво в дебаг моде перед консолью зрение портить :huh:

Ссылка на сообщение
Поделиться на других сайтах
Сам навставляй printfd(__FILE__, "чего меня интересует\n");

или syslog(LOG_CRIT, "чего меня интересует"); если лениво в дебаг моде перед консолью зрение портить :huh:

да навставлял в пару мест, но в структуре кода я не разбираюсь и с ГЦЦ/срр не силен, не знаю как например вывести адрес или имя пользователя в тех местах где мне надо.

Ссылка на сообщение
Поделиться на других сайтах
да навставлял в пару мест, но в структуре кода я не разбираюсь и с ГЦЦ/срр не силен, не знаю как например вывести адрес или имя пользователя в тех местах где мне надо.

printfd(__FILE__, "чего меня интересует %s %d\n", переменная_типа_строка, переменная_типа_число);

 

или

 

char tmpbuf[255];

sprintf(tmpbuf,"чего меня интересует %s %d\n", переменная_типа_строка, переменная_типа_число);

syslog(LOG_CRIT, tmpbuf);

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

printfd(__FILE__, "чего меня интересует %s %d\n", переменная_типа_строка, переменная_типа_число);

 

:huh: насчет этого я тоже догадался

а как быть тут:

 

int AUTH_IA::Timeouter()
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);

map<uint32_t, IA_USER>::iterator it;
it = ip2user.begin();
uint32_t sip;

//printfd(__FILE__, "ip2user.size=%d \n", ip2user.size());

while (it != ip2user.end())
   {
   sip = it->first;

   if (it->second.phase == 0)
       it->second.phase = 1;

   static UTIME currTime;
   gettimeofday(&currTime, NULL);

   if ((it->second.phase == 2)
       && (currTime - it->second.phaseTime) > iaSettings.GetUserDelay())
       {
       it->second.phase = 1;
       gettimeofday(&it->second.phaseTime, NULL);
       //it->second.phaseTime = stgTime;
       //#ifdef IA_DEBUG
       printfd(__FILE__, "Phase changed from 2 to 1. Reason: timeout $s \n" , sip );
       //#endif

?

где тут адрес или имя юзверя? какого типа тут переменные? нифига не понимаю... :)

Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...