Cayz 0 Опубликовано: 2009-10-07 18:06:21 Share Опубликовано: 2009-10-07 18:06:21 Debian 5, amd-64. stg-2.406, пробовал freeradius 1.1.3 и 1.1.8 собранные из сырцов radiusd.conf prefix = /usr/local exec_prefix = ${prefix} sysconfdir = ${prefix}/etc localstatedir = ${prefix}/var sbindir = ${exec_prefix}/sbin logdir = ${localstatedir}/log/radius raddbdir = ${sysconfdir}/raddb radacctdir = ${logdir}/radacct confdir = ${raddbdir} run_dir = ${localstatedir}/run/radiusd log_file = ${logdir}/radius.log libdir = ${exec_prefix}/lib pidfile = ${run_dir}/radiusd.pid #user = nobody #group = nobody max_request_time = 30 delete_blocked_requests = no cleanup_delay = 5 max_requests = 1024 #bind_address = * #port = 0 listen { ipaddr = * port = 0 type = auth } listen { ipaddr = * port = 0 type = acct } hostname_lookups = no allow_core_dumps = no regular_expressions = yes extended_expressions = yes log_stripped_names = no log_auth = no log_auth_badpass = no log_auth_goodpass = no usercollide = no lower_user = no lower_pass = no nospace_user = no nospace_pass = no security { max_attributes = 200 reject_delay = 1 status_server = no } client 127.0.0.1 { secret = 123456 shortname = localhost } thread pool { start_servers = 5 max_servers = 32 min_spare_servers = 3 max_spare_servers = 10 max_requests_per_server = 0 } modules { ### STG stg{ local_port = 6667 server = localhost port = 6666 password = 123456 } pap { encryption_scheme = crypt } chap { authtype = CHAP } mschap { } } # Instantiation instantiate { stg } authorize { stg chap mschap } # Authentication. authenticate { stg Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } } accounting { stg } session { } post-auth { stg } При попытке подключения VPN radiusd в лог пишет такое: Wed Oct 7 18:57:58 2009 : Error: Discarding duplicate request from client localhost:41179 - ID: 66 due to unfinished request 0 Если слушать tcpdump-ом localhost, то видно, что radiusclient обращается к freeradius, но на порту 6666 тихо, rlm_stg не хочет разговаривать с stg сервером. Если запустить radiusd -X, то radius# radiusd -x Starting - reading configuration files ... Using deprecated naslist file. Support for this will go away soon. rlm_stg: stg_init() Module: Loaded stg rlm_stg: stg_instantiate() Module: Instantiated stg (stg) Module: Loaded PAP Module: Instantiated pap (pap) Module: Loaded CHAP Module: Instantiated chap (chap) Module: Loaded MS-CHAP Module: Instantiated mschap (mschap) Initializing the thread pool... Listening on authentication *:1812 Listening on accounting *:1813 Ready to process requests. ,но но только стоит попытаться подключить VPN получается так: Initializing the thread pool... Listening on authentication *:1812 Listening on accounting *:1813 Ready to process requests. rad_recv: Access-Request packet from host 127.0.0.1:41321, id=70, length=63 Service-Type = Framed-User Framed-Protocol = PPP User-Name = "test" Calling-Station-Id = "10.92.170.8" NAS-IP-Address = 127.0.0.1 NAS-Port = 0 rlm_stg: stg_authorize() Ошибка сегментирования Подскажите плиз как заставить его работать, на какой версии freeradius должно рабоать, на какой системе тестировалось и работало? спасибо Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-08 10:09:37 Share Опубліковано: 2009-10-08 10:09:37 rlm_stg: stg_authorize() Ошибка сегментирования Вот и ответ. Возможно, потому что 64-битная система. Я на таких не тестировал. Надо разбираться. Ссылка на сообщение Поделиться на других сайтах
Cayz 0 Опубліковано: 2009-10-08 20:54:09 Автор Share Опубліковано: 2009-10-08 20:54:09 Походу не в тот раздел написал), это к разработке больше относится... В общем ситуация такая... Я не пишу на C и C++, но думаю что читать могу), хотя не факт что правильно, в общем что я пронаблюдал... В модулях таких как chap, pap и возможно в других, но не рылся особо предусмотрены проверки в плане того что пришло в функцию и прочее, например в authorize, в качестве параметра типа REQUEST. В rlm stg проверки небыло, я потыкался, добавил перед обращениям к структуре проверки, если то что надо не пришло, return RLM_MODULE_NOOP; вроде в передаваемом request что-то есть, какие-то данные передаются, но не все, некоторые поля просто NULL. Вот когда они NULL и к ним идёт обращение(обращение к членам, ссылка на которые NULL, думаю правильно выразился) - и получается segfault. По крайней мере при таком варианте через authorize пролетает без вопросов возвращает noop, и debug об этом пишет. При вызове radtest, та же ситуация повторилась в post-auth, тоже проверку добавил, но от этого не легче - ничего всё равно не работает так как ожидается, зато нет segfault-ов. Мне думается, что раз функции вызываются и работают, то скорее всего дело не совсем в разрядности системы... хотя хз... Сейчас у меня это добро находиться на отдельном тестовом компе (debian amd-64), если есть возможность и желание посмотреть и изучить ситуацию, то дам на неё ssh доступ. Особенно буду благодарен и рад, если проблема решится, так как мои 4,5-летние ВПН-костыли морально устарели, задолбали и оч. хочется их заменгить на нормальную auth систему. спасибо. Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-09 09:22:28 Share Опубліковано: 2009-10-09 09:22:28 Походу не в тот раздел написал), это к разработке больше относится... Не важно В общем ситуация такая...Я не пишу на C и C++, но думаю что читать могу), хотя не факт что правильно, в общем что я пронаблюдал... Побольше бы таких людей - глядишь и настало бы всемирное счастье и программы перестали бы глючить В модулях таких как chap, pap и возможно в других, но не рылся особо предусмотрены проверки в плане того что пришло в функцию и прочее, например в authorize, в качестве параметра типа REQUEST. В rlm stg проверки небыло, я потыкался, добавил перед обращениям к структуре проверки, если то что надо не пришло, return RLM_MODULE_NOOP; вроде в передаваемом request что-то есть, какие-то данные передаются, но не все, некоторые поля просто NULL. Вот когда они NULL и к ним идёт обращение(обращение к членам, ссылка на которые NULL, думаю правильно выразился) - и получается segfault. По крайней мере при таком варианте через authorize пролетает без вопросов возвращает noop, и debug об этом пишет. Я писал этот код по ихнему примеру. Возможно в старых версиях этих проверок небыло. Там стоят только проверки на члены структуры (NULL / не NULL). Ты прав, при разименовании нулевого указателя на структуру возникает SIGSEGV (буквально месяц назад была устранена уязвимость в ядре вызваная тем-же). Но непонятно почему в функцию приходит нулевой указатель. По моему это бессмысленно. При вызове radtest, та же ситуация повторилась в post-auth, тоже проверку добавил, но от этого не легче - ничего всё равно не работает так как ожидается, зато нет segfault-ов. Мне думается, что раз функции вызываются и работают, то скорее всего дело не совсем в разрядности системы... хотя хз...Сейчас у меня это добро находиться на отдельном тестовом компе (debian amd-64), если есть возможность и желание посмотреть и изучить ситуацию, то дам на неё ssh доступ. Особенно буду благодарен и рад, если проблема решится, так как мои 4,5-летние ВПН-костыли морально устарели, задолбали и оч. хочется их заменгить на нормальную auth систему. спасибо. То есть и authorize и post-auth вызываются с нулевыми указателями? Естественно оно не будет работать. А что в логах? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-09 13:51:08 Share Опубліковано: 2009-10-09 13:51:08 Нашел интересную информацию: Segmentation fault after migrating from 2.0.5 to 2.1.1 Тут, правда, про ветку 2, но симптомы очень похожи... Как вариант - попробовать собрать FreeRADIUS самостоятельно, из исходников... Пардон, не обратил внимание на то что они и так собраны из исходников. Тогда посмотреть флаги компиляции. Может оптимизация мешает? Ссылка на сообщение Поделиться на других сайтах
Cayz 0 Опубліковано: 2009-10-09 20:02:56 Автор Share Опубліковано: 2009-10-09 20:02:56 приеду в понедельник попробую потыкаться, может ещё что нибудь придумаю. Ссылка на сообщение Поделиться на других сайтах
Cayz 0 Опубліковано: 2009-10-15 15:19:19 Автор Share Опубліковано: 2009-10-15 15:19:19 В общем неосилил. Но не беда приделал rlm_perl+sgconf, в общем то получилось то, чего хотел, даже несколько больше... madf, есть вопрос.... Я вот решил юзером раздать динамические IP, открывая для себя возможности freeradius и rlm_perl, оказалось что реализовать не сложно, при коннекте радиус дёргает sgconf и сообщает новый IP. Не напряжно ли будет для ядра stg, менять IP с такой периодичностью, особенно при старте сервера например, когда все хотят воткнуться в pptp, а их иногда около полтысячи бывает? Просто на реальных зверьках тестить как-то стрёмно. Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-15 17:01:23 Share Опубліковано: 2009-10-15 17:01:23 В общем неосилил.Но не беда приделал rlm_perl+sgconf, в общем то получилось то, чего хотел, даже несколько больше... madf, есть вопрос.... Я вот решил юзером раздать динамические IP, открывая для себя возможности freeradius и rlm_perl, оказалось что реализовать не сложно, при коннекте радиус дёргает sgconf и сообщает новый IP. Не напряжно ли будет для ядра stg, менять IP с такой периодичностью, особенно при старте сервера например, когда все хотят воткнуться в pptp, а их иногда около полтысячи бывает? Просто на реальных зверьках тестить как-то стрёмно. Честно говоря, напряжно. Конфигуратор неторопливо работает, а одновременно к старгейзеру можно присоединить только 1 конфигуратор. Но ты попробуй, может и получится. Ссылка на сообщение Поделиться на других сайтах
Cayz 0 Опубліковано: 2009-10-15 21:23:38 Автор Share Опубліковано: 2009-10-15 21:23:38 А один - это чисто из за безопасности, чтобы небыло коллизий при попытке изменения каких-либо жизненно-важных параметров, или просто из за того, что небыло необходимости при разработке системы? В догонку... Напишу стреесс-тест-скрипт, меняющий параметры. Позже сообщу о результатах. Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-16 04:58:23 Share Опубліковано: 2009-10-16 04:58:23 Небыло необходимости Ссылка на сообщение Поделиться на других сайтах
Cayz 0 Опубліковано: 2009-10-17 11:21:42 Автор Share Опубліковано: 2009-10-17 11:21:42 По скорости всё норм, примерно на запрос и установку параметров 0.17 сек - а этого очень даже достаточно. Даже при нескольких потоках вроде как сносно, пока кто-то работает, осстальные переждут. Но вот WIN32 конфигуратор в это время не вхож в общую струю. Если бы можно было подключить более одного модуля конфигуратора с разными портами к старгейзеру, один для консольного, второй для виндового, было бы супер. А так конечно все идеи сразу отпадают. Ссылка на сообщение Поделиться на других сайтах
Cayz 0 Опубліковано: 2009-10-17 11:42:28 Автор Share Опубліковано: 2009-10-17 11:42:28 А оказалось что можно Закомпилил модуль, назвал conf_sg2 Ему свою конфу в сгконф и оно поехало!!! Круто!!! madf, как думаешь, при одновременном использовании двух mod_conf_sg приколов неожиданных никаких не будет? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-19 07:34:05 Share Опубліковано: 2009-10-19 07:34:05 Ну то что можно подключить два модуля конфигуратора - это не ново. Уже в какой-то теме пробегало. По идее они друг другу мешать никак не должны, но гарантии дать не могу, т.к. в таком варианте я систему не тестировал. Ссылка на сообщение Поделиться на других сайтах
archik 0 Опубліковано: 2009-10-20 18:02:39 Share Опубліковано: 2009-10-20 18:02:39 Уважаемый madf , подскажите в какую сторону копать Centos 5.2 freeradius-1.1.3 stargazer 2.406 В логе старгейзера пусто, есть только сведения о старте. radiusd -X rad_recv: Access-Request packet from host 127.0.0.1:32783, id=247, length=148 Service-Type = Framed-User Framed-Protocol = PPP User-Name = "test" MS-CHAP-Challenge = 0x2fc419d12f81c6bc87ffcf0b9e2bb3a4 MS-CHAP2-Response = 0x4b00133e52ad0172a50163bbe435e71f22e80000000000000000edff64ccd5e494acaf5f38f4c95de2f4763b95ddda92068b Calling-Station-Id = "192.168.59.125" NAS-IP-Address = 127.0.0.1 NAS-Port = 20 Processing the authorize section of radiusd.conf modcall: entering group authorize for request 6 modcall[authorize]: module "preprocess" returns ok for request 6 modcall[authorize]: module "chap" returns noop for request 6 rlm_mschap: Found MS-CHAP attributes. Setting 'Auth-Type = mschap' modcall[authorize]: module "mschap" returns ok for request 6 rlm_realm: No '@' in User-Name = "test", looking up realm NULL rlm_realm: No such realm "NULL" modcall[authorize]: module "suffix" returns noop for request 6 rlm_eap: No EAP-Message, not doing EAP modcall[authorize]: module "eap" returns noop for request 6 users: Matched entry DEFAULT at line 152 users: Matched entry DEFAULT at line 171 users: Matched entry DEFAULT at line 183 modcall[authorize]: module "files" returns ok for request 6 rlm_stg: stg_authorize() rlm_stg: stg_authorize() user name defined as 'test' rlm_stg: stg_authorize() request username field: 'test' rlm_stg: stg_authorize() Service-Type defined as 'Framed-User' modcall[authorize]: module "stg" returns updated for request 6 modcall: leaving group authorize (returns updated) for request 6 rad_check_password: Found Auth-Type MS-CHAP auth: type "MS-CHAP" Processing the authenticate section of radiusd.conf modcall: entering group MS-CHAP for request 6 rlm_stg: stg_authenticate() rlm_stg: stg_authenticate() Service-Type defined as 'Framed-User' modcall[authenticate]: module "stg" returns noop for request 6 rlm_mschap: No User-Password configured. Cannot create LM-Password. rlm_mschap: No User-Password configured. Cannot create NT-Password. rlm_mschap: Told to do MS-CHAPv2 for test with NT-Password rlm_mschap: FAILED: No NT/LM-Password. Cannot perform authentication. rlm_mschap: FAILED: MS-CHAP2-Response is incorrect modcall[authenticate]: module "mschap" returns reject for request 6 modcall: leaving group MS-CHAP (returns reject) for request 6 auth: Failed to validate the user. Delaying request 6 for 1 seconds Finished request 6 Going to the next request --- Walking the entire request list --- Waking up in 1 seconds... --- Walking the entire request list --- Sending Access-Reject of id 247 to 127.0.0.1 port 32783 Waking up in 3 seconds... --- Walking the entire request list --- Cleaning up request 6 ID 247 with timestamp 4addfa28 Nothing to do. Sleeping until we see a request. radiusd.conf prefix = /usr exec_prefix = /usr sysconfdir = /etc localstatedir = /var sbindir = /usr/sbin logdir = ${localstatedir}/log/radius raddbdir = ${sysconfdir}/raddb radacctdir = ${logdir}/radacct confdir = ${raddbdir} run_dir = ${localstatedir}/run/radiusd log_file = ${logdir}/radius.log libdir = /usr/lib pidfile = ${run_dir}/radiusd.pid user = radiusd group = radiusd max_request_time = 30 delete_blocked_requests = no cleanup_delay = 5 max_requests = 1024 bind_address = * port = 0 hostname_lookups = no allow_core_dumps = no regular_expressions = yes extended_expressions = yes log_stripped_names = no log_auth = no log_auth_badpass = no log_auth_goodpass = no usercollide = no lower_user = no lower_pass = no nospace_user = no nospace_pass = no checkrad = ${sbindir}/checkrad security { max_attributes = 200 reject_delay = 1 status_server = no } proxy_requests = yes $INCLUDE ${confdir}/proxy.conf $INCLUDE ${confdir}/clients.conf snmp = no $INCLUDE ${confdir}/snmp.conf thread pool { start_servers = 5 max_servers = 32 min_spare_servers = 3 max_spare_servers = 10 max_requests_per_server = 0 } modules { pap { encryption_scheme = crypt } chap { authtype = CHAP } pam { pam_auth = radiusd } unix { cache = no cache_reload = 600 shadow = /etc/shadow radwtmp = ${logdir}/radwtmp } $INCLUDE ${confdir}/eap.conf mschap { } ldap { server = "ldap.your.domain" basedn = "o=My Org,c=UA" filter = "(uid=%{Stripped-User-Name:-%{User-Name}})" start_tls = no access_attr = "dialupAccess" dictionary_mapping = ${raddbdir}/ldap.attrmap ldap_connections_number = 5 timeout = 4 timelimit = 3 net_timeout = 1 } realm IPASS { format = prefix delimiter = "/" ignore_default = no ignore_null = no } realm suffix { format = suffix delimiter = "@" ignore_default = no ignore_null = no } realm realmpercent { format = suffix delimiter = "%" ignore_default = no ignore_null = no } realm ntdomain { format = prefix delimiter = "\\" ignore_default = no ignore_null = no } checkval { item-name = Calling-Station-Id check-name = Calling-Station-Id data-type = string } preprocess { huntgroups = ${confdir}/huntgroups hints = ${confdir}/hints with_ascend_hack = no ascend_channels_per_line = 23 with_ntdomain_hack = no with_specialix_jetstream_hack = no with_cisco_vsa_hack = no } files { usersfile = ${confdir}/users acctusersfile = ${confdir}/acct_users preproxy_usersfile = ${confdir}/preproxy_users compat = no } detail { detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d detailperm = 0600 } acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port" } radutmp { filename = ${logdir}/radutmp username = %{User-Name} case_sensitive = yes check_with_nas = yes perm = 0600 callerid = "yes" } radutmp sradutmp { filename = ${logdir}/sradutmp perm = 0644 callerid = "no" } attr_filter { attrsfile = ${confdir}/attrs } counter daily { filename = ${raddbdir}/db.daily key = User-Name count-attribute = Acct-Session-Time reset = daily counter-name = Daily-Session-Time check-name = Max-Daily-Session allowed-servicetype = Framed-User cache-size = 5000 } sqlcounter dailycounter { counter-name = Daily-Session-Time check-name = Max-Daily-Session sqlmod-inst = sql key = User-Name reset = daily query = "SELECT SUM(AcctSessionTime - \ GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \ FROM radacct WHERE UserName='%{%k}' AND \ UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'" } sqlcounter monthlycounter { counter-name = Monthly-Session-Time check-name = Max-Monthly-Session sqlmod-inst = sql key = User-Name reset = monthly query = "SELECT SUM(AcctSessionTime - \ GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \ FROM radacct WHERE UserName='%{%k}' AND \ UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'" } always fail { rcode = fail } always reject { rcode = reject } always ok { rcode = ok simulcount = 0 mpp = no } expr { } digest { } exec { wait = yes input_pairs = request } exec echo { wait = yes program = "/bin/echo %{User-Name}" input_pairs = request output_pairs = reply } ippool main_pool { range-start = 192.168.1.1 range-stop = 192.168.3.254 netmask = 255.255.255.0 cache-size = 800 session-db = ${raddbdir}/db.ippool ip-index = ${raddbdir}/db.ipindex override = no maximum-timeout = 0 } stg { local_port = 6667 server = localhost port = 7666 password = 123456 } } instantiate { stg exec expr } authorize { preprocess chap mschap suffix eap files stg } authenticate { Auth-Type PAP { stg pap } Auth-Type CHAP { stg chap } Auth-Type MS-CHAP { stg mschap } unix eap } preacct { preprocess acct_unique suffix files } accounting { detail unix radutmp stg } session { radutmp } post-auth { stg } pre-proxy { } post-proxy { eap } В качестве базы stargazer испольщую тектовые файлы. Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-20 18:26:42 Share Опубліковано: 2009-10-20 18:26:42 Уважаемый madf , подскажите в какую сторону копать Centos 5.2 freeradius-1.1.3 stargazer 2.406 В логе старгейзера пусто, есть только сведения о старте. radiusd -X ... rlm_stg: stg_authenticate() rlm_stg: stg_authenticate() Service-Type defined as 'Framed-User' modcall[authenticate]: module "stg" returns noop for request 6 rlm_mschap: No User-Password configured. Cannot create LM-Password. rlm_mschap: No User-Password configured. Cannot create NT-Password. rlm_mschap: Told to do MS-CHAPv2 for test with NT-Password rlm_mschap: FAILED: No NT/LM-Password. Cannot perform authentication. rlm_mschap: FAILED: MS-CHAP2-Response is incorrect modcall[authenticate]: module "mschap" returns reject for request 6 modcall: leaving group MS-CHAP (returns reject) for request 6 auth: Failed to validate the user. ... В качестве базы stargazer испольщую тектовые файлы. В файле rlm_stg.cpp в строке 188 Cleartext-Password заменить на User-Password. Чесно говоря, я так и не понял в каких случаях используется одно, а в каких другое. Может их вместо указывать... Ссылка на сообщение Поделиться на других сайтах
archik 0 Опубліковано: 2009-10-21 18:06:42 Share Опубліковано: 2009-10-21 18:06:42 Спасибо, помогло. Теперь борюсь с проблемой следующего характера, при попытках одновременно подключиться 20 и более пользователей радиус не авторизует никого при этом в логе radius.log Wed Oct 21 20:03:07 2009 : Error: Discarding duplicate request from client localhost:37630 - ID: 58 due to unfinished request 65 Wed Oct 21 20:03:07 2009 : Error: Discarding duplicate request from client localhost:37631 - ID: 59 due to unfinished request 66 Wed Oct 21 20:03:07 2009 : Error: Discarding duplicate request from client localhost:37626 - ID: 54 due to unfinished request 61 Wed Oct 21 20:03:07 2009 : Error: Discarding duplicate request from client localhost:37632 - ID: 60 due to unfinished request 67 Wed Oct 21 20:03:08 2009 : Error: WARNING: Unresponsive child (id 2539559824) for request 57 Wed Oct 21 20:03:09 2009 : Error: Discarding duplicate request from client localhost:37633 - ID: 61 due to unfinished request 68 Wed Oct 21 20:03:09 2009 : Error: WARNING: Unresponsive child (id 2529069968) for request 58 Wed Oct 21 20:03:09 2009 : Error: Discarding duplicate request from client localhost:37637 - ID: 62 due to unfinished request 69 Wed Oct 21 20:03:11 2009 : Error: Discarding duplicate request from client localhost:37638 - ID: 63 due to unfinished request 70 немного исправленный конфиг radiusd.conf prefix = /usr exec_prefix = /usr sysconfdir = /etc localstatedir = /var sbindir = /usr/sbin logdir = ${localstatedir}/log/radius raddbdir = ${sysconfdir}/raddb radacctdir = ${logdir}/radacct confdir = ${raddbdir} run_dir = ${localstatedir}/run/radiusd log_file = ${logdir}/radius.log libdir = /usr/lib pidfile = ${run_dir}/radiusd.pid user = radiusd group = radiusd max_request_time = 30 delete_blocked_requests = no cleanup_delay = 20 max_requests = 256000 bind_address = 127.0.0.1 port = 0 hostname_lookups = no allow_core_dumps = no regular_expressions = yes extended_expressions = yes log_stripped_names = no log_auth = no log_auth_badpass = no log_auth_goodpass = no usercollide = no lower_user = no lower_pass = no nospace_user = no nospace_pass = no checkrad = ${sbindir}/checkrad security { max_attributes = 200 reject_delay = 1 status_server = no } proxy_requests = no $INCLUDE ${confdir}/proxy.conf $INCLUDE ${confdir}/clients.conf snmp = no $INCLUDE ${confdir}/snmp.conf thread pool { start_servers = 10 max_servers = 100 min_spare_servers = 3 max_spare_servers = 10 max_requests_per_server = 0 } modules { pap { encryption_scheme = crypt } chap { authtype = CHAP } pam { pam_auth = radiusd } unix { cache = no cache_reload = 600 shadow = /etc/shadow radwtmp = ${logdir}/radwtmp } $INCLUDE ${confdir}/eap.conf mschap { } ldap { server = "ldap.your.domain" basedn = "o=My Org,c=UA" filter = "(uid=%{Stripped-User-Name:-%{User-Name}})" start_tls = no access_attr = "dialupAccess" dictionary_mapping = ${raddbdir}/ldap.attrmap ldap_connections_number = 5 timeout = 4 timelimit = 3 net_timeout = 1 } realm IPASS { format = prefix delimiter = "/" ignore_default = no ignore_null = no } realm suffix { format = suffix delimiter = "@" ignore_default = no ignore_null = no } realm realmpercent { format = suffix delimiter = "%" ignore_default = no ignore_null = no } realm ntdomain { format = prefix delimiter = "\\" ignore_default = no ignore_null = no } checkval { item-name = Calling-Station-Id check-name = Calling-Station-Id data-type = string } preprocess { huntgroups = ${confdir}/huntgroups hints = ${confdir}/hints with_ascend_hack = no ascend_channels_per_line = 23 with_ntdomain_hack = no with_specialix_jetstream_hack = no with_cisco_vsa_hack = no } files { usersfile = ${confdir}/users acctusersfile = ${confdir}/acct_users preproxy_usersfile = ${confdir}/preproxy_users compat = no } detail { detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d detailperm = 0600 } acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port" } radutmp { filename = ${logdir}/radutmp username = %{User-Name} case_sensitive = yes check_with_nas = yes perm = 0600 callerid = "yes" } radutmp sradutmp { filename = ${logdir}/sradutmp perm = 0644 callerid = "no" } attr_filter { attrsfile = ${confdir}/attrs } counter daily { filename = ${raddbdir}/db.daily key = User-Name count-attribute = Acct-Session-Time reset = daily counter-name = Daily-Session-Time check-name = Max-Daily-Session allowed-servicetype = Framed-User cache-size = 5000 } sqlcounter dailycounter { counter-name = Daily-Session-Time check-name = Max-Daily-Session sqlmod-inst = sql key = User-Name reset = daily query = "SELECT SUM(AcctSessionTime - \ GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \ FROM radacct WHERE UserName='%{%k}' AND \ UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'" } sqlcounter monthlycounter { counter-name = Monthly-Session-Time check-name = Max-Monthly-Session sqlmod-inst = sql key = User-Name reset = monthly query = "SELECT SUM(AcctSessionTime - \ GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \ FROM radacct WHERE UserName='%{%k}' AND \ UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'" } always fail { rcode = fail } always reject { rcode = reject } always ok { rcode = ok simulcount = 0 mpp = no } expr { } digest { } exec { wait = yes input_pairs = request } exec echo { wait = yes program = "/bin/echo %{User-Name}" input_pairs = request output_pairs = reply } ippool main_pool { range-start = 192.168.1.1 range-stop = 192.168.3.254 netmask = 255.255.255.0 cache-size = 800 session-db = ${raddbdir}/db.ippool ip-index = ${raddbdir}/db.ipindex override = no maximum-timeout = 0 } stg { local_port = 6667 server = localhost port = 7666 password = 123456 } } instantiate { stg # exec # expr } authorize { preprocess chap mschap # suffix # eap # files stg } authenticate { Auth-Type PAP { stg pap } Auth-Type CHAP { stg chap } Auth-Type MS-CHAP { stg mschap } # unix # eap } preacct { preprocess acct_unique suffix files } accounting { detail unix radutmp stg } session { radutmp } post-auth { stg } pre-proxy { } post-proxy { eap } Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-22 07:34:09 Share Опубліковано: 2009-10-22 07:34:09 Струдно сказать что это. Либо проблема в самом FreeRADIUS либо в том что процесс авторизации занимает много времени. Ссылка на сообщение Поделиться на других сайтах
rem_lex 2 Опубліковано: 2010-04-15 21:36:29 Share Опубліковано: 2010-04-15 21:36:29 приделал rlm_perl+sgconf, в общем то получилось то, чего хотел, даже несколько больше... а можно пример показать? Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас