Hi there list,

Am in the process of using FreeRadius for 802.1x authentication and ran
into some problems with peap and mschap2.

FreeRADIUS Version 2.1.10, for host x86_64-pc-linux-gnu, built on Nov 24
2011 at 07:53:12

Ubuntu 64bit 12.04 (wheezy/sid)

winbindd version 3.6.3

Ntlm_auth seems to work just fine:

pkn@radtest:~$ ntlm_auth -request-ne-key --domain=ATLAS
--username=osgtest
password: 
NT_STATUS_NO_SUCH_USER: No such user (0xc0000064)

Which is just fine... that user indeed does not exist.

pkn@radtest:~$ ntlm_auth -request-ne-key --domain=ATLAS
--username=stafosg
password: 
NT_STATUS_OK: Success (0x0)

Good user and pass... no problem...

pkn@radtest:~$ ntlm_auth -request-ne-key --domain=ATLAS
--username=stafosg
password: 
NT_STATUS_WRONG_PASSWORD: Wrong Password (0xc000006a)

Good user wrong pass... again no problem there

But radtest gives the following:

pkn@radtest:~$ radtest -t mschap stafosg ****** localhost 0 testing123
Sending Access-Request of id 183 to 127.0.0.1 port 1812
        User-Name = "stafosg"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
        MS-CHAP-Challenge = 0x7f1105068ad7bc78
        MS-CHAP-Response =
0x00010000000000000000000000000000000000000000000000000f03251526c7384a3b
76762e76c823a1ca6bd195649817d4
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=183,
length=20


And the following freeradius -X trace:

FreeRADIUS Version 2.1.10, for host x86_64-pc-linux-gnu, built on Nov 24
2011 at 07:53:12
Copyright (C) 1999-2009 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 v2. 
Starting - reading configuration files ...
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/modules/ including configuration file
/etc/freeradius/modules/acct_unique
including configuration file /etc/freeradius/modules/opendirectory
including configuration file /etc/freeradius/modules/ldap including
configuration file /etc/freeradius/modules/inner-eap including
configuration file /etc/freeradius/modules/logintime including
configuration file /etc/freeradius/modules/perl including configuration
file /etc/freeradius/modules/pap including configuration file
/etc/freeradius/modules/detail.example.com
including configuration file /etc/freeradius/modules/smbpasswd including
configuration file /etc/freeradius/modules/linelog including
configuration file /etc/freeradius/modules/mschap including
configuration file /etc/freeradius/modules/preprocess
including configuration file /etc/freeradius/modules/expr including
configuration file /etc/freeradius/modules/wimax including configuration
file /etc/freeradius/modules/mac2ip including configuration file
/etc/freeradius/modules/mac2vlan including configuration file
/etc/freeradius/modules/always including configuration file
/etc/freeradius/modules/policy including configuration file
/etc/freeradius/modules/exec including configuration file
/etc/freeradius/modules/otp including configuration file
/etc/freeradius/modules/dynamic_clients
including configuration file /etc/freeradius/modules/passwd including
configuration file /etc/freeradius/modules/sradutmp including
configuration file /etc/freeradius/modules/echo including configuration
file /etc/freeradius/modules/ippool including configuration file
/etc/freeradius/modules/radutmp including configuration file
/etc/freeradius/modules/files including configuration file
/etc/freeradius/modules/counter including configuration file
/etc/freeradius/modules/detail.log
including configuration file /etc/freeradius/modules/sql_log including
configuration file /etc/freeradius/modules/krb5 including configuration
file /etc/freeradius/modules/attr_filter
including configuration file /etc/freeradius/modules/chap including
configuration file /etc/freeradius/modules/checkval including
configuration file /etc/freeradius/modules/digest including
configuration file /etc/freeradius/modules/smsotp including
configuration file /etc/freeradius/modules/pam including configuration
file /etc/freeradius/modules/realm including configuration file
/etc/freeradius/modules/detail including configuration file
/etc/freeradius/modules/etc_group including configuration file
/etc/freeradius/modules/expiration
including configuration file /etc/freeradius/modules/attr_rewrite
including configuration file
/etc/freeradius/modules/sqlcounter_expire_on_login
including configuration file /etc/freeradius/modules/cui including
configuration file /etc/freeradius/modules/ntlm_auth including
configuration file /etc/freeradius/modules/unix including configuration
file /etc/freeradius/eap.conf including configuration file
/etc/freeradius/policy.conf including files in directory
/etc/freeradius/sites-enabled/ including configuration file
/etc/freeradius/sites-enabled/default
including configuration file /etc/freeradius/sites-enabled/inner-tunnel
main {
        user = "freerad"
        group = "freerad"
        allow_core_dumps = no
}
including dictionary file /etc/freeradius/dictionary main {
        prefix = "/usr"
        localstatedir = "/var"
        logdir = "/var/log/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
 }
 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 = "testing123"
        response_window = 20
        max_outstanding = 65536
        require_message_authenticator = yes
        zombie_period = 40
        status_check = "status-server"
        ping_interval = 30
        check_interval = 30
        num_answers_to_alive = 3
        num_pings_to_alive = 3
        revive_interval = 120
        status_check_timeout = 4
        irt = 2
        mrt = 16
        mrc = 5
        mrd = 30
 }
 home_server_pool my_auth_failover {
        type = fail-over
        home_server = localhost
 }
 realm example.com {
        auth_pool = my_auth_failover
 }
 realm LOCAL {
 }
