<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content="MSHTML 6.00.6000.16981" name=GENERATOR></HEAD>
<BODY style="MARGIN: 4px 4px 1px; FONT: 10pt Tahoma">
<DIV>Some background on what we have here:</DIV>
<DIV> </DIV>
<DIV>- We have a Cisco wireless infrastructure (WLC 4400, a bunch of 1131s) and clients running SecureW2 supplicant. We want to authenticate and </DIV>
<DIV> </DIV>
<DIV>authorize them against our directory services. <BR>The 802.1x/EAP-TTLS/PAP method was suggested and we went with it.<BR>- user's directory is eDirectory and accessed via Novell LDAP v3 interface. (authentication is working and SSL secured [SLDAP])<BR>- Radius server is on separate hardware, OS is Novell SUSE Enterprise Linux (SLES) 10 SP3 and is NOT running eDirectory.<BR>- FreeRADIUS 2.1.8 downloaded from FreeRADIUS.org and built from scratch with -eDIR options (compiled perfectly into RPMs and installed into </DIV>
<DIV> </DIV>
<DIV>OS perfectly).<BR>- Config files and debug output to follow the base email below.</DIV>
<DIV> </DIV>
<DIV>- I have my NAS listed in the huntgroups.config<BR>- I set correct type of NAS in the file "/etc/raddb/clients.config". I set it to "cisco" (We assume this directs "checkrad.pl" to use that </DIV>
<DIV> </DIV>
<DIV>method)<BR>- I set the username to SNMP, password is the community string in the clients config<BR>- I have accounting turned on my NAS and we see accounting messages coming in when sessions expire.(see debug output below)</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>We can't get simultaneous login to work. We are trying to restrict simultaneous use to allow only one user to be logged at once.</DIV>
<DIV> </DIV>
<DIV>(1) </DIV>
<DIV> </DIV>
<DIV>Some things that we have picked up on are that the checkrad.pl perl script is not able to access the Cisco 4400 wireless controller's data </DIV>
<DIV> </DIV>
<DIV>properly <BR>to access the session information. I think this may be partly us not knowing how a session is considered unique and two how the cisco section </DIV>
<DIV> </DIV>
<DIV>in the script polls<BR>the MIB for session data. We know based on the new Cisco Airespace MIB that sessions are listed by MAC address but from there not sure how to </DIV>
<DIV> </DIV>
<DIV>map<BR>that onto what FreeRADIUS is looking for. SNMP access to the device is working, we can see the request on the line using Wireshark and </DIV>
<DIV> </DIV>
<DIV>snmpwalk returns system data.</DIV>
<DIV> </DIV>
<DIV>Perhaps it has something to do with adding Simultaneous-use parameter to <BR> <BR>the check items first line. I am not sure where to find "check items". </DIV>
<DIV> </DIV>
<DIV>Our usernames are coming from eDirectory and we have followed the Novell documentation on what to do there. The data is then presented to </DIV>
<DIV> </DIV>
<DIV>FreeRADIUS via LDAP.<BR>When I go into Radius users using Novell iManager I can see some options for "check items" but none are set. <BR> </DIV>
<DIV> </DIV>
<DIV>(2) <BR>Another oddity is radwho. When the user logs in the first time they show up in radwho. When I have someone login again using the same </DIV>
<DIV> </DIV>
<DIV>username but on a different laptop the newest login <BR> <BR>overwrites the entry in radwho instead of adding to it. Should that not be a separate unique session and thus two should appear in the </DIV>
<DIV> </DIV>
<DIV>listing?<BR> <BR>I have read the documentation:<BR> <BR>- I installed the mrtg package (to allow the chekrad.pl to talk SNMP natively and that does work just not polling the right data we think)<BR>- I put this line in the "/raddb/users.config" file at the top of the file (the first non commented line):<BR> <BR> DEFAULT Simultaneous-Use := 1<BR> Fall-Through = 1<BR> <BR>We are not doing groups, everyone in our directory is allowed on the wireless so we used "DEFAULT".</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV><BR>Here is my debug output when I start radius:</DIV>
<DIV> </DIV>
<DIV><BR>radius:~ # radiusd -X<BR>FreeRADIUS Version 2.1.8, for host i686-suse-linux-gnu, built on Jan 23 2010 at 01:51:06<BR>Copyright (C) 1999-2009 The FreeRADIUS server project and contributors.<BR>There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A<BR>PARTICULAR PURPOSE.<BR>You may redistribute copies of FreeRADIUS under the terms of the<BR>GNU General Public License v2.<BR>Starting - reading configuration files ...<BR>including configuration file /etc/raddb/radiusd.conf<BR>including configuration file /etc/raddb/clients.conf<BR>including files in directory /etc/raddb/modules/<BR>including configuration file /etc/raddb/modules/cui<BR>including configuration file /etc/raddb/modules/pam<BR>including configuration file /etc/raddb/modules/pap<BR>including configuration file /etc/raddb/modules/otp<BR>including configuration file /etc/raddb/modules/chap<BR>including configuration file /etc/raddb/modules/echo<BR>including configuration file /etc/raddb/modules/exec<BR>including configuration file /etc/raddb/modules/expr<BR>including configuration file /etc/raddb/modules/ldap<BR>including configuration file /etc/raddb/modules/krb5<BR>including configuration file /etc/raddb/modules/perl<BR>including configuration file /etc/raddb/modules/unix<BR>including configuration file /etc/raddb/modules/inner-eap<BR>including configuration file /etc/raddb/modules/radutmp<BR>including configuration file /etc/raddb/modules/counter<BR>including configuration file /etc/raddb/modules/acct_unique<BR>including configuration file /etc/raddb/modules/files<BR>including configuration file /etc/raddb/modules/realm<BR>including configuration file /etc/raddb/modules/wimax<BR>including configuration file /etc/raddb/modules/mac2vlan<BR>including configuration file /etc/raddb/modules/linelog<BR>including configuration file /etc/raddb/modules/sqlcounter_expire_on_login<BR>including configuration file /etc/raddb/modules/detail.example.com<BR>including configuration file /etc/raddb/modules/checkval<BR>including configuration file /etc/raddb/modules/ntlm_auth<BR>including configuration file /etc/raddb/modules/logintime<BR>including configuration file /etc/raddb/modules/sql_log<BR>including configuration file /etc/raddb/modules/sradutmp<BR>including configuration file /etc/raddb/modules/always<BR>including configuration file /etc/raddb/modules/attr_rewrite<BR>including configuration file /etc/raddb/modules/detail<BR>including configuration file /etc/raddb/modules/digest<BR>including configuration file /etc/raddb/modules/ippool<BR>including configuration file /etc/raddb/modules/mac2ip<BR>including configuration file /etc/raddb/modules/mschap<BR>including configuration file /etc/raddb/modules/smbpasswd<BR>including configuration file /etc/raddb/modules/passwd<BR>including configuration file /etc/raddb/modules/policy<BR>including configuration file /etc/raddb/modules/smsotp<BR>including configuration file /etc/raddb/modules/etc_group<BR>including configuration file /etc/raddb/modules/preprocess<BR>including configuration file /etc/raddb/modules/attr_filter<BR>including configuration file /etc/raddb/modules/detail.log<BR>including configuration file /etc/raddb/modules/expiration<BR>including configuration file /etc/raddb/eap.conf<BR>including configuration file /etc/raddb/policy.conf<BR>including files in directory /etc/raddb/sites-enabled/<BR>including configuration file /etc/raddb/sites-enabled/default<BR>including configuration file /etc/raddb/sites-enabled/inner-tunnel<BR>including configuration file /etc/raddb/sites-enabled/control-socket<BR>main {<BR> user = "radiusd"<BR> group = "radiusd"<BR> allow_core_dumps = no<BR>}<BR>including dictionary file /etc/raddb/dictionary<BR>main {<BR> prefix = "/usr"<BR> localstatedir = "/var"<BR> logdir = "/var/log/radius"<BR> libdir = "/usr/lib/freeradius"<BR> radacctdir = "/var/log/radius/radacct"<BR> hostname_lookups = no<BR> max_request_time = 30<BR> cleanup_delay = 5<BR> max_requests = 1024<BR> pidfile = "/var/run/radiusd/radiusd.pid"<BR> checkrad = "/usr/sbin/checkrad"<BR> debug_level = 0<BR> proxy_requests = yes<BR> log {<BR> stripped_names = no<BR> auth = no<BR> auth_badpass = no<BR> auth_goodpass = no<BR> }<BR> security {<BR> max_attributes = 200<BR> reject_delay = 1<BR> status_server = yes<BR> }<BR>}<BR>radiusd: #### Loading Realms and Home Servers ####<BR>radiusd: #### Loading Clients ####<BR> client 172.16.33.2 {<BR> require_message_authenticator = no<BR> secret = 11111<BR> shortname = "wlc-nsac-exteng-4404-6"<BR> nastype = "cisco"<BR> }<BR> client 172.16.33.4 {<BR> require_message_authenticator = no<BR> secret = "1111"<BR> shortname = "wlc-nsac-exteng-4404-7"<BR> nastype = "cisco"<BR> }<BR> client 172.16.19.130 {<BR> require_message_authenticator = no<BR> secret = "1111"<BR> nastype = "other"<BR> }<BR> client 172.16.3.107 {<BR> require_message_authenticator = no<BR> secret = "1111"<BR> nastype = "other"<BR> }<BR> client 172.16.19.132 {<BR> require_message_authenticator = no<BR> secret = "1111"<BR> nastype = "other"<BR> }<BR>radiusd: #### Instantiating modules ####<BR> instantiate {<BR> Module: Linked to module rlm_exec<BR> Module: Instantiating exec<BR> exec {<BR> wait = no<BR> input_pairs = "request"<BR> shell_escape = yes<BR> }<BR> Module: Linked to module rlm_expr<BR> Module: Instantiating expr<BR> Module: Linked to module rlm_expiration<BR> Module: Instantiating expiration<BR> expiration {<BR> reply-message = "Password Has Expired "<BR> }<BR> Module: Linked to module rlm_logintime<BR> Module: Instantiating logintime<BR> logintime {<BR> reply-message = "You are calling outside your allowed timespan "<BR> minimum-timeout = 60<BR> }<BR> }<BR>radiusd: #### Loading Virtual Servers ####<BR>server inner-tunnel {<BR> modules {<BR> Module: Checking authenticate {...} for more modules to load<BR> Module: Linked to module rlm_pap<BR> Module: Instantiating pap<BR> pap {<BR> encryption_scheme = "auto"<BR> auto_header = no<BR> }<BR> Module: Linked to module rlm_chap<BR> Module: Instantiating chap<BR> Module: Linked to module rlm_mschap<BR> Module: Instantiating mschap<BR> mschap {<BR> use_mppe = yes<BR> require_encryption = no<BR> require_strong = no<BR> with_ntdomain_hack = no<BR> }<BR> Module: Linked to module rlm_unix<BR> Module: Instantiating unix<BR> unix {<BR> radwtmp = "/var/log/radius/radwtmp"<BR> }<BR> Module: Linked to module rlm_eap<BR> Module: Instantiating eap<BR> eap {<BR> default_eap_type = "md5"<BR> timer_expire = 60<BR> ignore_unknown_eap_types = no<BR> cisco_accounting_username_bug = no<BR> max_sessions = 4096<BR> }<BR> Module: Linked to sub-module rlm_eap_md5<BR> Module: Instantiating eap-md5<BR> Module: Linked to sub-module rlm_eap_leap<BR> Module: Instantiating eap-leap<BR> Module: Linked to sub-module rlm_eap_gtc<BR> Module: Instantiating eap-gtc<BR> gtc {<BR> challenge = "Password: "<BR> auth_type = "PAP"<BR> }<BR> Module: Linked to sub-module rlm_eap_tls<BR> Module: Instantiating eap-tls<BR> tls {<BR> rsa_key_exchange = no<BR> dh_key_exchange = yes<BR> rsa_key_length = 512<BR> dh_key_length = 512<BR> verify_depth = 0<BR> pem_file_type = yes<BR> private_key_file = "/etc/raddb/certs/server.pem"<BR> certificate_file = "/etc/raddb/certs/server.pem"<BR> CA_file = "/etc/raddb/certs/ca.pem"<BR> private_key_password = "whatever"<BR> dh_file = "/etc/raddb/certs/dh"<BR> random_file = "/etc/raddb/certs/random"<BR> fragment_size = 1024<BR> include_length = yes<BR> check_crl = no<BR> cipher_list = "DEFAULT"<BR> make_cert_command = "/etc/raddb/certs/bootstrap"<BR> cache {<BR> enable = no<BR> lifetime = 24<BR> max_entries = 255<BR> }<BR> }<BR> Module: Linked to sub-module rlm_eap_ttls<BR> Module: Instantiating eap-ttls<BR> ttls {<BR> default_eap_type = "md5"<BR> copy_request_to_tunnel = no<BR> use_tunneled_reply = yes<BR> include_length = yes<BR> }<BR> Module: Linked to sub-module rlm_eap_peap<BR> Module: Instantiating eap-peap<BR> peap {<BR> default_eap_type = "mschapv2"<BR> copy_request_to_tunnel = no<BR> use_tunneled_reply = no<BR> proxy_tunneled_request_as_eap = yes<BR> virtual_server = "inner-tunnel"<BR> }<BR> Module: Linked to sub-module rlm_eap_mschapv2<BR> Module: Instantiating eap-mschapv2<BR> mschapv2 {<BR> with_ntdomain_hack = no<BR> }<BR> Module: Checking authorize {...} for more modules to load<BR> Module: Linked to module rlm_realm<BR> Module: Instantiating suffix<BR> realm suffix {<BR> format = "suffix"<BR> delimiter = "@"<BR> ignore_default = no<BR> ignore_null = no<BR> }<BR> Module: Linked to module rlm_files<BR> Module: Instantiating files<BR> files {<BR> usersfile = "/etc/raddb/users"<BR> acctusersfile = "/etc/raddb/acct_users"<BR> preproxy_usersfile = "/etc/raddb/preproxy_users"<BR> compat = "no"<BR> }<BR> Module: Checking session {...} for more modules to load<BR> Module: Linked to module rlm_radutmp<BR> Module: Instantiating radutmp<BR> radutmp {<BR> filename = "/var/log/radius/radutmp"<BR> username = "%{User-Name}"<BR> case_sensitive = yes<BR> check_with_nas = yes<BR> perm = 384<BR> callerid = yes<BR> }<BR> Module: Checking post-proxy {...} for more modules to load<BR> Module: Checking post-auth {...} for more modules to load<BR> Module: Linked to module rlm_ldap<BR> Module: Instantiating ldap<BR> ldap {<BR> server = "172.16.3.52"<BR> port = 636<BR> password = "111111"<BR> identity = "cn=THELDAPBIND,ou=USERS,o=NSAC"<BR> net_timeout = 1<BR> timeout = 4<BR> timelimit = 3<BR> tls_mode = no<BR> start_tls = no<BR> tls_require_cert = "allow"<BR> tls {<BR> start_tls = no<BR> cacertfile = "/etc/raddb/certs/cert.b64"<BR> require_cert = "demand"<BR> }<BR> basedn = "o=NSAC"<BR> filter = "(&(uid=%{%{Stripped-User-Name}:-%{User-Name}})(!(THELDAPBIND=1)))"<BR> base_filter = "(objectclass=radiusprofile)"<BR> password_attribute = "11111"<BR> auto_header = no<BR> access_attr_used_for_allow = yes<BR> groupname_attribute = "cn"<BR> groupmembership_filter = </DIV>
<DIV> </DIV>
<DIV>"(|(&(objectClass=GroupOfNames)(member=%{Ldap-UserDn}))(&(objectClass=GroupOfUniqueNames)(uniquemember=%{Ldap-UserDn})))"<BR> dictionary_mapping = "/etc/raddb/ldap.attrmap"<BR> ldap_debug = 0<BR> ldap_connections_number = 5<BR> compare_check_items = no<BR> do_xlat = yes<BR> edir_account_policy_check = yes<BR> set_auth_type = yes<BR> }<BR>rlm_ldap: Registering ldap_groupcmp for Ldap-Group<BR>rlm_ldap: Registering ldap_xlat with xlat_name ldap<BR>rlm_ldap: Over-riding set_auth_type, as there is no module ldap listed in the "authenticate" section.<BR>rlm_ldap: reading ldap<->radius mappings from file /etc/raddb/ldap.attrmap<BR>rlm_ldap: LDAP radiusCheckItem mapped to RADIUS $GENERIC$<BR>rlm_ldap: LDAP radiusReplyItem mapped to RADIUS $GENERIC$<BR>rlm_ldap: LDAP radiusAuthType mapped to RADIUS Auth-Type<BR>rlm_ldap: LDAP radiusSimultaneousUse mapped to RADIUS Simultaneous-Use<BR>rlm_ldap: LDAP radiusCalledStationId mapped to RADIUS Called-Station-Id<BR>rlm_ldap: LDAP radiusCallingStationId mapped to RADIUS Calling-Station-Id<BR>rlm_ldap: LDAP lmPassword mapped to RADIUS LM-Password<BR>rlm_ldap: LDAP ntPassword mapped to RADIUS NT-Password<BR>rlm_ldap: LDAP sambaLmPassword mapped to RADIUS LM-Password<BR>rlm_ldap: LDAP sambaNtPassword mapped to RADIUS NT-Password<BR>rlm_ldap: LDAP dBCSPwd mapped to RADIUS LM-Password<BR>rlm_ldap: LDAP acctFlags mapped to RADIUS SMB-Account-CTRL-TEXT<BR>rlm_ldap: LDAP radiusExpiration mapped to RADIUS Expiration<BR>rlm_ldap: LDAP radiusNASIpAddress mapped to RADIUS NAS-IP-Address<BR>rlm_ldap: LDAP radiusServiceType mapped to RADIUS Service-Type<BR>rlm_ldap: LDAP radiusFramedProtocol mapped to RADIUS Framed-Protocol<BR>rlm_ldap: LDAP radiusFramedIPAddress mapped to RADIUS Framed-IP-Address<BR>rlm_ldap: LDAP radiusFramedIPNetmask mapped to RADIUS Framed-IP-Netmask<BR>rlm_ldap: LDAP radiusFramedRoute mapped to RADIUS Framed-Route<BR>rlm_ldap: LDAP radiusFramedRouting mapped to RADIUS Framed-Routing<BR>rlm_ldap: LDAP radiusFilterId mapped to RADIUS Filter-Id<BR>rlm_ldap: LDAP radiusFramedMTU mapped to RADIUS Framed-MTU<BR>rlm_ldap: LDAP radiusFramedCompression mapped to RADIUS Framed-Compression<BR>rlm_ldap: LDAP radiusLoginIPHost mapped to RADIUS Login-IP-Host<BR>rlm_ldap: LDAP radiusLoginService mapped to RADIUS Login-Service<BR>rlm_ldap: LDAP radiusLoginTCPPort mapped to RADIUS Login-TCP-Port<BR>rlm_ldap: LDAP radiusCallbackNumber mapped to RADIUS Callback-Number<BR>rlm_ldap: LDAP radiusCallbackId mapped to RADIUS Callback-Id<BR>rlm_ldap: LDAP radiusFramedIPXNetwork mapped to RADIUS Framed-IPX-Network<BR>rlm_ldap: LDAP radiusClass mapped to RADIUS Class<BR>rlm_ldap: LDAP radiusSessionTimeout mapped to RADIUS Session-Timeout<BR>rlm_ldap: LDAP radiusIdleTimeout mapped to RADIUS Idle-Timeout<BR>rlm_ldap: LDAP radiusTerminationAction mapped to RADIUS Termination-Action<BR>rlm_ldap: LDAP radiusLoginLATService mapped to RADIUS Login-LAT-Service<BR>rlm_ldap: LDAP radiusLoginLATNode mapped to RADIUS Login-LAT-Node<BR>rlm_ldap: LDAP radiusLoginLATGroup mapped to RADIUS Login-LAT-Group<BR>rlm_ldap: LDAP radiusFramedAppleTalkLink mapped to RADIUS Framed-AppleTalk-Link<BR>rlm_ldap: LDAP radiusFramedAppleTalkNetwork mapped to RADIUS Framed-AppleTalk-Network<BR>rlm_ldap: LDAP radiusFramedAppleTalkZone mapped to RADIUS Framed-AppleTalk-Zone<BR>rlm_ldap: LDAP radiusPortLimit mapped to RADIUS Port-Limit<BR>rlm_ldap: LDAP radiusLoginLATPort mapped to RADIUS Login-LAT-Port<BR>rlm_ldap: LDAP radiusReplyMessage mapped to RADIUS Reply-Message<BR>rlm_ldap: LDAP radiusTunnelType mapped to RADIUS Tunnel-Type<BR>rlm_ldap: LDAP radiusTunnelMediumType mapped to RADIUS Tunnel-Medium-Type<BR>rlm_ldap: LDAP radiusTunnelPrivateGroupId mapped to RADIUS Tunnel-Private-Group-Id<BR>conns: 0x8189198<BR> Module: Linked to module rlm_attr_filter<BR> Module: Instantiating attr_filter.access_reject<BR> attr_filter attr_filter.access_reject {<BR> attrsfile = "/etc/raddb/attrs.access_reject"<BR> key = "%{User-Name}"<BR> }<BR> } # modules<BR>} # server<BR>server {<BR> modules {<BR> Module: Checking authenticate {...} for more modules to load<BR> Module: Checking authorize {...} for more modules to load<BR> Module: Linked to module rlm_preprocess<BR> Module: Instantiating preprocess<BR> preprocess {<BR> huntgroups = "/etc/raddb/huntgroups"<BR> hints = "/etc/raddb/hints"<BR> with_ascend_hack = no<BR> ascend_channels_per_line = 23<BR> with_ntdomain_hack = no<BR> with_specialix_jetstream_hack = no<BR> with_cisco_vsa_hack = no<BR> with_alvarion_vsa_hack = no<BR> }<BR> Module: Checking preacct {...} for more modules to load<BR> Module: Linked to module rlm_acct_unique<BR> Module: Instantiating acct_unique<BR> acct_unique {<BR> key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port"<BR> }<BR> Module: Checking accounting {...} for more modules to load<BR> Module: Linked to module rlm_detail<BR> Module: Instantiating detail<BR> detail {<BR> detailfile = "/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d"<BR> header = "%t"<BR> detailperm = 384<BR> dirperm = 493<BR> locking = no<BR> log_packet_header = no<BR> }<BR> Module: Instantiating attr_filter.accounting_response<BR> attr_filter attr_filter.accounting_response {<BR> attrsfile = "/etc/raddb/attrs.accounting_response"<BR> key = "%{User-Name}"<BR> }<BR> Module: Checking session {...} for more modules to load<BR> Module: Checking post-proxy {...} for more modules to load<BR> Module: Checking post-auth {...} for more modules to load<BR> } # modules<BR>} # server<BR>radiusd: #### Opening IP addresses and Ports ####<BR>listen {<BR> type = "auth"<BR> ipaddr = *<BR> port = 0<BR>}<BR>listen {<BR> type = "acct"<BR> ipaddr = *<BR> port = 0<BR>}<BR>listen {<BR> type = "control"<BR> listen {<BR> socket = "/var/run/radiusd/radiusd.sock"<BR> }<BR>}<BR>Listening on authentication address * port 1812<BR>Listening on accounting address * port 1813<BR>Listening on command file /var/run/radiusd/radiusd.sock<BR>Listening on proxy address * port 1814<BR>Ready to process requests.</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>part 2 has more output. I couldn't fit everyone in one email</DIV></BODY></HTML>