<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>