radiusd: #### Loading Clients ####
 client localhost {
        ipaddr = 127.0.0.1
        require_message_authenticator = no
        secret = "testing123"
        nastype = "other"
 }
 client sysop-2 {
        ipaddr = 10.0.0.20
        require_message_authenticator = no
        secret = "testing123"
        nastype = "other"
 }
 client ap {
        ipaddr = 10.0.9.48
        require_message_authenticator = no
        secret = "testing123"
        nastype = "cisco"
 }
radiusd: #### Instantiating modules ####  instantiate {
 Module: Linked to module rlm_exec
 Module: Instantiating module "exec" from file
/etc/freeradius/modules/exec
  exec {
        wait = no
        input_pairs = "request"
        shell_escape = yes
  }
 Module: Linked to module rlm_expr
 Module: Instantiating module "expr" from file
/etc/freeradius/modules/expr
 Module: Linked to module rlm_expiration
 Module: Instantiating module "expiration" from file
/etc/freeradius/modules/expiration
  expiration {
        reply-message = "Password Has Expired  "
  }
 Module: Linked to module rlm_logintime
 Module: Instantiating module "logintime" from file
/etc/freeradius/modules/logintime
  logintime {
        reply-message = "You are calling outside your allowed timespan "
        minimum-timeout = 60
  }
 }
radiusd: #### Loading Virtual Servers #### server inner-tunnel { # from
file /etc/freeradius/sites-enabled/inner-tunnel
 modules {
 Module: Checking authenticate {...} for more modules to load
 Module: Instantiating module "ntlm_auth" from file
/etc/freeradius/modules/ntlm_auth
  exec ntlm_auth {
        wait = yes
        program = "/usr/bin/ntlm_auth --request-nt-key --domain=ATLAS
--username=%{mschap:User-Name} --password=%{User-Password}"
        input_pairs = "request"
        shell_escape = yes
  }
 Module: Linked to module rlm_pap
 Module: Instantiating module "pap" from file
/etc/freeradius/modules/pap
  pap {
        encryption_scheme = "auto"
        auto_header = no
  }
 Module: Linked to module rlm_chap
 Module: Instantiating module "chap" from file
/etc/freeradius/modules/chap
 Module: Linked to module rlm_mschap
 Module: Instantiating module "mschap" from file
/etc/freeradius/modules/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=%{mschap:User-Name:-None}
--domain=%{%{mschap:NT-Domain}:-ATLAS}
--challenge=%{mschap:Challenge:-00}
--nt-response=%{mschap:NT-Response:-00}"
  }
 Module: Linked to module rlm_unix
 Module: Instantiating module "unix" from file
/etc/freeradius/modules/unix
  unix {
        radwtmp = "/var/log/freeradius/radwtmp"
  }
 Module: Linked to module rlm_eap
 Module: Instantiating module "eap" from file /etc/freeradius/eap.conf
  eap {
        default_eap_type = "peap"
        timer_expire = 60
        ignore_unknown_eap_types = no
        cisco_accounting_username_bug = no
        max_sessions = 4096
  }
 Module: Linked to sub-module rlm_eap_md5
 Module: Instantiating eap-md5
 Module: Linked to sub-module rlm_eap_leap
 Module: Instantiating eap-leap
 Module: Linked to sub-module rlm_eap_gtc
 Module: Instantiating eap-gtc
   gtc {
        challenge = "Password: "
        auth_type = "PAP"
   }
 Module: Linked to sub-module rlm_eap_tls
 Module: Instantiating eap-tls
   tls {
        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.key"
        certificate_file = "/etc/freeradius/certs/server.pem"
        CA_file = "/etc/freeradius/certs/ca.pem"
        private_key_password = "whatever"
        dh_file = "/etc/freeradius/certs/dh"
        random_file = "/dev/urandom"
        fragment_size = 1024
        include_length = yes
        check_crl = no
        cipher_list = "DEFAULT"
        make_cert_command = "/etc/freeradius/certs/bootstrap"
    cache {
        enable = no
        lifetime = 24
        max_entries = 255
    }
    verify {
    }
   }
 Module: Linked to sub-module rlm_eap_ttls
 Module: Instantiating eap-ttls
   ttls {
        default_eap_type = "md5"
        copy_request_to_tunnel = no
        use_tunneled_reply = no
        virtual_server = "inner-tunnel"
        include_length = yes
   }
 Module: Linked to sub-module rlm_eap_peap
 Module: Instantiating eap-peap
   peap {
        default_eap_type = "mschapv2"
        copy_request_to_tunnel = no
        use_tunneled_reply = no
        proxy_tunneled_request_as_eap = yes
        virtual_server = "inner-tunnel"
   }
 Module: Linked to sub-module rlm_eap_mschapv2
 Module: Instantiating eap-mschapv2
   mschapv2 {
        with_ntdomain_hack = no
   }
 Module: Linked to module rlm_perl
 Module: Instantiating module "perl" from file
