Freeradius can't authenticate pptp users from Windows XP to LDAP

nf-vale nf-vale at critical-links.com
Thu Oct 8 15:24:26 CEST 2009


You can add NT / LM pairs to each LDAP user object. You must include the 
samba.schema into the ldap server schemas.

Ex:

sambaNTPassword: CAF13D4F321E608B27FD75D2549BA53C
sambaLMPassword: 02D093CE93038E2FAAD3B435B51404EE


This way pptp MSCHAP auth will work.


Nelson Vale


On Thursday 08 October 2009 12:53:21 tede wrote:
> Ivan Kalik wrote:
> >> Debug: rlm_ldap: performing search in ou=vpn,dc=home, with filter
> >> (uid=light)
> >> Debug: rlm_ldap: No default NMAS login sequence
> >> Debug: rlm_ldap: looking for check items in directory...
> >> Debug: rlm_ldap: looking for reply items in directory...
> >> Debug: WARNING: No "known good" password was found in LDAP.  Are you
> >> sure that the user is configured correctly?
> >
> > Hm, try adding mapping for Cleartext-Password as userPassword to
> > ldap.attrmap.
> >
> > Ivan Kalik
> > Kalik Informatika ISP
> >
> > -
> > List info/subscribe/unsubscribe? See
> > http://www.freeradius.org/list/users.html
>
> Hi Ivan, first of all, thanks for answering me :)
>
> So, here is the result after adding mapping for Cleartext-Password as
> userPassword,
> as we can see in the radius mapping part of the debug :
>
>
> Info: FreeRADIUS Version 2.0.4, for host i486-pc-linux-gnu, built on Oct  3
> 2009 at 19:16:29
> Info: Copyright (C) 1999-2008 The FreeRADIUS server project and
> contributors.
> Info: There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> Info: PARTICULAR PURPOSE.
> Info: You may redistribute copies of FreeRADIUS under the terms of the
> Info: GNU General Public License.
> Info: Starting - reading configuration files ...
> Debug: including configuration file /etc/freeradius/radiusd.conf
> Debug: including configuration file /etc/freeradius/clients.conf
> Debug: including configuration file /etc/freeradius/policy.conf
> Debug: including files in directory /etc/freeradius/sites-enabled/
> Debug: including configuration file /etc/freeradius/sites-enabled/default
> Debug: including configuration file
> /etc/freeradius/sites-enabled/inner-tunnel
> Debug: including dictionary file /etc/freeradius/dictionary
> Debug: main {
> Debug: 	prefix = "/usr"
> Debug: 	localstatedir = "/var"
> Debug: 	logdir = "/var/log/freeradius"
> Debug: 	libdir = "/usr/lib/freeradius"
> Debug: 	radacctdir = "/var/log/freeradius/radacct"
> Debug: 	hostname_lookups = no
> Debug: 	max_request_time = 30
> Debug: 	cleanup_delay = 5
> Debug: 	max_requests = 1024
> Debug: 	allow_core_dumps = no
> Debug: 	pidfile = "/var/run/freeradius/freeradius.pid"
> Debug: 	user = "freerad"
> Debug: 	group = "freerad"
> Debug: 	checkrad = "/usr/sbin/checkrad"
> Debug: 	debug_level = 0
> Debug: 	proxy_requests = yes
> Debug:  security {
> Debug: 	max_attributes = 200
> Debug: 	reject_delay = 1
> Debug: 	status_server = yes
> Debug:  }
> Debug: }
> Debug:  client localhost {
> Debug: 	ipaddr = 127.0.0.1
> Debug: 	require_message_authenticator = no
> Debug: 	secret = "hometest"
> Debug: 	nastype = "other"
> Debug:  }
> Debug:  client 192.168.0.0/24 {
> Debug: 	require_message_authenticator = no
> Debug: 	secret = "hometest"
> Debug: 	shortname = "private-network-1"
> Debug:  }
> Debug: radiusd: #### Loading Realms and Home Servers ####
> Debug: radiusd: #### Instantiating modules ####
> Debug:  instantiate {
> Debug:     (Loaded rlm_exec, checking if it's valid)
> Debug:  Module: Linked to module rlm_exec
> Debug:  Module: Instantiating exec
> Debug:   exec {
> Debug: 	wait = yes
> Debug: 	input_pairs = "request"
> Debug: 	shell_escape = yes
> Debug:   }
> Debug:     (Loaded rlm_expr, checking if it's valid)
> Debug:  Module: Linked to module rlm_expr
> Debug:  Module: Instantiating expr
> Debug:     (Loaded rlm_expiration, checking if it's valid)
> Debug:  Module: Linked to module rlm_expiration
> Debug:  Module: Instantiating expiration
> Debug:   expiration {
> Debug: 	reply-message = "Password Has Expired  "
> Debug:   }
> Debug:     (Loaded rlm_logintime, checking if it's valid)
> Debug:  Module: Linked to module rlm_logintime
> Debug:  Module: Instantiating logintime
> Debug:   logintime {
> Debug: 	reply-message = "You are calling outside your allowed timespan  "
> Debug: 	minimum-timeout = 60
> Debug:   }
> Debug:  }
> Debug: radiusd: #### Loading Virtual Servers ####
> Debug: server inner-tunnel {
> Debug:  modules {
> Debug:  Module: Checking authenticate {...} for more modules to load
> Debug:     (Loaded rlm_pap, checking if it's valid)
> Debug:  Module: Linked to module rlm_pap
> Debug:  Module: Instantiating pap
> Debug:   pap {
> Debug: 	encryption_scheme = "auto"
> Debug: 	auto_header = no
> Debug:   }
> Debug:     (Loaded rlm_chap, checking if it's valid)
> Debug:  Module: Linked to module rlm_chap
> Debug:  Module: Instantiating chap
> Debug:     (Loaded rlm_mschap, checking if it's valid)
> Debug:  Module: Linked to module rlm_mschap
> Debug:  Module: Instantiating mschap
> Debug:   mschap {
> Debug: 	use_mppe = yes
> Debug: 	require_encryption = no
> Debug: 	require_strong = no
> Debug: 	with_ntdomain_hack = no
> Debug:   }
> Debug:     (Loaded rlm_unix, checking if it's valid)
> Debug:  Module: Linked to module rlm_unix
> Debug:  Module: Instantiating unix
> Debug:   unix {
> Debug: 	radwtmp = "/var/log/freeradius/radwtmp"
> Debug:   }
> Debug:     (Loaded rlm_ldap, checking if it's valid)
> Debug:  Module: Linked to module rlm_ldap
> Debug:  Module: Instantiating ldap
> Debug:   ldap {
> Debug: 	server = "localhost"
> Debug: 	port = 389
> Debug: 	password = ""
> Debug: 	identity = ""
> Debug: 	net_timeout = 1
> Debug: 	timeout = 4
> Debug: 	timelimit = 3
> Debug: 	tls_mode = no
> Debug: 	start_tls = no
> Debug: 	tls_require_cert = "allow"
> Debug:    tls {
> Debug: 	start_tls = no
> Debug: 	require_cert = "allow"
> Debug:    }
> Debug: 	basedn = "ou=vpn,dc=home"
> Debug: 	filter = "(uid=%{Stripped-User-Name:-%{User-Name}})"
> Debug: 	base_filter = "(objectclass=radiusprofile)"
> Debug: 	password_attribute = "userPassword"
> Debug: 	auto_header = yes
> Debug: 	access_attr_used_for_allow = yes
> Debug: 	groupname_attribute = "cn"
> Debug: 	groupmembership_filter =
> "(|(&(objectClass=GroupOfNames)(member=%{Ldap-UserDn}))(&(objectClass=Group
>OfUniqueNames)(uniquemember=%{Ldap-UserDn})))" Debug: 	dictionary_mapping =
> "/etc/freeradius/ldap.attrmap"
> Debug: 	ldap_debug = 0
> Debug: 	ldap_connections_number = 5
> Debug: 	compare_check_items = no
> Debug: 	do_xlat = yes
> Debug: 	edir_account_policy_check = no
> Debug: 	set_auth_type = no
> Debug:   }
> Debug: rlm_ldap: Registering ldap_groupcmp for Ldap-Group
> Debug: rlm_ldap: Registering ldap_xlat with xlat_name ldap
> Debug: rlm_ldap: reading ldap<->radius mappings from file
> /etc/freeradius/ldap.attrmap
> Debug: rlm_ldap: LDAP radiusCheckItem mapped to RADIUS $GENERIC$
> Debug: rlm_ldap: LDAP radiusReplyItem mapped to RADIUS $GENERIC$
> Debug: rlm_ldap: LDAP digestHA1 mapped to RADIUS Digest-HA1
> Debug: rlm_ldap: LDAP userPassword mapped to RADIUS Cleartext-Password
> Debug: rlm_ldap: LDAP radiusAuthType mapped to RADIUS Auth-Type
> Debug: rlm_ldap: LDAP radiusSimultaneousUse mapped to RADIUS
> Simultaneous-Use
> Debug: rlm_ldap: LDAP radiusCalledStationId mapped to RADIUS
> Called-Station-Id
> Debug: rlm_ldap: LDAP radiusCallingStationId mapped to RADIUS
> Calling-Station-Id
> Debug: rlm_ldap: LDAP sambaLmPassword mapped to RADIUS LM-Password
> Debug: rlm_ldap: LDAP sambaNtPassword mapped to RADIUS NT-Password
> Debug: rlm_ldap: LDAP lmPassword mapped to RADIUS LM-Password
> Debug: rlm_ldap: LDAP ntPassword mapped to RADIUS NT-Password
> Debug: rlm_ldap: LDAP ntHash mapped to RADIUS NT-Hash
> Debug: rlm_ldap: LDAP lmHash mapped to RADIUS LM-Hash
> Debug: rlm_ldap: LDAP acctFlags mapped to RADIUS SMB-Account-CTRL-TEXT
> Debug: rlm_ldap: LDAP radiusExpiration mapped to RADIUS Expiration
> Debug: rlm_ldap: LDAP radiusNASIpAddress mapped to RADIUS NAS-IP-Address
> Debug: rlm_ldap: LDAP radiusServiceType mapped to RADIUS Service-Type
> Debug: rlm_ldap: LDAP radiusFramedProtocol mapped to RADIUS Framed-Protocol
> Debug: rlm_ldap: LDAP radiusFramedIPAddress mapped to RADIUS
> Framed-IP-Address
> Debug: rlm_ldap: LDAP radiusFramedIPNetmask mapped to RADIUS
> Framed-IP-Netmask
> Debug: rlm_ldap: LDAP radiusFramedRoute mapped to RADIUS Framed-Route
> Debug: rlm_ldap: LDAP radiusFramedRouting mapped to RADIUS Framed-Routing
> Debug: rlm_ldap: LDAP radiusFilterId mapped to RADIUS Filter-Id
> Debug: rlm_ldap: LDAP radiusFramedMTU mapped to RADIUS Framed-MTU
> Debug: rlm_ldap: LDAP radiusFramedCompression mapped to RADIUS
> Framed-Compression
> Debug: rlm_ldap: LDAP radiusLoginIPHost mapped to RADIUS Login-IP-Host
> Debug: rlm_ldap: LDAP radiusLoginService mapped to RADIUS Login-Service
> Debug: rlm_ldap: LDAP radiusLoginTCPPort mapped to RADIUS Login-TCP-Port
> Debug: rlm_ldap: LDAP radiusCallbackNumber mapped to RADIUS Callback-Number
> Debug: rlm_ldap: LDAP radiusCallbackId mapped to RADIUS Callback-Id
> Debug: rlm_ldap: LDAP radiusFramedIPXNetwork mapped to RADIUS
> Framed-IPX-Network
> Debug: rlm_ldap: LDAP radiusClass mapped to RADIUS Class
> Debug: rlm_ldap: LDAP radiusSessionTimeout mapped to RADIUS Session-Timeout
> Debug: rlm_ldap: LDAP radiusIdleTimeout mapped to RADIUS Idle-Timeout
> Debug: rlm_ldap: LDAP radiusTerminationAction mapped to RADIUS
> Termination-Action
> Debug: rlm_ldap: LDAP radiusLoginLATService mapped to RADIUS
> Login-LAT-Service
> Debug: rlm_ldap: LDAP radiusLoginLATNode mapped to RADIUS Login-LAT-Node
> Debug: rlm_ldap: LDAP radiusLoginLATGroup mapped to RADIUS Login-LAT-Group
> Debug: rlm_ldap: LDAP radiusFramedAppleTalkLink mapped to RADIUS
> Framed-AppleTalk-Link
> Debug: rlm_ldap: LDAP radiusFramedAppleTalkNetwork mapped to RADIUS
> Framed-AppleTalk-Network
> Debug: rlm_ldap: LDAP radiusFramedAppleTalkZone mapped to RADIUS
> Framed-AppleTalk-Zone
> Debug: rlm_ldap: LDAP radiusPortLimit mapped to RADIUS Port-Limit
> Debug: rlm_ldap: LDAP radiusLoginLATPort mapped to RADIUS Login-LAT-Port
> Debug: rlm_ldap: LDAP radiusReplyMessage mapped to RADIUS Reply-Message
> Debug: conns: 0x85c8988
> Debug:  Module: Checking authorize {...} for more modules to load
> Debug:     (Loaded rlm_realm, checking if it's valid)
> Debug:  Module: Linked to module rlm_realm
> Debug:  Module: Instantiating suffix
> Debug:   realm suffix {
> Debug: 	format = "suffix"
> Debug: 	delimiter = "@"
> Debug: 	ignore_default = no
> Debug: 	ignore_null = no
> Debug:   }
> Debug:     (Loaded rlm_files, checking if it's valid)
> Debug:  Module: Linked to module rlm_files
> Debug:  Module: Instantiating files
> Debug:   files {
> Debug: 	usersfile = "/etc/freeradius/users"
> Debug: 	acctusersfile = "/etc/freeradius/acct_users"
> Debug: 	preproxy_usersfile = "/etc/freeradius/preproxy_users"
> Debug: 	compat = "no"
> Debug:   }
> Debug:  Module: Checking session {...} for more modules to load
> Debug:     (Loaded rlm_radutmp, checking if it's valid)
> Debug:  Module: Linked to module rlm_radutmp
> Debug:  Module: Instantiating radutmp
> Debug:   radutmp {
> Debug: 	filename = "/var/log/freeradius/radutmp"
> Debug: 	username = "%{User-Name}"
> Debug: 	case_sensitive = yes
> Debug: 	check_with_nas = yes
> Debug: 	perm = 384
> Debug: 	callerid = yes
> Debug:   }
> Debug:  Module: Checking post-auth {...} for more modules to load
> Debug:     (Loaded rlm_attr_filter, checking if it's valid)
> Debug:  Module: Linked to module rlm_attr_filter
> Debug:  Module: Instantiating attr_filter.access_reject
> Debug:   attr_filter attr_filter.access_reject {
> Debug: 	attrsfile = "/etc/freeradius/attrs.access_reject"
> Debug: 	key = "%{User-Name}"
> Debug:   }
> Debug:  }
> Debug: }
> Debug: server {
> Debug:  modules {
> Debug:  Module: Checking authenticate {...} for more modules to load
> Debug:  Module: Checking authorize {...} for more modules to load
> Debug:     (Loaded rlm_preprocess, checking if it's valid)
> Debug:  Module: Linked to module rlm_preprocess
> Debug:  Module: Instantiating preprocess
> Debug:   preprocess {
> Debug: 	huntgroups = "/etc/freeradius/huntgroups"
> Debug: 	hints = "/etc/freeradius/hints"
> Debug: 	with_ascend_hack = no
> Debug: 	ascend_channels_per_line = 23
> Debug: 	with_ntdomain_hack = no
> Debug: 	with_specialix_jetstream_hack = no
> Debug: 	with_cisco_vsa_hack = no
> Debug: 	with_alvarion_vsa_hack = no
> Debug:   }
> Debug:  Module: Checking preacct {...} for more modules to load
> Debug:     (Loaded rlm_acct_unique, checking if it's valid)
> Debug:  Module: Linked to module rlm_acct_unique
> Debug:  Module: Instantiating acct_unique
> Debug:   acct_unique {
> Debug: 	key = "User-Name, Acct-Session-Id, NAS-IP-Address,
> Client-IP-Address, NAS-Port"
> Debug:   }
> Debug:  Module: Checking accounting {...} for more modules to load
> Debug:     (Loaded rlm_detail, checking if it's valid)
> Debug:  Module: Linked to module rlm_detail
> Debug:  Module: Instantiating detail
> Debug:   detail {
> Debug: 	detailfile =
> "/var/log/freeradius/radacct/%{Client-IP-Address}/detail-%Y%m%d"
> Debug: 	header = "%t"
> Debug: 	detailperm = 384
> Debug: 	dirperm = 493
> Debug: 	locking = no
> Debug: 	log_packet_header = no
> Debug:   }
> Debug:  Module: Instantiating attr_filter.accounting_response
> Debug:   attr_filter attr_filter.accounting_response {
> Debug: 	attrsfile = "/etc/freeradius/attrs.accounting_response"
> Debug: 	key = "%{User-Name}"
> Debug:   }
> Debug:  Module: Checking session {...} for more modules to load
> Debug:  Module: Checking post-auth {...} for more modules to load
> Debug:  }
> Debug: }
> Debug: radiusd: #### Opening IP addresses and Ports ####
> Debug: listen {
> Debug: 	type = "auth"
> Debug: 	ipaddr = *
> Debug: 	port = 0
> Debug: }
> Debug: listen {
> Debug: 	type = "acct"
> Debug: 	ipaddr = *
> Debug: 	port = 0
> Debug: }
> Debug: main {
> Debug: 	snmp = no
> Debug: 	smux_password = ""
> Debug: 	snmp_write_access = no
> Debug: }
> Debug: Listening on authentication address * port 1812
> Debug: Listening on accounting address * port 1813
> Debug: Listening on proxy address * port 1814
> Debug: Ready to process requests.
> rad_recv: Access-Request packet from host 127.0.0.1 port 58943, id=90,
> length=144
> 	Service-Type = Framed-User
> 	Framed-Protocol = PPP
> 	User-Name = "light"
> 	MS-CHAP-Challenge = 0x0478587b0fbb0f95a407ca180b2f8a37
> 	MS-CHAP2-Response =
> 0xd300647b6787cf9c9d95e042b5ba55d38d180000000000000000261560ec809d3c64cefc0
>34d7af5be715a3570723e5dbe2f Calling-Station-Id = "192.168.0.1"
> 	NAS-IP-Address = 0x0101
> 	NAS-Port = 0
> Debug: +- entering group authorize
> Debug:   modsingle[authorize]: calling preprocess (rlm_preprocess) for
> request 0
> Debug:   modsingle[authorize]: returned from preprocess (rlm_preprocess)
> for request 0
> Debug: ++[preprocess] returns ok
> Debug:   modsingle[authorize]: calling chap (rlm_chap) for request 0
> Debug:   modsingle[authorize]: returned from chap (rlm_chap) for request 0
> Debug: ++[chap] returns noop
> Debug:   modsingle[authorize]: calling ldap (rlm_ldap) for request 0
> Debug: rlm_ldap: - authorize
> Debug: rlm_ldap: performing user authorization for light
> Debug: WARNING: Deprecated conditional expansion ":-".  See "man unlang"
> for details
> Debug: 	expand: (uid=%{Stripped-User-Name:-%{User-Name}}) -> (uid=light)
> Debug: 	expand: ou=vpn,dc=home -> ou=vpn,dc=home
> Debug: rlm_ldap: ldap_get_conn: Checking Id: 0
> Debug: rlm_ldap: ldap_get_conn: Got Id: 0
> Debug: rlm_ldap: attempting LDAP reconnection
> Debug: rlm_ldap: (re)connect to localhost:389, authentication 0
> Debug: rlm_ldap: bind as / to localhost:389
> Debug: rlm_ldap: waiting for bind result ...
> Debug: rlm_ldap: Bind was successful
> Debug: rlm_ldap: performing search in ou=vpn,dc=home, with filter
> (uid=light)
> Debug: rlm_ldap: No default NMAS login sequence
> Debug: rlm_ldap: looking for check items in directory...
> Debug: rlm_ldap: looking for reply items in directory...
> Debug: WARNING: No "known good" password was found in LDAP.  Are you sure
> that the user is configured correctly?
> Debug: rlm_ldap: user light authorized to use remote access
> Debug: rlm_ldap: ldap_release_conn: Release Id: 0
> Debug:   modsingle[authorize]: returned from ldap (rlm_ldap) for request 0
> Debug: ++[ldap] returns ok
> Debug:   modsingle[authorize]: calling mschap (rlm_mschap) for request 0
> Debug:   rlm_mschap: Found MS-CHAP attributes.  Setting 'Auth-Type  =
> mschap'
> Debug:   modsingle[authorize]: returned from mschap (rlm_mschap) for
> request 0
> Debug: ++[mschap] returns ok
> Debug:   modsingle[authorize]: calling suffix (rlm_realm) for request 0
> Debug:     rlm_realm: No '@' in User-Name = "light", looking up realm NULL
> Debug:     rlm_realm: No such realm "NULL"
> Debug:   modsingle[authorize]: returned from suffix (rlm_realm) for request
> 0
> Debug: ++[suffix] returns noop
> Debug:   modsingle[authorize]: calling unix (rlm_unix) for request 0
> Debug:   modsingle[authorize]: returned from unix (rlm_unix) for request 0
> Debug: ++[unix] returns notfound
> Debug:   modsingle[authorize]: calling files (rlm_files) for request 0
> Debug:   modsingle[authorize]: returned from files (rlm_files) for request
> 0 Debug: ++[files] returns noop
> Debug:   modsingle[authorize]: calling expiration (rlm_expiration) for
> request 0
> Debug:   modsingle[authorize]: returned from expiration (rlm_expiration)
> for request 0
> Debug: ++[expiration] returns noop
> Debug:   modsingle[authorize]: calling logintime (rlm_logintime) for
> request 0
> Debug:   modsingle[authorize]: returned from logintime (rlm_logintime) for
> request 0
> Debug: ++[logintime] returns noop
> Debug:   modsingle[authorize]: calling pap (rlm_pap) for request 0
> Debug: rlm_pap: WARNING! No "known good" password found for the user.
> Authentication may fail because of this.
> Debug:   modsingle[authorize]: returned from pap (rlm_pap) for request 0
> Debug: ++[pap] returns noop
> Debug:   rad_check_password:  Found Auth-Type mschap
> Debug: auth: type "MSCHAP"
> Debug: +- entering group MS-CHAP
> Debug:   modsingle[authenticate]: calling mschap (rlm_mschap) for request 0
> Debug:   rlm_mschap: No Cleartext-Password configured.  Cannot create
> LM-Password.
> Debug:   rlm_mschap: No Cleartext-Password configured.  Cannot create
> NT-Password.
> Debug:   rlm_mschap: Told to do MS-CHAPv2 for light with NT-Password
> Debug:   rlm_mschap: FAILED: No NT/LM-Password.  Cannot perform
> authentication.
> Debug:   rlm_mschap: FAILED: MS-CHAP2-Response is incorrect
> Debug:   modsingle[authenticate]: returned from mschap (rlm_mschap) for
> request 0
> Debug: ++[mschap] returns reject
> Debug: auth: Failed to validate the user.
> Auth: Login incorrect: [light/<via Auth-Type = mschap>] (from client
> localhost port 0 cli 192.168.0.1)
> Debug:   Found Post-Auth-Type Reject
> Debug: +- entering group REJECT
> Debug:   modsingle[post-auth]: calling attr_filter.access_reject
> (rlm_attr_filter) for request 0
> Debug: 	expand: %{User-Name} -> light
> Debug:  attr_filter: Matched entry DEFAULT at line 11
> Debug:   modsingle[post-auth]: returned from attr_filter.access_reject
> (rlm_attr_filter) for request 0
> Debug: ++[attr_filter.access_reject] returns updated
> Debug: Delaying reject of request 0 for 1 seconds
> Debug: Going to the next request
> Debug: Waking up in 0.9 seconds.
> Debug: Sending delayed reject for request 0
> Sending Access-Reject of id 90 to 127.0.0.1 port 58943
> Debug: Waking up in 4.9 seconds.
> Debug: Cleaning up request 0 ID 90 with timestamp +7
> Debug: Ready to process requests.




More information about the Freeradius-Users mailing list