Перейти к содержимому
Local
Cayz

Radius Rlm_stg - не хочет работать

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

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 должно рабоать, на какой системе тестировалось и работало?

 

спасибо

Поделиться сообщением


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

rlm_stg: stg_authorize()
Ошибка сегментирования

Вот и ответ.

Возможно, потому что 64-битная система. Я на таких не тестировал. Надо разбираться.

Поделиться сообщением


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

Походу не в тот раздел написал), это к разработке больше относится...

В общем ситуация такая...

Я не пишу на 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 систему.

спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Походу не в тот раздел написал), это к разработке больше относится...

Не важно

В общем ситуация такая...

Я не пишу на 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 вызываются с нулевыми указателями? Естественно оно не будет работать.

А что в логах?

Поделиться сообщением


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

Нашел интересную информацию: Segmentation fault after migrating from 2.0.5 to 2.1.1

Тут, правда, про ветку 2, но симптомы очень похожи...

Как вариант - попробовать собрать FreeRADIUS самостоятельно, из исходников...

 

Пардон, не обратил внимание на то что они и так собраны из исходников. Тогда посмотреть флаги компиляции. Может оптимизация мешает?

Поделиться сообщением


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

приеду в понедельник попробую потыкаться, может ещё что нибудь придумаю.

Поделиться сообщением


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

В общем неосилил.

Но не беда приделал rlm_perl+sgconf, в общем то получилось то, чего хотел, даже несколько больше...

 

madf, есть вопрос....

Я вот решил юзером раздать динамические IP, открывая для себя возможности freeradius и rlm_perl, оказалось что реализовать не сложно, при коннекте радиус дёргает sgconf и сообщает новый IP. Не напряжно ли будет для ядра stg, менять IP с такой периодичностью, особенно при старте сервера например, когда все хотят воткнуться в pptp, а их иногда около полтысячи бывает? Просто на реальных зверьках тестить как-то стрёмно.

Поделиться сообщением


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

Но не беда приделал rlm_perl+sgconf, в общем то получилось то, чего хотел, даже несколько больше...

 

madf, есть вопрос....

Я вот решил юзером раздать динамические IP, открывая для себя возможности freeradius и rlm_perl, оказалось что реализовать не сложно, при коннекте радиус дёргает sgconf и сообщает новый IP. Не напряжно ли будет для ядра stg, менять IP с такой периодичностью, особенно при старте сервера например, когда все хотят воткнуться в pptp, а их иногда около полтысячи бывает? Просто на реальных зверьках тестить как-то стрёмно.

Честно говоря, напряжно. Конфигуратор неторопливо работает, а одновременно к старгейзеру можно присоединить только 1 конфигуратор. Но ты попробуй, может и получится.

Поделиться сообщением


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

А один - это чисто из за безопасности, чтобы небыло коллизий при попытке изменения каких-либо жизненно-важных параметров, или просто из за того, что небыло необходимости при разработке системы?

 

В догонку...

Напишу стреесс-тест-скрипт, меняющий параметры. Позже сообщу о результатах.

Поделиться сообщением


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

Небыло необходимости

Поделиться сообщением


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

По скорости всё норм, примерно на запрос и установку параметров 0.17 сек - а этого очень даже достаточно. Даже при нескольких потоках вроде как сносно, пока кто-то работает, осстальные переждут. Но вот WIN32 конфигуратор в это время не вхож в общую струю.

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

Поделиться сообщением


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

А оказалось что можно :)

Закомпилил модуль, назвал conf_sg2

Ему свою конфу в сгконф и оно поехало!!!

Круто!!!

madf, как думаешь, при одновременном использовании двух mod_conf_sg приколов неожиданных никаких не будет?

Поделиться сообщением


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

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

Поделиться сообщением


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

Уважаемый 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 , подскажите в какую сторону копать

 

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.

Чесно говоря, я так и не понял в каких случаях используется одно, а в каких другое. Может их вместо указывать...

Поделиться сообщением


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

Спасибо, помогло.

Теперь борюсь с проблемой следующего характера, при попытках одновременно подключиться 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

}

Поделиться сообщением


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

Струдно сказать что это. Либо проблема в самом FreeRADIUS либо в том что процесс авторизации занимает много времени.

Поделиться сообщением


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

приделал rlm_perl+sgconf, в общем то получилось то, чего хотел, даже несколько больше...

а можно пример показать?

Поделиться сообщением


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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×