/etc/freeradius/modules/perl
  perl {
        module = "/etc/freeradius/example.pl"
        func_authorize = "post_auth"
        func_authenticate = "authenticate"
        func_accounting = "accounting"
        func_preacct = "preacct"
        func_checksimul = "checksimul"
        func_detach = "detach"
        func_xlat = "xlat"
        func_pre_proxy = "pre_proxy"
        func_post_proxy = "post_proxy"
        func_post_auth = "post_auth"
        func_recv_coa = "recv_coa"
        func_send_coa = "send_coa"
  }
 Module: Checking authorize {...} for more modules to load
 Module: Linked to module rlm_realm
 Module: Instantiating module "suffix" from file
/etc/freeradius/modules/realm
  realm suffix {
        format = "suffix"
        delimiter = "@"
        ignore_default = no
        ignore_null = no
  }
 Module: Linked to module rlm_files
 Module: Instantiating module "files" from file
/etc/freeradius/modules/files
  files {
        usersfile = "/etc/freeradius/users"
        acctusersfile = "/etc/freeradius/acct_users"
        preproxy_usersfile = "/etc/freeradius/preproxy_users"
        compat = "no"
  }
 Module: Checking session {...} for more modules to load
 Module: Linked to module rlm_radutmp
 Module: Instantiating module "radutmp" from file
/etc/freeradius/modules/radutmp
  radutmp {
        filename = "/var/log/freeradius/radutmp"
        username = "%{User-Name}"
        case_sensitive = yes
        check_with_nas = yes
        perm = 384
        callerid = yes
  }
 Module: Checking post-proxy {...} for more modules to load
 Module: Checking post-auth {...} for more modules to load
 Module: Linked to module rlm_attr_filter
 Module: Instantiating module "attr_filter.access_reject" from file
/etc/freeradius/modules/attr_filter
  attr_filter attr_filter.access_reject {
        attrsfile = "/etc/freeradius/attrs.access_reject"
        key = "%{User-Name}"
  }
 } # modules
} # server
server { # from file /etc/freeradius/radiusd.conf  modules {
 Module: Checking authenticate {...} for more modules to load
 Module: Linked to module rlm_digest
 Module: Instantiating module "digest" from file
/etc/freeradius/modules/digest
 Module: Checking authorize {...} for more modules to load
 Module: Linked to module rlm_preprocess
 Module: Instantiating module "preprocess" from file
/etc/freeradius/modules/preprocess
  preprocess {
        huntgroups = "/etc/freeradius/huntgroups"
        hints = "/etc/freeradius/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
  }
 Module: Checking preacct {...} for more modules to load
 Module: Linked to module rlm_acct_unique
 Module: Instantiating module "acct_unique" from file
/etc/freeradius/modules/acct_unique
  acct_unique {
        key = "User-Name, Acct-Session-Id, NAS-IP-Address,
Client-IP-Address, NAS-Port"
  }
 Module: Checking accounting {...} for more modules to load
 Module: Linked to module rlm_detail
 Module: Instantiating module "detail" from file
/etc/freeradius/modules/detail
  detail {
        detailfile =
"/var/log/freeradius/radacct/%{Client-IP-Address}/detail-%Y%m%d"
        header = "%t"
        detailperm = 384
        dirperm = 493
        locking = no
        log_packet_header = no
  }
 Module: Instantiating module "attr_filter.accounting_response" from
file /etc/freeradius/modules/attr_filter
  attr_filter attr_filter.accounting_response {
        attrsfile = "/etc/freeradius/attrs.accounting_response"
        key = "%{User-Name}"
  }
 Module: Checking session {...} for more modules to load
 Module: Checking post-proxy {...} for more modules to load
 Module: Checking post-auth {...} for more modules to load  } # modules
} # server
radiusd: #### Opening IP addresses and Ports #### listen {
        type = "auth"
        ipaddr = *
        port = 0
}
listen {
        type = "acct"
        ipaddr = *
        port = 0
}
listen {
        type = "auth"
        ipaddr = 127.0.0.1
        port = 18120
}
Listening on authentication address * port 1812 Listening on accounting
address * port 1813 Listening on authentication address 127.0.0.1 port
18120 as server inner-tunnel Listening on proxy address * port 1814
Ready to process requests.
rad_recv: Access-Request packet from host 127.0.0.1 port 39326, id=62,
length=115
        User-Name = "stafosg"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
        MS-CHAP-Challenge = 0x3a21a92f157a25d7
        MS-CHAP-Response =
