Re: Authentication issues with Win7 and WPA/WPA2 Enterprise
Thanks for answers! Phil Mayers schrieb:
On 18/05/11 16:26, Simon L. wrote:
Using WPA2-Enterprise results in Access-Rejects after one Request.
That is not normal. WPA2 should be the same as WPA at the radius level.
I'll give it another try this evening.
Using WPA-Enterprise results in about nine different Access-Challanges and one final Access-Accept - that cant be right.
That is normal. EAP exchanges are usually 9/10 request/challenge pairs followed by a final request/accept.
What exactly is your problem?
Lack of knowledge :) If that challenges are necessary than i got no problem at this point. Thanks for the info!
I have set up a testing scenario with the local test user bob. If local authentication works properly i want to proxy all requests without EAP to another freeradius server. I will have questions to that later :)
radtest from localhost an remotehost succeeded.
Sorry - radtest does not do EAP. radtest is not a valid test.
I know, i just followed the FAQ for using the mailinglist on freeradius.org. Just to verify that the very basics are working.
I dont get a clue if the Problem is Windows, Certificates, Network oder simply misconfigured freeradius.
You haven't told us what the problem is. WPA-Enterprise is working for you - the radius server is sending an access-accept. What problem are you experiencing?
As you told me above, i know -now- there is no Problem with that. :)
certificates: - i build the certs with and without that windows extension OID in server.cnf with make from ../raddb/certs
Why? You MUST include the OID.
I was not sure about if its recommend for Windows 7 too cause everywhere its mentioned with XP SP2+ only and not for later Windows in general.
- 2048 bit
Windows 7: - installed ca.der as root cert in win7 and configured it for the desired WiFi network - for my eyes no difference in debug logs if validate server cert or not.
"Validate server cert" is done on the client. You won't see any difference on the server.
- unchecked using windows user or domain for auth - EAP comes with PEAP/MSCHAPv2 as default - but the certs are for eap - tls right?
PEAP uses TLS. PEAP needs certs too.
WAP: - WPA2 Enterprise with AES no accept packet possible until now
As above - that's not normal.
The debug you sent contains no reject. Please send a debug for this case.
I will generate a separate log for the WPA2 scenario soon.
- WPA Enterprise with AES results in that 9-times Challenges until accept
As above - this is normal
Access-Accept means everything is working.
You made my day!
If you are still having problems after the Access-Accept, you need to describe what those problems are.
Hi again, now i got a real Problem.
...
The debug you sent contains no reject. Please send a debug for this case.
I will generate a separate log for the WPA2 scenario soon.
I have no problems with WPA/2 and local authentication anymore. But now I try to proxy the requests to a another homeserver. At first tried with radtest from localhost - the request was proxied and accepted.
From a Win7 supplicant the homeserver says: Login incorrect: [test/<via Auth-Type = Local>] (from client ....) and of course a access-reject was following.
Please have a look at my new, attached debug log. Tanks a lot! Simon FreeRADIUS Version 2.1.10, for host i686-pc-linux-gnu, built on May 12 2011 at 13:56:14 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 /usr/local/etc/raddb/radiusd.conf including configuration file /usr/local/etc/raddb/proxy.conf including configuration file /usr/local/etc/raddb/clients.conf including files in directory /usr/local/etc/raddb/modules/ including configuration file /usr/local/etc/raddb/modules/attr_filter including configuration file /usr/local/etc/raddb/modules/exec including configuration file /usr/local/etc/raddb/modules/passwd including configuration file /usr/local/etc/raddb/modules/realm including configuration file /usr/local/etc/raddb/modules/linelog including configuration file /usr/local/etc/raddb/modules/cui including configuration file /usr/local/etc/raddb/modules/chap including configuration file /usr/local/etc/raddb/modules/wimax including configuration file /usr/local/etc/raddb/modules/detail including configuration file /usr/local/etc/raddb/modules/sradutmp including configuration file /usr/local/etc/raddb/modules/mac2vlan including configuration file /usr/local/etc/raddb/modules/pam including configuration file /usr/local/etc/raddb/modules/sqlcounter_expire_on_login including configuration file /usr/local/etc/raddb/modules/krb5 including configuration file /usr/local/etc/raddb/modules/ippool including configuration file /usr/local/etc/raddb/modules/logintime including configuration file /usr/local/etc/raddb/modules/detail.example.com including configuration file /usr/local/etc/raddb/modules/dynamic_clients including configuration file /usr/local/etc/raddb/modules/otp including configuration file /usr/local/etc/raddb/modules/expr including configuration file /usr/local/etc/raddb/modules/counter including configuration file /usr/local/etc/raddb/modules/ldap including configuration file /usr/local/etc/raddb/modules/opendirectory including configuration file /usr/local/etc/raddb/modules/preprocess including configuration file /usr/local/etc/raddb/modules/files including configuration file /usr/local/etc/raddb/modules/always including configuration file /usr/local/etc/raddb/modules/unix including configuration file /usr/local/etc/raddb/modules/expiration including configuration file /usr/local/etc/raddb/modules/ntlm_auth including configuration file /usr/local/etc/raddb/modules/smbpasswd including configuration file /usr/local/etc/raddb/modules/detail.log including configuration file /usr/local/etc/raddb/modules/mschap including configuration file /usr/local/etc/raddb/modules/sql_log including configuration file /usr/local/etc/raddb/modules/digest including configuration file /usr/local/etc/raddb/modules/policy including configuration file /usr/local/etc/raddb/modules/mac2ip including configuration file /usr/local/etc/raddb/modules/acct_unique including configuration file /usr/local/etc/raddb/modules/radutmp including configuration file /usr/local/etc/raddb/modules/etc_group including configuration file /usr/local/etc/raddb/modules/echo including configuration file /usr/local/etc/raddb/modules/attr_rewrite including configuration file /usr/local/etc/raddb/modules/smsotp including configuration file /usr/local/etc/raddb/modules/inner-eap including configuration file /usr/local/etc/raddb/modules/pap including configuration file /usr/local/etc/raddb/modules/checkval including configuration file /usr/local/etc/raddb/modules/perl including configuration file /usr/local/etc/raddb/eap.conf including configuration file /usr/local/etc/raddb/policy.conf including files in directory /usr/local/etc/raddb/sites-enabled/ including configuration file /usr/local/etc/raddb/sites-enabled/proxy-inner-tunnel including configuration file /usr/local/etc/raddb/sites-enabled/inner-tunnel including configuration file /usr/local/etc/raddb/sites-enabled/default including configuration file /usr/local/etc/raddb/sites-enabled/control-socket main { allow_core_dumps = no } including dictionary file /usr/local/etc/raddb/dictionary main { prefix = "/usr/local" localstatedir = "/usr/local/var" logdir = "/usr/local/var/log/radius" libdir = "/usr/local/lib" radacctdir = "/usr/local/var/log/radius/radacct" hostname_lookups = no max_request_time = 30 cleanup_delay = 5 max_requests = 1024 pidfile = "/usr/local/var/run/radiusd/radiusd.pid" checkrad = "/usr/local/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 { } realm NULL { authhost = radius2.example.de accthost = radius2.example.de secret = testing123 } radiusd: #### Loading Clients #### client localhost { ipaddr = 127.0.0.1 require_message_authenticator = no secret = "testing123" nastype = "other" } client 10.73.108.0/24 { require_message_authenticator = no secret = "testing123-3" shortname = "Spot" } radiusd: #### Instantiating modules #### instantiate { Module: Linked to module rlm_exec Module: Instantiating module "exec" from file /usr/local/etc/raddb/modules/exec exec { wait = no input_pairs = "request" shell_escape = yes } Module: Linked to module rlm_expr Module: Instantiating module "expr" from file /usr/local/etc/raddb/modules/expr Module: Linked to module rlm_expiration Module: Instantiating module "expiration" from file /usr/local/etc/raddb/modules/expiration expiration { reply-message = "Password Has Expired " } Module: Linked to module rlm_logintime Module: Instantiating module "logintime" from file /usr/local/etc/raddb/modules/logintime logintime { reply-message = "You are calling outside your allowed timespan " minimum-timeout = 60 } } radiusd: #### Loading Virtual Servers #### server proxy-inner-tunnel { # from file /usr/local/etc/raddb/sites-enabled/proxy-inner-tunnel modules { Module: Checking authenticate {...} for more modules to load Module: Linked to module rlm_eap Module: Instantiating module "eap" from file /usr/local/etc/raddb/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 = "/usr/local/etc/raddb/certs" pem_file_type = yes private_key_file = "/usr/local/etc/raddb/certs/server.pem" certificate_file = "/usr/local/etc/raddb/certs/server.pem" CA_file = "/usr/local/etc/raddb/certs/ca.pem" private_key_password = "secret" dh_file = "/usr/local/etc/raddb/certs/dh" random_file = "/usr/local/etc/raddb/certs/random" fragment_size = 1024 include_length = yes check_crl = no cipher_list = "DEFAULT" make_cert_command = "/usr/local/etc/raddb/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 = yes use_tunneled_reply = yes proxy_tunneled_request_as_eap = no virtual_server = "proxy-inner-tunnel" } Module: Linked to sub-module rlm_eap_mschapv2 Module: Instantiating eap-mschapv2 mschapv2 { with_ntdomain_hack = no } Module: Checking authorize {...} for more modules to load Module: Checking post-proxy {...} for more modules to load } # modules } # server server inner-tunnel { # from file /usr/local/etc/raddb/sites-enabled/inner-tunnel modules { Module: Checking authenticate {...} for more modules to load Module: Linked to module rlm_pap Module: Instantiating module "pap" from file /usr/local/etc/raddb/modules/pap pap { encryption_scheme = "auto" auto_header = no } Module: Linked to module rlm_chap Module: Instantiating module "chap" from file /usr/local/etc/raddb/modules/chap Module: Linked to module rlm_mschap Module: Instantiating module "mschap" from file /usr/local/etc/raddb/modules/mschap mschap { use_mppe = yes require_encryption = no require_strong = no with_ntdomain_hack = no } Module: Linked to module rlm_unix Module: Instantiating module "unix" from file /usr/local/etc/raddb/modules/unix unix { radwtmp = "/usr/local/var/log/radius/radwtmp" } Module: Checking authorize {...} for more modules to load Module: Linked to module rlm_realm Module: Instantiating module "suffix" from file /usr/local/etc/raddb/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 /usr/local/etc/raddb/modules/files files { usersfile = "/usr/local/etc/raddb/users" acctusersfile = "/usr/local/etc/raddb/acct_users" preproxy_usersfile = "/usr/local/etc/raddb/preproxy_users" compat = "no" } Module: Checking session {...} for more modules to load Module: Linked to module rlm_radutmp Module: Instantiating module "radutmp" from file /usr/local/etc/raddb/modules/radutmp radutmp { filename = "/usr/local/var/log/radius/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 /usr/local/etc/raddb/modules/attr_filter attr_filter attr_filter.access_reject { attrsfile = "/usr/local/etc/raddb/attrs.access_reject" key = "%{User-Name}" } } # modules } # server server { # from file /usr/local/etc/raddb/radiusd.conf modules { Module: Checking authenticate {...} for more modules to load Module: Linked to module rlm_digest Module: Instantiating module "digest" from file /usr/local/etc/raddb/modules/digest Module: Checking authorize {...} for more modules to load Module: Linked to module rlm_preprocess Module: Instantiating module "preprocess" from file /usr/local/etc/raddb/modules/preprocess preprocess { huntgroups = "/usr/local/etc/raddb/huntgroups" hints = "/usr/local/etc/raddb/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 /usr/local/etc/raddb/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 /usr/local/etc/raddb/modules/detail detail { detailfile = "/usr/local/var/log/radius/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 /usr/local/etc/raddb/modules/attr_filter attr_filter attr_filter.accounting_response { attrsfile = "/usr/local/etc/raddb/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 = "control" listen { socket = "/usr/local/var/run/radiusd/radiusd.sock" } } listen { type = "auth" ipaddr = 127.0.0.1 port = 18120 } Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on command file /usr/local/var/run/radiusd/radiusd.sock 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 10.73.108.254 port 2053, id=0, length=127 User-Name = "test" NAS-IP-Address = 10.73.108.254 Called-Station-Id = "c2c1c018553e" Calling-Station-Id = "001e654bde20" NAS-Identifier = "c2c1c018553e" NAS-Port = 53 Framed-MTU = 1400 NAS-Port-Type = Wireless-802.11 EAP-Message = 0x0200000c0174657374696164 Message-Authenticator = 0x297619ca111245611ca75cc915c0d2ca # Executing section authorize from file /usr/local/etc/raddb/sites-enabled/default +- entering group authorize {...} ++[preprocess] returns ok ++[chap] returns noop ++[mschap] returns noop ++[digest] returns noop [suffix] No '@' in User-Name = "test", looking up realm NULL [suffix] Found realm "NULL" [suffix] Adding Stripped-User-Name = "test" [suffix] Adding Realm = "NULL" [suffix] Proxying request from user test to realm NULL [suffix] Preparing to proxy authentication request to realm "NULL" ++[suffix] returns updated [eap] Request is supposed to be proxied to Realm NULL. Not doing EAP. ++[eap] returns noop ++[files] returns noop ++[expiration] returns noop ++[logintime] returns noop ++[pap] returns noop WARNING: Empty pre-proxy section. Using default return values. Sending Access-Request of id 20 to 213.178.66.184 port 1812 User-Name = "test" NAS-IP-Address = 10.73.108.254 Called-Station-Id = "c2c1c018553e" Calling-Station-Id = "001e654bde20" NAS-Identifier = "c2c1c018553e" NAS-Port = 53 Framed-MTU = 1400 NAS-Port-Type = Wireless-802.11 EAP-Message = 0x0200000c0174657374696164 Message-Authenticator = 0x00000000000000000000000000000000 Proxy-State = 0x30 Proxying request 0 to home server 213.178.66.184 port 1812 Sending Access-Request of id 20 to 213.178.66.184 port 1812 User-Name = "test" NAS-IP-Address = 10.73.108.254 Called-Station-Id = "c2c1c018553e" Calling-Station-Id = "001e654bde20" NAS-Identifier = "c2c1c018553e" NAS-Port = 53 Framed-MTU = 1400 NAS-Port-Type = Wireless-802.11 EAP-Message = 0x0200000c0174657374696164 Message-Authenticator = 0x00000000000000000000000000000000 Proxy-State = 0x30 Going to the next request Waking up in 0.9 seconds. Waking up in 12.9 seconds. rad_recv: Access-Reject packet from host 213.178.66.184 port 1812, id=20, length=23 Proxy-State = 0x30 # Executing section post-proxy from file /usr/local/etc/raddb/sites-enabled/default +- entering group post-proxy {...} [eap] No pre-existing handler found ++[eap] returns noop Using Post-Auth-Type Reject # Executing group from file /usr/local/etc/raddb/sites-enabled/default +- entering group REJECT {...} [attr_filter.access_reject] expand: %{User-Name} -> test attr_filter: Matched entry DEFAULT at line 11 ++[attr_filter.access_reject] returns updated Sending Access-Reject of id 0 to 10.73.108.254 port 2053 Finished request 0. Going to the next request Waking up in 4.9 seconds. Cleaning up request 0 ID 0 with timestamp +57 Ready to process requests.
Phil Mayers schrieb:
On 05/23/2011 06:53 PM, Simon L. wrote:
Please have a look at my new, attached debug log.
The server you are proxying to sends a reject. Fix that server. -
Why accepts the home server a proxied request from radtest but not from a wpa supplicant. The home server can not talk eap. as the log shows the proxy is not doing eap when it forwards a request. where is the difference?
On 24/05/11 08:35, Simon L. wrote:
Phil Mayers schrieb:
On 05/23/2011 06:53 PM, Simon L. wrote:
Please have a look at my new, attached debug log.
The server you are proxying to sends a reject. Fix that server. -
Why accepts the home server a proxied request from radtest but not from a wpa supplicant.
radtest sends (by default) a PAP request. WPA-Supplicant sends EAP.
The home server can not talk eap. as the log shows the proxy is not
If the home server can't do EAP, how do you expect to proxy EAP to it? What is the home server?
doing eap when it forwards a request. where is the difference?
802.1x requires EAP support at the radius server. If you are proxying the requests to another server, it requires EAP support there, too. It *may* be possible to terminate the EAP at FreeRADIUS, and send the inner EAP as non-EAP, but this is hack, and I strongly advise against it. This will only work for EAP-TTLS/PAP and EAP-PEAP/MSCHAP If you want to do that, put the proxy config into sites-enabled/inner-tunnel, and also see eap.conf: eap { peap { proxy_tunneled_request_as_eap = yes } }
Phil Mayers schrieb:
On 24/05/11 08:35, Simon L. wrote:
Phil Mayers schrieb:
On 05/23/2011 06:53 PM, Simon L. wrote:
Please have a look at my new, attached debug log.
The server you are proxying to sends a reject. Fix that server. -
Why accepts the home server a proxied request from radtest but not from a wpa supplicant.
radtest sends (by default) a PAP request.
WPA-Supplicant sends EAP.
The home server can not talk eap. as the log shows the proxy is not
If the home server can't do EAP, how do you expect to proxy EAP to it?
What is the home server? Thats the point, i don't want to proxy eap to the other freeradius (home server).
doing eap when it forwards a request. where is the difference?
802.1x requires EAP support at the radius server. If you are proxying the requests to another server, it requires EAP support there, too.
I thought "proxy_tunneled_request_as_eap = no" would proxy without eap. so i did this: eap.conf: eap { ... peap { default_eap_type = mschapv2 copy_request_to_tunnel = yes use_tunneled_reply = yes proxy_tunneled_request_as_eap = no virtual_server = "proxy-inner-tunnel" } } proxy-inner-tunnel: server proxy-inner-tunnel { authorize { update control { Proxy-To-Realm := NULL #I want to proxy realm NULL } } authenticate { eap } post-proxy { eap } }
It *may* be possible to terminate the EAP at FreeRADIUS, and send the inner EAP as non-EAP, but this is hack, and I strongly advise against it. This will only work for EAP-TTLS/PAP and EAP-PEAP/MSCHAP
the network between the two freeradius is not public or shared, so i think that would be ok. My above solution proxied eap, but is your hack just a old version ob my config?? I read several mails from last year, where that problem is solved that way (more or less).
If you want to do that, put the proxy config into sites-enabled/inner-tunnel,
do you mean from proxy.conf or proxy-inner-tunnel?
and also see eap.conf:
eap { peap { proxy_tunneled_request_as_eap = yes } } i had set it to "no".
Hi,
proxy-inner-tunnel: server proxy-inner-tunnel { authorize { update control { Proxy-To-Realm := NULL #I want to proxy realm NULL } } authenticate { eap } post-proxy { eap } }
dont set it to NULL - that keeps it very much local. instead set it to FOOBAR and configure proxy.conf so that FOOBAR realm points to your other server. alan
I note that many of you are implementing WPA Enterprise (or have) as I have seen some interesting posts on the issue. I'd like to offer up our configuration and troubleshooting guides here at Georgia Tech. Feel free to "liberate" them for your own use, customize, enhance, whatever. We have had definite success with these documents for our customers (especially the troubleshooting guides). This might save you some time as you write up your own documentation. We have implemented Freeradius with EAP-PEAP-MSChapv2 and have configuration for most and troubleshooting guides for some of the major platforms: WindowsXP, Windows Vista, Win7, OSX, Ubuntu, iOS, and Android (2.2+). I figured that some of you might find these useful after some customizing for your site or your choice of EAP. You will find these at: http://www.lawn.gatech.edu/help/gtwpa If you have any additions that you have found at your implementation/institution, we are always looking to head off potential problems and improve our documentation/troubleshooting. I have seem some recent queries about client configuration information so hopefully these might be helpful to some. - John Douglass, Sr. Systems IT/Architect Georgia Institute of Technology
Hi, ...so, when are you going to join eduroam then? you seem to have EAP and WPA/WPA2 all sorted and client configuration guides for your users (everyone seems to be reinventing that wheel - especially in th eduroam community where the settings are have minor difference - some sites do WPA2/AES and other sites might use EAP-TTLS/PAP rather than EAP-PEAPv0/MSCHAPv2) go on, join eduroam..... alan
Alan Buxey <A.L.M.Buxey@lboro.ac.uk> wrote:
go on, join eduroam.....
I got a @illinois.edu lurker this week here at soas.ac.uk :) Cheers -- Alexander Clouter .sigmonster says: Wagner's music is better than it sounds. -- Mark Twain
participants (5)
-
Alan Buxey -
Alexander Clouter -
John Douglass -
Phil Mayers -
Simon L.