LDAP Group Membership
Josh Essar
jessar at kvcc.edu
Thu Apr 24 23:13:43 CEST 2014
I have having some problems with ldap group checking. Our students do
not have a common group that they are a member of. They are all a member
of a group based on their username (ST_Students for every student that
has a username that start with st). We then have groups based off each
letter of the alphabet (S_Students would contain the SA_Students through
SZ_Students groups). We then have another group called students, that
has the A_Students through Z_Students groups.
I know this is overly complex, but that is how our administrative
computing department has set things up. I would like to use the student
group to allow access to a wireless network. My current rule is as
follows.
if ((Called-Station-SSID == "Test2) && (LDAP-Group == "students")) {
noop
}
When the test user sexample5555 connects, they get denied because their
account is a member of the SE_Students group. The SE_Students group is a
member of the S_Students group, and that group is a member of the
students group....but the user is not a direct member of the students
group.
Is there an easy solution that I am missing?
Here is the full debug output. I know some things are not 100% correct.
We are still in the testing phase.
freeradius: FreeRADIUS Version 3.0.2, for host x86_64-pc-linux-gnu,
built on Apr 7 2014 at 08:43:37
Copyright (C) 1999-2014 The FreeRADIUS server project and contributors
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE
You may redistribute copies of FreeRADIUS under the terms of the
GNU General Public License
For more information about these matters, see the file named COPYRIGHT
Starting - reading configuration files ...
including dictionary file /usr/share/freeradius/dictionary
including dictionary file /etc/freeradius/dictionary
including configuration file /etc/freeradius/radiusd.conf
including configuration file /etc/freeradius/proxy.conf
including configuration file /etc/freeradius/clients.conf
including files in directory /etc/freeradius/mods-enabled/
including configuration file /etc/freeradius/mods-enabled/eap
including configuration file /etc/freeradius/mods-enabled/preprocess
including configuration file /etc/freeradius/mods-enabled/expiration
including configuration file /etc/freeradius/mods-enabled/replicate
including configuration file /etc/freeradius/mods-enabled/sradutmp
including configuration file /etc/freeradius/mods-enabled/detail.log
including configuration file /etc/freeradius/mods-enabled/exec
including configuration file /etc/freeradius/mods-enabled/realm
including configuration file /etc/freeradius/mods-enabled/ntlm_auth
including configuration file /etc/freeradius/mods-enabled/logintime
including configuration file /etc/freeradius/mods-enabled/attr_filter
including configuration file /etc/freeradius/mods-enabled/files
including configuration file /etc/freeradius/mods-enabled/radutmp
including configuration file /etc/freeradius/mods-enabled/mschap
including configuration file /etc/freeradius/mods-enabled/cache_eap
including configuration file /etc/freeradius/mods-enabled/always
including configuration file /etc/freeradius/mods-enabled/chap
including configuration file /etc/freeradius/mods-enabled/unpack
including configuration file /etc/freeradius/mods-enabled/ldap
including configuration file /etc/freeradius/mods-enabled/detail
including configuration file /etc/freeradius/mods-enabled/echo
including configuration file /etc/freeradius/mods-enabled/linelog
including configuration
file /etc/freeradius/mods-enabled/dynamic_clients
including configuration file /etc/freeradius/mods-enabled/utf8
including files in directory /etc/freeradius/policy.d/
including configuration file /etc/freeradius/policy.d/eap
including configuration file /etc/freeradius/policy.d/filter
including configuration file /etc/freeradius/policy.d/canonicalization
including configuration file /etc/freeradius/policy.d/operator-name
including configuration file /etc/freeradius/policy.d/dhcp
including configuration file /etc/freeradius/policy.d/control
including configuration file /etc/freeradius/policy.d/accounting
including configuration file /etc/freeradius/policy.d/cui
including files in directory /etc/freeradius/sites-enabled/
including configuration file /etc/freeradius/sites-enabled/wifi
including configuration file /etc/freeradius/sites-enabled/inner-tunnel
including configuration file /etc/freeradius/sites-enabled/default
main {
security {
user = "freerad"
group = "freerad"
allow_core_dumps = no
}
}
main {
name = "freeradius"
prefix = "/usr"
localstatedir = "/var"
sbindir = "/usr/sbin"
logdir = "/var/log/freeradius"
run_dir = "/var/run/freeradius"
libdir = "/usr/lib/freeradius"
radacctdir = "/var/log/freeradius/radacct"
hostname_lookups = no
max_request_time = 30
cleanup_delay = 5
max_requests = 1024
pidfile = "/var/run/freeradius/freeradius.pid"
checkrad = "/usr/sbin/checkrad"
debug_level = 0
proxy_requests = yes
log {
stripped_names = no
auth = no
auth_badpass = no
auth_goodpass = no
colourise = yes
msg_denied = "You are already logged in - access denied"
}
security {
max_attributes = 200
reject_delay = 1
status_server = yes
}
}
radiusd: #### Loading Realms and Home Servers ####
proxy server {
retry_delay = 5
retry_count = 3
default_fallback = no
dead_time = 120
wake_all_if_all_dead = no
}
home_server localhost {
ipaddr = 127.0.0.1
port = 1812
type = "auth"
secret = <<< secret >>>
response_window = 20
max_outstanding = 65536
zombie_period = 40
status_check = "status-server"
ping_interval = 30
check_interval = 30
num_answers_to_alive = 3
revive_interval = 120
status_check_timeout = 4
coa {
irt = 2
mrt = 16
mrc = 5
mrd = 30
}
limit {
max_connections = 16
max_requests = 0
lifetime = 0
idle_timeout = 0
}
}
realm LOCAL {
}
home_server_pool my_auth_failover {
type = fail-over
home_server = localhost
}
radiusd: #### Loading Clients ####
client localhost {
ipaddr = 127.0.0.1
require_message_authenticator = no
secret = <<< secret >>>
nas_type = "other"
proto = "*"
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30
}
}
client our-wireless-controller.our.domain {
require_message_authenticator = no
secret = <<< secret >>>
shortname = "ttcbluesocket"
virtual_server = "wifi"
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30
}
}
No 'ipaddr' or 'ipv6addr' field found in client
our-wireless-controller.our.domain. Please fix your configuration
Support for old-style clients will be removed in a future release
radiusd: #### Instantiating modules ####
instantiate {
}
modules {
# Loaded module rlm_eap
# Instantiating module "eap" from
file /etc/freeradius/mods-enabled/eap
eap {
default_eap_type = "peap"
timer_expire = 60
ignore_unknown_eap_types = no
mod_accounting_username_bug = no
max_sessions = 4096
}
# Linked to sub-module rlm_eap_md5
# Linked to sub-module rlm_eap_leap
# Linked to sub-module rlm_eap_gtc
gtc {
challenge = "Password: "
auth_type = "PAP"
}
# Linked to sub-module rlm_eap_tls
tls {
tls = "tls-common"
}
tls-config tls-common {
rsa_key_exchange = no
dh_key_exchange = yes
rsa_key_length = 512
dh_key_length = 512
verify_depth = 0
ca_path = "/etc/freeradius/certs"
pem_file_type = yes
private_key_file = "/etc/freeradius/certs/server.pem"
certificate_file = "/etc/freeradius/certs/server.pem"
ca_file = "/etc/freeradius/certs/ca.pem"
private_key_password = <<< secret >>>
dh_file = "/etc/freeradius/certs/dh"
fragment_size = 1024
include_length = yes
check_crl = no
cipher_list = "DEFAULT"
ecdh_curve = "prime256v1"
cache {
enable = yes
lifetime = 24
max_entries = 255
}
verify {
}
ocsp {
enable = no
override_cert_url = yes
url = "http://127.0.0.1/ocsp/"
use_nonce = yes
timeout = 0
softfail = yes
}
}
# Linked to sub-module rlm_eap_ttls
ttls {
tls = "tls-common"
default_eap_type = "md5"
copy_request_to_tunnel = yes
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
include_length = yes
require_client_cert = no
}
Using cached TLS configuration from previous invocation
# Linked to sub-module rlm_eap_peap
peap {
tls = "tls-common"
default_method = "mschapv2"
copy_request_to_tunnel = yes
use_tunneled_reply = yes
proxy_tunneled_request_as_eap = yes
virtual_server = "inner-tunnel"
soh = no
require_client_cert = no
}
Using cached TLS configuration from previous invocation
# Linked to sub-module rlm_eap_mschapv2
mschapv2 {
with_ntdomain_hack = no
send_error = no
}
# Loaded module rlm_preprocess
# Instantiating module "preprocess" from
file /etc/freeradius/mods-enabled/preprocess
preprocess {
huntgroups = "/etc/freeradius/mods-config/preprocess/huntgroups"
hints = "/etc/freeradius/mods-config/preprocess/hints"
with_ascend_hack = no
ascend_channels_per_line = 23
with_ntdomain_hack = no
with_specialix_jetstream_hack = no
with_cisco_vsa_hack = no
with_alvarion_vsa_hack = no
}
reading pairlist file /etc/freeradius/mods-config/preprocess/huntgroups
reading pairlist file /etc/freeradius/mods-config/preprocess/hints
# Loaded module rlm_expiration
# Instantiating module "expiration" from
file /etc/freeradius/mods-enabled/expiration
# Loaded module rlm_replicate
# Instantiating module "replicate" from
file /etc/freeradius/mods-enabled/replicate
# Loaded module rlm_radutmp
# Instantiating module "sradutmp" from
file /etc/freeradius/mods-enabled/sradutmp
radutmp sradutmp {
filename = "/var/log/freeradius/sradutmp"
username = "%{User-Name}"
case_sensitive = yes
check_with_nas = yes
permissions = 420
caller_id = no
}
# Loaded module rlm_detail
# Instantiating module "auth_log" from
file /etc/freeradius/mods-enabled/detail.log
detail auth_log {
filename =
"/var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/auth-detail-%Y%m%d"
header = "%t"
permissions = 384
dir_permissions = 493
locking = no
log_packet_header = no
}
rlm_detail (auth_log): 'User-Password' suppressed, will not appear in
detail output
# Instantiating module "reply_log" from
file /etc/freeradius/mods-enabled/detail.log
detail reply_log {
filename =
"/var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/reply-detail-%Y%m%d"
header = "%t"
permissions = 384
dir_permissions = 493
locking = no
log_packet_header = no
}
# Instantiating module "pre_proxy_log" from
file /etc/freeradius/mods-enabled/detail.log
detail pre_proxy_log {
filename =
"/var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/pre-proxy-detail-%Y%m%d"
header = "%t"
permissions = 384
dir_permissions = 493
locking = no
log_packet_header = no
}
# Instantiating module "post_proxy_log" from
file /etc/freeradius/mods-enabled/detail.log
detail post_proxy_log {
filename =
"/var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/post-proxy-detail-%Y%m%d"
header = "%t"
permissions = 384
dir_permissions = 493
locking = no
log_packet_header = no
}
# Loaded module rlm_exec
# Instantiating module "exec" from
file /etc/freeradius/mods-enabled/exec
exec {
wait = no
input_pairs = "request"
shell_escape = yes
timeout = 10
}
# Loaded module rlm_realm
# Instantiating module "IPASS" from
file /etc/freeradius/mods-enabled/realm
realm IPASS {
format = "prefix"
delimiter = "/"
ignore_default = no
ignore_null = no
}
# Instantiating module "suffix" from
file /etc/freeradius/mods-enabled/realm
realm suffix {
format = "suffix"
delimiter = "@"
ignore_default = no
ignore_null = no
}
# Instantiating module "realmpercent" from
file /etc/freeradius/mods-enabled/realm
realm realmpercent {
format = "suffix"
delimiter = "%"
ignore_default = no
ignore_null = no
}
# Instantiating module "ntdomain" from
file /etc/freeradius/mods-enabled/realm
realm ntdomain {
format = "prefix"
delimiter = "\"
ignore_default = no
ignore_null = no
}
# Instantiating module "ntlm_auth" from
file /etc/freeradius/mods-enabled/ntlm_auth
exec ntlm_auth {
wait = yes
program = "/usr/bin/ntlm_auth --request-nt-key --domain=our.domain
--username=%{mschap:User-Name} --password=%{User-Password}"
shell_escape = yes
}
# Loaded module rlm_logintime
# Instantiating module "logintime" from
file /etc/freeradius/mods-enabled/logintime
logintime {
minimum_timeout = 60
}
# Loaded module rlm_attr_filter
# Instantiating module "attr_filter.post-proxy" from
file /etc/freeradius/mods-enabled/attr_filter
attr_filter attr_filter.post-proxy {
filename = "/etc/freeradius/mods-config/attr_filter/post-proxy"
key = "%{Realm}"
relaxed = no
}
reading pairlist file /etc/freeradius/mods-config/attr_filter/post-proxy
# Instantiating module "attr_filter.pre-proxy" from
file /etc/freeradius/mods-enabled/attr_filter
attr_filter attr_filter.pre-proxy {
filename = "/etc/freeradius/mods-config/attr_filter/pre-proxy"
key = "%{Realm}"
relaxed = no
}
reading pairlist file /etc/freeradius/mods-config/attr_filter/pre-proxy
# Instantiating module "attr_filter.access_reject" from
file /etc/freeradius/mods-enabled/attr_filter
attr_filter attr_filter.access_reject {
filename = "/etc/freeradius/mods-config/attr_filter/access_reject"
key = "%{User-Name}"
relaxed = no
}
reading pairlist
file /etc/freeradius/mods-config/attr_filter/access_reject
# Instantiating module "attr_filter.access_challenge" from
file /etc/freeradius/mods-enabled/attr_filter
attr_filter attr_filter.access_challenge {
filename = "/etc/freeradius/mods-config/attr_filter/access_challenge"
key = "%{User-Name}"
relaxed = no
}
reading pairlist
file /etc/freeradius/mods-config/attr_filter/access_challenge
# Instantiating module "attr_filter.accounting_response" from
file /etc/freeradius/mods-enabled/attr_filter
attr_filter attr_filter.accounting_response {
filename =
"/etc/freeradius/mods-config/attr_filter/accounting_response"
key = "%{User-Name}"
relaxed = no
}
reading pairlist
file /etc/freeradius/mods-config/attr_filter/accounting_response
# Loaded module rlm_files
# Instantiating module "files" from
file /etc/freeradius/mods-enabled/files
files {
filename = "/etc/freeradius/mods-config/files/authorize"
usersfile = "/etc/freeradius/mods-config/files/authorize"
acctusersfile = "/etc/freeradius/mods-config/files/accounting"
preproxy_usersfile = "/etc/freeradius/mods-config/files/pre-proxy"
compat = "no"
}
reading pairlist file /etc/freeradius/mods-config/files/authorize
reading pairlist file /etc/freeradius/mods-config/files/authorize
reading pairlist file /etc/freeradius/mods-config/files/accounting
reading pairlist file /etc/freeradius/mods-config/files/pre-proxy
# Instantiating module "radutmp" from
file /etc/freeradius/mods-enabled/radutmp
radutmp {
filename = "/var/log/freeradius/radutmp"
username = "%{User-Name}"
case_sensitive = yes
check_with_nas = yes
permissions = 384
caller_id = yes
}
# Loaded module rlm_mschap
# Instantiating module "mschap" from
file /etc/freeradius/mods-enabled/mschap
mschap {
use_mppe = yes
require_encryption = no
require_strong = no
with_ntdomain_hack = yes
ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=
%{%{Stripped-User-Name}:-%{%{mschap:User-Name}:-None}} --domain=
%{%{mschap:NT-Domain}:-our.domain} --challenge=
%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"
ntlm_auth_timeout = 10
passchange {
}
allow_retry = yes
}
# Loaded module rlm_cache
# Instantiating module "cache_eap" from
file /etc/freeradius/mods-enabled/cache_eap
cache cache_eap {
key = "%{%{control:State}:-%{%{reply:State}:-%{State}}}"
ttl = 15
max_entries = 16384
epoch = 0
add_stats = no
}
# Loaded module rlm_always
# Instantiating module "reject" from
file /etc/freeradius/mods-enabled/always
always reject {
rcode = "reject"
simulcount = 0
mpp = no
}
# Instantiating module "fail" from
file /etc/freeradius/mods-enabled/always
always fail {
rcode = "fail"
simulcount = 0
mpp = no
}
# Instantiating module "ok" from
file /etc/freeradius/mods-enabled/always
always ok {
rcode = "ok"
simulcount = 0
mpp = no
}
# Instantiating module "handled" from
file /etc/freeradius/mods-enabled/always
always handled {
rcode = "handled"
simulcount = 0
mpp = no
}
# Instantiating module "invalid" from
file /etc/freeradius/mods-enabled/always
always invalid {
rcode = "invalid"
simulcount = 0
mpp = no
}
# Instantiating module "userlock" from
file /etc/freeradius/mods-enabled/always
always userlock {
rcode = "userlock"
simulcount = 0
mpp = no
}
# Instantiating module "notfound" from
file /etc/freeradius/mods-enabled/always
always notfound {
rcode = "notfound"
simulcount = 0
mpp = no
}
# Instantiating module "noop" from
file /etc/freeradius/mods-enabled/always
always noop {
rcode = "noop"
simulcount = 0
mpp = no
}
# Instantiating module "updated" from
file /etc/freeradius/mods-enabled/always
always updated {
rcode = "updated"
simulcount = 0
mpp = no
}
# Loaded module rlm_chap
# Instantiating module "chap" from
file /etc/freeradius/mods-enabled/chap
# Loaded module rlm_unpack
# Instantiating module "unpack" from
file /etc/freeradius/mods-enabled/unpack
# Loaded module rlm_ldap
# Instantiating module "ldap" from
file /etc/freeradius/mods-enabled/ldap
ldap {
server = "server.our.domain"
port = 636
password = <<< secret >>>
identity = "ACCOUNT"
user {
filter = "(cn=%{%{mschap:User-Name}:-%{User-Name}})"
scope = "sub"
base_dn = "dc=our,dc=domain"
access_positive = yes
}
group {
filter = "(objectClass=posixGroup)"
scope = "sub"
base_dn = "dc=our,dc=domain"
name_attribute = "cn"
membership_attribute = "memberOf"
membership_filter = "(|(member=%{control:Ldap-UserDn})(memberUid=
%{%{mschap:User-Name}:-%{User-Name}}))"
cacheable_name = no
cacheable_dn = no
}
client {
filter = "(objectClass=frClient)"
scope = "sub"
base_dn = "dc=our,dc=domain"
attribute {
identifier = "radiusClientIdentifier"
shortname = "cn"
secret = "radiusClientSecret"
}
}
profile {
filter = "(&)"
}
options {
ldap_debug = 40
chase_referrals = yes
rebind = yes
net_timeout = 1
res_timeout = 20
srv_timelimit = 20
idle = 60
probes = 3
interval = 3
}
tls {
start_tls = no
}
}
accounting {
reference = "%{tolower:type.%{Acct-Status-Type}}"
}
post-auth {
reference = "."
}
rlm_ldap (ldap): Initialising connection pool
pool {
start = 5
min = 4
max = 32
spare = 3
uses = 0
lifetime = 0
cleanup_interval = 30
idle_timeout = 60
retry_delay = 1
spread = no
}
rlm_ldap (ldap): Opening additional connection (0)
rlm_ldap (ldap): Connecting to server.our.domain:636
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Opening additional connection (1)
rlm_ldap (ldap): Connecting to server.our.domain:636
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Opening additional connection (2)
rlm_ldap (ldap): Connecting to server.our.domain:636
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Opening additional connection (3)
rlm_ldap (ldap): Connecting to server.our.domain:636
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Opening additional connection (4)
rlm_ldap (ldap): Connecting to server.our.domain:636
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Bind successful
# Instantiating module "detail" from
file /etc/freeradius/mods-enabled/detail
detail {
filename =
"/var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/detail-%Y%m%d"
header = "%t"
permissions = 384
dir_permissions = 493
locking = no
log_packet_header = no
}
# Instantiating module "echo" from
file /etc/freeradius/mods-enabled/echo
exec echo {
wait = yes
program = "/bin/echo %{User-Name}"
input_pairs = "request"
output_pairs = "reply"
shell_escape = yes
}
# Loaded module rlm_linelog
# Instantiating module "linelog" from
file /etc/freeradius/mods-enabled/linelog
linelog {
filename = "/var/log/freeradius/linelog"
permissions = 384
format = "This is a log message for %{User-Name}"
reference = "%{%{Packet-Type}:-format}"
}
# Loaded module rlm_dynamic_clients
# Instantiating module "dynamic_clients" from
file /etc/freeradius/mods-enabled/dynamic_clients
# Loaded module rlm_utf8
# Instantiating module "utf8" from
file /etc/freeradius/mods-enabled/utf8
} # modules
radiusd: #### Loading Virtual Servers ####
server { # from file /etc/freeradius/radiusd.conf
} # server
server wifi { # from file /etc/freeradius/sites-enabled/wifi
# Loading authenticate {...}
# Loading authorize {...}
# Loading preacct {...}
# Loading accounting {...}
# Loading post-proxy {...}
# Loading post-auth {...}
} # server wifi
server inner-tunnel { # from
file /etc/freeradius/sites-enabled/inner-tunnel
# Creating Auth-Type = LDAP
# Loading authenticate {...}
# Loading authorize {...}
# Loading session {...}
# Loading post-proxy {...}
# Loading post-auth {...}
} # server inner-tunnel
server default { # from file /etc/freeradius/sites-enabled/default
# Loading authenticate {...}
# Loading authorize {...}
# Loading preacct {...}
# Loading accounting {...}
# Loading post-proxy {...}
# Loading post-auth {...}
} # server default
radiusd: #### Opening IP addresses and Ports ####
listen {
type = "auth"
ipaddr = *
port = 1912
limit {
max_connections = 26
lifetime = 0
idle_timeout = 30
}
}
listen {
type = "acct"
ipaddr = *
port = 0
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30
}
}
listen {
type = "auth"
ipaddr = 127.0.0.1
port = 18120
}
listen {
type = "auth"
ipaddr = *
port = 1812
limit {
max_connections = 26
lifetime = 0
idle_timeout = 30
}
}
listen {
type = "acct"
ipaddr = *
port = 0
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30
}
}
Listening on auth address * port 1912 as server wifi
Listening on acct address * port 1813 as server wifi
Listening on auth address 127.0.0.1 port 18120 as server inner-tunnel
Listening on auth address * port 1812 as server default
Listening on acct address * port 1813 as server default
Opening new proxy socket 'proxy address * port 0'
Listening on proxy address * port 33306
Ready to process requests.
rad_recv: Access-Request packet from host WIFI-CONTROLLER-IP port 1034,
id=39, length=174
User-Name = 'DOMAIN\\sexample5555'
NAS-Port = 0
Called-Station-Id = '00-19-92-04-7E-81:Test2'
Calling-Station-Id = '00-26-5E-31-33-3B'
Framed-MTU = 1400
Attr-26 = 0x000026ef030302
NAS-Port-Type = Wireless-802.11
Connect-Info = 'CONNECT 0Mbps 802.11'
EAP-Message = 0x025c0016014b5643435c736578616d706c6535353535
Message-Authenticator = 0x8c275779e337acf4e7eaccbf78cad923
(0) # Executing section authorize from
file /etc/freeradius/sites-enabled/wifi
(0) authorize {
(0) if (Called-Station-Id
=~ /([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_.]*)?/i)
(0) if (Called-Station-Id
=~ /([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_.]*)?/i) -> TRUE
(0) if (Called-Station-Id
=~ /([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_.]*)?/i) {
(0) update request {
(0) EXPAND %{7}
(0) --> Test2
(0) Called-Station-SSID := "Test2"
(0) } # update request = noop
(0) } # if (Called-Station-Id
=~ /([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_.]*)?/i) = noop
(0) if ((Called-Station-SSID == "Test2") && (LDAP-Group ==
"students"))
(0) Searching for user in group "students"
rlm_ldap (ldap): Reserved connection (4)
(0) EXPAND (cn=%{%{mschap:User-Name}:-%{User-Name}})
(0) --> (cn=sexample5555)
(0) EXPAND dc=our,dc=domain
(0) --> dc=our,dc=domain
(0) Performing search in 'dc=our,dc=domain' with filter
'(cn=sexample5555)', scope 'sub'
(0) Waiting for search result...
rlm_ldap (ldap): Rebinding to URL
ldaps://ForestDnsZones.our.domain/DC=ForestDnsZones,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Rebinding to URL
ldaps://domainainDnsZones.our.domain/DC=DomainDnsZones,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Rebinding to URL
ldaps://our.domain/CN=Configuration,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Bind successful
User object found at DN
"CN=sexample5555,OU=OUR-OU,OU=OUR-OU,OU=OUR-OU,OU=people,DC=our,DC=domain"
(0) Checking for user in group objects
(0) EXPAND (&(cn=students)(objectClass=posixGroup)(|(member=
%{control:Ldap-UserDn})(memberUid=
%{%{mschap:User-Name}:-%{User-Name}})))
(0) --> (&(cn=students)(objectClass=posixGroup)(|(member=CN
\3dsexample5555\2cOU\3dse_students\2cOU\3dS_students\2cOU\3dstudents
\2cOU\3dpeople\2cDC\3dour\2cDC\3ddom)(memberUid=sexample5555)))
(0) EXPAND dc=our,dc=domain
(0) --> dc=our,dc=domain
(0) Waiting for bind result...
(0) Bind successful
(0) Performing search in 'dc=our,dc=domain' with filter
'(&(cn=students)(objectClass=posixGroup)(|(member=CN\3dsexample5555\2cOU
\3dse_students\2cOU\3dS_students\2cOU\3dstudents\2cOU\3dpeople\2cDC
\3dour\2cDC\3ddom)(memberUid=sexample5555)))', scope 'sub'
(0) Waiting for search result...
rlm_ldap (ldap): Rebinding to URL
ldaps://ForestDnsZones.our.domain/DC=ForestDnsZones,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Rebinding to URL
ldaps://DomainDnsZones.our.domain/DC=DomainDnsZones,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Rebinding to URL
ldaps://our.dom/CN=Configuration,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Bind successful
(0) Search returned no results
(0) Search returned not found
(0) Checking user object membership (memberOf) attributes
(0) Waiting for bind result...
(0) Bind successful
(0) Performing unfiltered search in
'CN=sexample5555,OU=se_students,OU=S_students,OU=students,OU=people,DC=our,DC=domain', scope 'base'
(0) Waiting for search result...
(0) Processing group membership value
"CN=GROUP1,OU=_Section-Groups,OU=students,OU=people,DC=our,DC=domain"
(0) Converting group DN to group Name
(0) Performing unfiltered search in
'CN=GROUP1,OU=_Section-Groups,OU=students,OU=people,DC=our,DC=domain',
scope 'base'
(0) Waiting for search result...
(0) Group name is "GROUP1"
(0) Processing group membership value
"CN=GROUP2,OU=groups,DC=our,DC=domain"
(0) Converting group DN to group Name
(0) Performing unfiltered search in
'CN=GROUP2,OU=groups,DC=our,DC=domain', scope 'base'
(0) Waiting for search result...
(0) Group name is "GROUP2"
(0) Processing group membership value
"CN=SE_students,OU=se_students,OU=S_students,OU=students,OU=people,DC=our,DC=domain"
(0) Converting group DN to group Name
(0) Performing unfiltered search in
'CN=SE_students,OU=se_students,OU=S_students,OU=students,OU=people,DC=our,DC=domain', scope 'base'
(0) Waiting for search result...
(0) Group name is "SE_students"
(0) Processing group membership value
"CN=GROUP4,OU=_Dept-Groups,OU=students,OU=people,DC=our,DC=domain"
(0) Converting group DN to group Name
(0) Performing unfiltered search in
'CN=GROUP4,OU=_Dept-Groups,OU=students,OU=people,DC=our,DC=domain',
scope 'base'
(0) Waiting for search result...
(0) Group name is "GROUP4"
(0) Processing group membership value
"CN=GROUP5,OU=staff,OU=people,DC=our,DC=domain"
(0) Converting group DN to group Name
(0) Performing unfiltered search in
'CN=GROUP5,OU=staff,OU=people,DC=our,DC=domain', scope 'base'
(0) Waiting for search result...
(0) Group name is "GROUP5"
rlm_ (ldap): Deleting connection (4)
(0) User is not a member of specified group
(0) if ((Called-Station-SSID == "Test2") && (LDAP-Group ==
"students")) -> FALSE
(0) else else {
(0) [reject] = reject
(0) } # else else = reject
(0) } # authorize = reject
(0) Using Post-Auth-Type Reject
(0) # Executing group from file /etc/freeradius/sites-enabled/wifi
(0) Post-Auth-Type REJECT {
(0) attr_filter.access_reject : EXPAND %{User-Name}
(0) attr_filter.access_reject : --> DOMAIN\sexample5555
(0) attr_filter.access_reject : Matched entry DEFAULT at line 11
(0) [attr_filter.access_reject] = updated
(0) eap : Request was previously rejected, inserting EAP-Failure
(0) [eap] = updated
(0) remove_reply_message_if_eap remove_reply_message_if_eap {
(0) if (reply:EAP-Message && reply:Reply-Message)
(0) if (reply:EAP-Message && reply:Reply-Message) -> FALSE
(0) else else {
(0) [noop] = noop
(0) } # else else = noop
(0) } # remove_reply_message_if_eap remove_reply_message_if_eap = noop
(0) } # Post-Auth-Type REJECT = updated
(0) Delaying reject of request 0 for 1 seconds
Waking up in 0.2 seconds.
Waking up in 0.7 seconds.
(0) Sending delayed reject
Sending Access-Reject of id 39 from Radius-Server port 1912 to
WIFI-CONTROLLER-IP port 1034
EAP-Message = 0x045c0004
Message-Authenticator = 0x00000000000000000000000000000000
Waking up in 3.9 seconds.
rad_recv: Access-Request packet from host WIFI-CONTROLLER-IP port 1034,
id=40, length=174
User-Name = 'our\\sexample5555'
NAS-Port = 0
Called-Station-Id = '00-19-92-04-7E-81:Test2'
Calling-Station-Id = '00-26-5E-31-33-3B'
Framed-MTU = 1400
Attr-26 = 0x000026ef030302
NAS-Port-Type = Wireless-802.11
Connect-Info = 'CONNECT 0Mbps 802.11'
EAP-Message = 0x02b00016014b5643435c736578616d706c6535353535
Message-Authenticator = 0xfc98b83654758f9d0071ba123c21ca2e
(1) # Executing section authorize from
file /etc/freeradius/sites-enabled/wifi
(1) authorize {
(1) if (Called-Station-Id
=~ /([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_.]*)?/i)
(1) if (Called-Station-Id
=~ /([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_.]*)?/i) -> TRUE
(1) if (Called-Station-Id
=~ /([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_.]*)?/i) {
(1) update request {
(1) EXPAND %{7}
(1) --> Test2
(1) Called-Station-SSID := "Test2"
(1) } # update request = noop
(1) } # if (Called-Station-Id
=~ /([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_.]*)?/i) = noop
(1) if ((Called-Station-SSID == "Test2") && (LDAP-Group ==
"students"))
(1) Searching for user in group "students"
rlm_ldap (ldap): Reserved connection (3)
(1) EXPAND (cn=%{%{mschap:User-Name}:-%{User-Name}})
(1) --> (cn=sexample5555)
(1) EXPAND dc=our,dc=domain
(1) --> dc=our,dc=domain
(1) Performing search in 'dc=our,dc=domain' with filter
'(cn=sexample5555)', scope 'sub'
(1) Waiting for search result...
rlm_ldap (ldap): Rebinding to URL
ldaps://ForestDnsZones.our.domain/DC=ForestDnsZones,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Rebinding to URL
ldaps://DomainDnsZones.our.domain/DC=DomainDnsZones,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Rebinding to URL
ldaps://our.domain/CN=Configuration,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Bind successful
(1) User object found at DN
"CN=sexample5555,OU=OUR-OU,OU=OUR-OU,OU=OUR-OU,OU=people,DC=our,DC=domain"
(1) Checking for user in group objects
(1) EXPAND (&(cn=students)(objectClass=posixGroup)(|(member=
%{control:Ldap-UserDn})(memberUid=
%{%{mschap:User-Name}:-%{User-Name}})))
(1) --> (&(cn=students)(objectClass=posixGroup)(|(member=CN
\3dsexample5555\2cOU\3dse_students\2cOU\3dS_students\2cOU\3dstudents
\2cOU\3dpeople\2cDC\3dour\2cDC\3ddom)(memberUid=sexample5555)))
(1) EXPAND dc=our,dc=domain
(1) --> dc=our,dc=domain
(1) Waiting for bind result...
(1) Bind successful
(1) Performing search in 'dc=our,dc=domain' with filter
'(&(cn=students)(objectClass=posixGroup)(|(member=CN\3dsexample5555\2cOU
\3dse_students\2cOU\3dS_students\2cOU\3dstudents\2cOU\3dpeople\2cDC
\3dour\2cDC\3ddom)(memberUid=sexample5555)))', scope 'sub'
(1) Waiting for search result...
rlm_ldap (ldap): Rebinding to URL
ldaps://ForestDnsZones.our.domain/DC=ForestDnsZones,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Rebinding to URL
ldaps://DomainDnsZones.our.domain/DC=DomainDnsZones,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Rebinding to URL
ldaps://our.domain/CN=Configuration,DC=our,DC=domain
rlm_ldap (ldap): Waiting for bind result...
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Bind successful
rlm_ldap (ldap): Bind successful
(1) Search returned no results
(1) Search returned not found
(1) Checking user object membership (memberOf) attributes
(1) Waiting for bind result...
(1) Bind successful
(1) Performing unfiltered search in
'CN=sexample5555,OU=se_students,OU=S_students,OU=students,OU=people,DC=our,DC=domain', scope 'base'
(1) Waiting for search result...
(1) Processing group membership value
"CN=GROUP1,OU=_Section-Groups,OU=students,OU=people,DC=our,DC=domain"
(1) Converting group DN to group Name
(1) Performing unfiltered search in
'CN=GROUP1,OU=_Section-Groups,OU=students,OU=people,DC=our,DC=domain',
scope 'base'
(1) Waiting for search result...
(1) Group name is "GROUP1"
(1) Processing group membership value
"CN=GROUP2,OU=groups,DC=our,DC=domain"
(1) Converting group DN to group Name
(1) Performing unfiltered search in
'CN=GROUP2,OU=groups,DC=our,DC=domain', scope 'base'
(1) Waiting for search result...
(1) Group name is "GROUP2"
(1) Processing group membership value
"CN=SE_students,OU=se_students,OU=S_students,OU=students,OU=people,DC=our,DC=domain"
(1) Converting group DN to group Name
(1) Performing unfiltered search in
'CN=SE_students,OU=se_students,OU=S_students,OU=students,OU=people,DC=our,DC=domain', scope 'base'
(1) Waiting for search result...
(1) Group name is "SE_students"
(1) Processing group membership value
"CN=GROUP4,OU=_Dept-Groups,OU=students,OU=people,DC=our,DC=domain"
(1) Converting group DN to group Name
(1) Performing unfiltered search in
'CN=GROUP4,OU=_Dept-Groups,OU=students,OU=people,DC=our,DC=domain',
scope 'base'
(1) Waiting for search result...
(1) Group name is "GROUP4"
(1) Processing group membership value
"CN=GROUP5,OU=staff,OU=people,DC=our,DC=domain"
(1) Converting group DN to group Name
(1) Performing unfiltered search in
'CN=GROUP5,OU=staff,OU=people,DC=our,DC=domain', scope 'base'
(1) Waiting for search result...
(1) Group name is "GROUP5"
rlm_ldap (ldap): Deleting connection (3)
(1) User is not a member of specified group
(1) if ((Called-Station-SSID == "Test2") && (LDAP-Group ==
"students")) -> FALSE
(1) else else {
(1) [reject] = reject
(1) } # else else = reject
(1) } # authorize = reject
(1) Using Post-Auth-Type Reject
(1) # Executing group from file /etc/freeradius/sites-enabled/wifi
(1) Post-Auth-Type REJECT {
(1) attr_filter.access_reject : EXPAND %{User-Name}
(1) attr_filter.access_reject : --> DOMAIN\sexample5555
(1) attr_filter.access_reject : Matched entry DEFAULT at line 11
(1) [attr_filter.access_reject] = updated
(1) eap : Request was previously rejected, inserting EAP-Failure
(1) [eap] = updated
(1) remove_reply_message_if_eap remove_reply_message_if_eap {
(1) if (reply:EAP-Message && reply:Reply-Message)
(1) if (reply:EAP-Message && reply:Reply-Message) -> FALSE
(1) else else {
(1) [noop] = noop
(1) } # else else = noop
(1) } # remove_reply_message_if_eap remove_reply_message_if_eap = noop
(1) } # Post-Auth-Type REJECT = updated
(1) Delaying reject of request 1 for 1 seconds
Waking up in 0.2 seconds.
Waking up in 0.7 seconds.
(1) Sending delayed reject
Sending Access-Reject of id 40 from SERVER-IP port 1912 to
WIFI-CONTROLLER-IP port 1034
EAP-Message = 0x04b00004
Message-Authenticator = 0x00000000000000000000000000000000
Waking up in 1.3 seconds.
(0) Cleaning up request packet ID 39 with timestamp +6
Waking up in 2.6 seconds.
Thanks!
-Josh
More information about the Freeradius-Users
mailing list