0x0001000000000000000000000000000000000000000000000000a9f7b3ff22ed2048dc
4d92d3dece0729cd1963582d634f24
# Executing section authorize from file
/etc/freeradius/sites-enabled/default
+- entering group authorize {...}
++[preprocess] returns ok
++[chap] returns noop
[mschap] Found MS-CHAP attributes.  Setting 'Auth-Type  = mschap'
++[mschap] returns ok
++[digest] returns noop
[suffix] No '@' in User-Name = "stafosg", looking up realm NULL [suffix]
No such realm "NULL"
++[suffix] returns noop
[eap] No EAP-Message, not doing EAP
++[eap] returns noop
[files] users: Matched entry DEFAULT at line 209
++[files] returns ok
rlm_perl: RAD_REQUEST: User-Name = stafosg
rlm_perl: RAD_REQUEST: MS-CHAP-Response =
0x0001000000000000000000000000000000000000000000000000a9f7b3ff22ed2048dc
4d92d3dece0729cd1963582d634f24
rlm_perl: RAD_REQUEST: NAS-Port = 0
rlm_perl: RAD_REQUEST: NAS-IP-Address = 127.0.1.1
rlm_perl: RAD_REQUEST: MS-CHAP-Challenge = 0x3a21a92f157a25d7
rlm_perl: Added pair User-Name = stafosg
rlm_perl: Added pair MS-CHAP-Response =
0x0001000000000000000000000000000000000000000000000000a9f7b3ff22ed2048dc
4d92d3dece0729cd1963582d634f24
rlm_perl: Added pair NAS-Port = 0
rlm_perl: Added pair NAS-IP-Address = 127.0.1.1
rlm_perl: Added pair MS-CHAP-Challenge = 0x3a21a92f157a25d7
rlm_perl: Added pair Auth-Type = MSCHAP
++[perl] returns noop
++[expiration] returns noop
++[logintime] returns noop
[pap] WARNING! No "known good" password found for the user.
Authentication may fail because of this.
++[pap] returns noop
Found Auth-Type = MSCHAP
# Executing group from file /etc/freeradius/sites-enabled/default
+- entering group MS-CHAP {...}
[mschap] Told to do MS-CHAPv1 with NT-Password
[mschap]        expand: --username=%{mschap:User-Name:-None} ->
--username=stafosg
[mschap] No NT-Domain was found in the User-Name.
[mschap]        expand: %{mschap:NT-Domain} -> 
[mschap]        ... expanding second conditional
[mschap]        expand: --domain=%{%{mschap:NT-Domain}:-ATLAS} ->
--domain=ATLAS
[mschap]  mschap1: 3a
[mschap]        expand: --challenge=%{mschap:Challenge:-00} ->
--challenge=3a21a92f157a25d7
[mschap]        expand: --nt-response=%{mschap:NT-Response:-00} ->
--nt-response=a9f7b3ff22ed2048dc4d92d3dece0729cd1963582d634f24
Exec-Program output: Reading winbind reply failed! (0xc0000001)
Exec-Program-Wait: plaintext: Reading winbind reply failed! (0xc0000001)

Exec-Program: returned: 1
[mschap] External script failed.
[mschap] MS-CHAP-Response is incorrect.
++[mschap] returns reject
Failed to authenticate the user.
Using Post-Auth-Type Reject
# Executing group from file /etc/freeradius/sites-enabled/default
+- entering group REJECT {...}
[attr_filter.access_reject]     expand: %{User-Name} -> stafosg
 attr_filter: Matched entry DEFAULT at line 11
++[attr_filter.access_reject] returns updated
Delaying reject of request 0 for 1 seconds Going to the next request
Waking up in 0.9 seconds.
Sending delayed reject for request 0
Sending Access-Reject of id 62 to 127.0.0.1 port 39326 Waking up in 4.9
seconds.


The thing that bugs me is:
Exec-Program output: Reading winbind reply failed! (0xc0000001) which
seems to indicate that I have insufficient right to winbindd-privileged.
But I cannot find the socket (?) anywhere.

Or am I experiencing the Samba bug? Reading the list it looked like that
one is fixed in current Samba releases?

Any help will be appreciated...

Peter
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to