<div dir="ltr">I have done the following changes in the files below to test FreeRadius Server against a Openldap backend<br>.<br><b><br>1) /etc/raddb/modules/ldap</b><br><br><br>ldap {<br> #<br> # Note that this needs to match the name in the LDAP<br>
# server certificate, if you're using ldaps.<br> <b>server = "<a href="http://127.0.0.1">127.0.0.1</a>"<br> identity = "cn=Administrator,dc=thales,dc=com"<br> password = thales<br> basedn = "dc=thales,dc=com"<br>
filter = "(uid=%{Stripped-User-Name:-%{User-Name}})"<br> base_filter = "(objectclass=radiusprofile)"</b><br><br> # default_profile = "cn=radprofile,ou=dialup,o=My Org,c=UA"<br> # profile_attribute = "radiusProfileDn"<br>
<b>access_attr = "dialupAccess"</b><br><br> # Mapping of RADIUS dictionary attributes to LDAP<br> # directory attributes.<br> <b>dictionary_mapping = ${confdir}/ldap.attrmap<br></b> <b>password_attribute = userPassword<br>
<br>And also with no tls .<br><br><br><br><br>2) ldap.attrmap File with no changes.<br><br><br></b>#<br># Mapping of RADIUS dictionary attributes to LDAP directory attributes<br># to be used by LDAP authentication and authorization module (rlm_ldap)<br>
#<br># Format:<br># ItemType RADIUS-Attribute-Name ldapAttributeName [operator]<br>#<br># Where:<br># ItemType = checkItem or replyItem <br># RADIUS-Attribute-Name = attribute name in RADIUS dictionary<br>
# ldapAttributeName = attribute name in LDAP schema<br># operator = optional, and may not be present.<br># If not present, defaults to "==" for checkItems,<br># and "=" for replyItems.<br>
# If present, the operator here should be one<br># of the same operators as defined in the "users"3<br># file ("man users", or "man 5 users").<br>
# If an operator is present in the value of the<br># LDAP entry (i.e. ":=foo"), then it over-rides<br># both the default, and any operator given here.<br>#<br># If $GENERIC$ is specified as RADIUS-Attribute-Name, the line specifies<br>
# a LDAP attribute which can be used to store any RADIUS <br># attribute/value-pair in LDAP directory.<br>#<br># You should edit this file to suit it to your needs.<br>#<br><br>checkItem $GENERIC$ radiusCheckItem<br>
replyItem $GENERIC$ radiusReplyItem<br><br>checkItem Auth-Type radiusAuthType<br>checkItem Simultaneous-Use radiusSimultaneousUse<br>checkItem Called-Station-Id radiusCalledStationId<br>
checkItem Calling-Station-Id radiusCallingStationId<br>checkItem LM-Password lmPassword<br>checkItem NT-Password ntPassword<br>checkItem LM-Password sambaLmPassword<br>checkItem NT-Password sambaNtPassword<br>
checkItem SMB-Account-CTRL-TEXT acctFlags<br>checkItem Expiration radiusExpiration<br>checkItem NAS-IP-Address radiusNASIpAddress<br><br>replyItem Service-Type radiusServiceType<br>
replyItem Framed-Protocol radiusFramedProtocol<br>replyItem Framed-IP-Address radiusFramedIPAddress<br>replyItem Framed-IP-Netmask radiusFramedIPNetmask<br>replyItem Framed-Route radiusFramedRoute<br>
replyItem Framed-Routing radiusFramedRouting<br>replyItem Filter-Id radiusFilterId<br>replyItem Framed-MTU radiusFramedMTU<br>replyItem Framed-Compression radiusFramedCompression<br>
replyItem Login-IP-Host radiusLoginIPHost<br>replyItem Login-Service radiusLoginService<br>replyItem Login-TCP-Port radiusLoginTCPPort<br>replyItem Callback-Number radiusCallbackNumber<br>
replyItem Callback-Id radiusCallbackId<br>replyItem Framed-IPX-Network radiusFramedIPXNetwork<br>replyItem Class radiusClass<br>replyItem Session-Timeout radiusSessionTimeout<br>
replyItem Idle-Timeout radiusIdleTimeout<br>replyItem Termination-Action radiusTerminationAction<br>replyItem Login-LAT-Service radiusLoginLATService<br>replyItem Login-LAT-Node radiusLoginLATNode<br>
replyItem Login-LAT-Group radiusLoginLATGroup<br>replyItem Framed-AppleTalk-Link radiusFramedAppleTalkLink<br>replyItem Framed-AppleTalk-Network radiusFramedAppleTalkNetwork<br>replyItem Framed-AppleTalk-Zone radiusFramedAppleTalkZone<br>
replyItem Port-Limit radiusPortLimit<br>replyItem Login-LAT-Port radiusLoginLATPort<br>replyItem Reply-Message radiusReplyMessage<b><br><br><br>3) /etc/openldap/ldap.conf<br>#</b><br>
# LDAP Defaults<br>#<br><br># See ldap.conf(5) for details<br># This file should be world readable but not world writable.<br><br>#BASE dc=example, dc=com<br>#URI ldap://<a href="http://ldap.example.com">ldap.example.com</a> ldap://<a href="http://ldap-master.example.com:666">ldap-master.example.com:666</a><br>
<br>#SIZELIMIT 12<br>#TIMELIMIT 15<br>#DEREF never<br>#TLS_REQCERT allow<b><br>host localhost<br>base dc=thales,dc=com<br><br><br>4) /etc/openldap/slapd.conf<br><br>#<br># See slapd.conf(5) for details on configuration options.<br>
# This file should NOT be world readable.<br>#<br>include /etc/openldap/schema/core.schema<br>include /etc/openldap/schema/cosine.schema<br>include /etc/openldap/schema/inetorgperson.schema<br>include /etc/openldap/schema/rfc2307bis.schema<br>
include /etc/openldap/schema/yast.schema<br>include /etc/openldap/schema/RADIUS-LDAPv3.schema<br># Define global ACLs to disable default read access.<br><br># Do not enable referrals until AFTER you have a working directory<br>
# service AND an understanding of referrals.<br>#referral ldap://<a href="http://root.openldap.org">root.openldap.org</a><br><br></b>pidfile /var/run/slapd/slapd.pid<br>argsfile /var/run/slapd/slapd.args<b><br>
<br></b># Load dynamic backend modules:<br>modulepath /usr/lib/openldap/modules<br># moduleload <a href="http://back_ldap.la">back_ldap.la</a><br># moduleload <a href="http://back_meta.la">back_meta.la</a><br># moduleload <a href="http://back_monitor.la">back_monitor.la</a><br>
# moduleload <a href="http://back_perl.la">back_perl.la</a><br><br># Sample security restrictions<br># Require integrity protection (prevent hijacking)<br># Require 112-bit (3DES or better) encryption for updates<br>
# Require 63-bit encryption for simple bind<br># security ssf=1 update_ssf=112 simple_bind=64<br><br># Sample access control policy:<br># Root DSE: allow anyone to read it<br># Subschema (sub)entry DSE: allow anyone to read it<br>
# Other DSEs:<br># Allow self write access to user password<br># Allow anonymous users to authenticate<br># Allow read access to everything else<br># Directives needed to implement policy:<br>
access to dn.base=""<br> by * read<br><br>access to dn.base="cn=Subschema"<br> by * read<br><br>access to attrs=userPassword,userPKCS12<br> by self write<br> by * auth<br><br>
access to attrs=shadowLastChange<br> by self write<br> by * read<br><br>access to *<br> by * read<b><br><br># if no access controls are present, the default policy<br># allows anyone and everyone to read anything but restricts<br>
# updates to rootdn. (e.g., "access to * by * read")<br>#<br># rootdn can always read and write EVERYTHING!<br><br>#######################################################################<br># BDB database definitions<br>
#######################################################################<br><br>loglevel 0<br>allow bind_v2<br>database bdb<br>suffix "dc=thales,dc=com"<br>rootdn "cn=Administrator,dc=thales,dc=com"<br>
rootpw "thales"<br>directory /var/lib/ldap<br>checkpoint 1024 5<br>cachesize 10000<br>index objectClass eq<br><br><br><br>And in /etc/raddb/sites-enabled/default file,<br><br>I have enabled ldap in 'Authorize and Authenticate Section'.<br>
<br><br>5) And this is my ldapsearch output to lists my directory contents in ldif.<br><br># ldapsearch -x -h localhost objectclass=*<br># extended LDIF<br>#<br># LDAPv3<br># base <> with scope subtree<br># filter: objectclass=*<br>
# requesting: ALL<br>#<br><br># <a href="http://thales.com">thales.com</a><br>dn: dc=thales,dc=com<br>description: thales.Com, your trusted non-existent corporation.<br>dc: thales<br>o: <a href="http://thales.com">thales.com</a><br>
objectClass: top<br>objectClass: dcObject<br>objectClass: organization<br><br># Users, <a href="http://thales.com">thales.com</a><br>dn: ou=Users,dc=thales,dc=com<br>ou: Users<br>description: <a href="http://thales.com">thales.com</a> Users<br>
objectClass: organizationalUnit<br><br># Groups, <a href="http://thales.com">thales.com</a><br>dn: ou=Groups,dc=thales,dc=com<br>ou: Groups<br>description: thales.Com Groups<br>objectClass: organizationalUnit<br><br># System, <a href="http://thales.com">thales.com</a><br>
dn: ou=System,dc=thales,dc=com<br>ou: System<br>description: Special accounts used by software applications.<br>objectClass: organizationalUnit<br><br># hasan, Users, <a href="http://thales.com">thales.com</a><br>dn: uid=hasan,ou=Users,dc=thales,dc=com<br>
ou: Users<br>uid: hasan<br>cn: hasan syed<br>sn: hasan<br>givenName: syed<br>displayName: Syed Hasan<br>title: Systems Integrator<br>description: Systems Integration and IT for <a href="http://thales.com">thales.com</a><br>
employeeType: Employee<br>departmentNumber: 001<br>employeeNumber: 001-08-98<br>mail: <a href="mailto:hasansyed@thales.com">hasansyed@thales.com</a><br>mail: <a href="mailto:hasan@thales.com">hasan@thales.com</a><br>roomNumber: 301<br>
telephoneNumber: +1 555 555 4321<br>mobile: +1 555 555 6789<br>st: Alpes Maritimes<br>l: Cannes<br>street: 1234 Cicero Ave.<br>preferredLanguage: en-us,en-gb<br>objectClass: person<br>objectClass: organizationalPerson<br>
objectClass: inetOrgPerson<br><br># barbara, Users, <a href="http://thales.com">thales.com</a><br>dn: uid=barbara,ou=Users,dc=thales,dc=com<br>ou: Users<br>uid: barbara<br>sn: Jensen<br>cn: Barbara Jensen<br>givenName: Barbara<br>
displayName: Barbara Jensen<br>mail: <a href="mailto:barbara@thales.com">barbara@thales.com</a><br>objectClass: person<br>objectClass: organizationalPerson<br>objectClass: inetOrgPerson<br><br># LDAP Admins, Groups, <a href="http://thales.com">thales.com</a><br>
dn: cn=LDAP Admins,ou=Groups,dc=thales,dc=com<br>cn: LDAP Admins<br>ou: Groups<br>description: Users who are LDAP administrators<br>uniqueMember: uid=barbara,dc=thales,dc=com<br>uniqueMember: uid=hasan,dc=thales,dc=com<br>
objectClass: groupOfUniqueNames<br><br># people, <a href="http://thales.com">thales.com</a><br>dn: ou=people,dc=thales,dc=com<br>objectClass: top<br>objectClass: organizationalUnit<br>ou: people<br><br># group, <a href="http://thales.com">thales.com</a><br>
dn: ou=group,dc=thales,dc=com<br>objectClass: top<br>objectClass: organizationalUnit<br>ou: group<br><br># grouptemplate, Users, <a href="http://thales.com">thales.com</a><br>dn: cn=grouptemplate,ou=Users,dc=thales,dc=com<br>
cn: grouptemplate<br>objectClass: top<br>objectClass: suseObjectTemplate<br>objectClass: suseGroupTemplate<br>suseNamingAttribute: cn<br>susePlugin: UsersPluginLDAPAll<br><br># usertemplate, Users, <a href="http://thales.com">thales.com</a><br>
dn: cn=usertemplate,ou=Users,dc=thales,dc=com<br>cn: usertemplate<br>objectClass: top<br>objectClass: suseObjectTemplate<br>objectClass: suseUserTemplate<br>suseDefaultValue: homedirectory=/home/%uid<br>suseDefaultValue: loginshell=/bin/bash<br>
suseNamingAttribute: uid<br>susePlugin: UsersPluginLDAPAll<br><br># anwar, users, <a href="http://thales.com">thales.com</a><br>dn: cn=anwar,ou=users,dc=thales,dc=com<br>cn: anwar<br>objectClass: top<br>objectClass: suseModuleConfiguration<br>
objectClass: suseUserConfiguration<br>suseDefaultBase: ou=people,dc=thales,dc=com<br>suseDefaultTemplate: cn=usertemplate,ou=Users,dc=thales,dc=com<br>suseMaxPasswordLength: 8<br>suseMaxUniqueId: 60000<br>suseMinPasswordLength: 5<br>
suseMinUniqueId: 1000<br>suseNextUniqueId: 1000<br>susePasswordHash: CRYPT<br>suseSearchFilter: objectclass=posixaccount<br>suseSkelDir: /etc/skel<br><br># groupconfiguration, Users, <a href="http://thales.com">thales.com</a><br>
dn: cn=groupconfiguration,ou=Users,dc=thales,dc=com<br>cn: groupconfiguration<br>objectClass: top<br>objectClass: suseModuleConfiguration<br>objectClass: suseGroupConfiguration<br>suseDefaultBase: ou=group,dc=thales,dc=com<br>
suseDefaultTemplate: cn=grouptemplate,ou=Users,dc=thales,dc=com<br>suseMaxUniqueId: 60000<br>suseMinUniqueId: 1000<br>suseNextUniqueId: 1000<br>suseSearchFilter: objectclass=posixgroup<br><br># search result<br>search: 2<br>
result: 0 Success<br><br># numResponses: 14<br># numEntries: 13<br><br><br>By this tree structure, In the users entry, I want to authenticate the uid hasan with a user password 'thales' using radtest to check whether FreeRadius can authenticate against Openldap backend.<br>
Using the command, radtest hasan thales <a href="http://192.168.1.131">192.168.1.131</a> 1 testing123<br><br>And when I have done the above changes for OpenLdap and FreeRadius Integration.<br>And Started FreeRadius Server using radiusd -X command.<br>
<br>Please help me in this regard.<br><br>SYED<br>Stagiare,Thales<br><br>6) I got this Output in which the errors is failed to link rlm_ldap module .<br><br><br></b>FreeRADIUS Version 2.0.5, for host i686-pc-linux-gnu, built on Jul 21 2008 at 15:35:42<br>
Copyright (C) 1999-2008 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 /usr/local/etc/raddb/radiusd.conf<br>
including configuration file /usr/local/etc/raddb/proxy.conf<br>
including configuration file /usr/local/etc/raddb/clients.conf<br>
including configuration file /usr/local/etc/raddb/snmp.conf<br>
including files in directory /usr/local/etc/raddb/modules/<br>
including configuration file /usr/local/etc/raddb/modules/policy<br>
including configuration file /usr/local/etc/raddb/modules/acct_unique<br>
including configuration file /usr/local/etc/raddb/modules/unix<br>
including configuration file /usr/local/etc/raddb/modules/chap<br>
including configuration file /usr/local/etc/raddb/modules/preprocess<br>
including configuration file /usr/local/etc/raddb/modules/expiration<br>
including configuration file /usr/local/etc/raddb/modules/mac2vlan<br>
including configuration file /usr/local/etc/raddb/modules/mschap<br>
including configuration file /usr/local/etc/raddb/modules/ippool<br>
including configuration file /usr/local/etc/raddb/modules/files<br>
including configuration file /usr/local/etc/raddb/modules/krb5<br>
including configuration file /usr/local/etc/raddb/modules/passwd<br>
including configuration file /usr/local/etc/raddb/modules/radutmp<br>
including configuration file /usr/local/etc/raddb/modules/attr_rewrite<br>
including configuration file /usr/local/etc/raddb/modules/echo<br>
including configuration file /usr/local/etc/raddb/modules/etc_group<br>
including configuration file /usr/local/etc/raddb/modules/pap<br>
including configuration file /usr/local/etc/raddb/modules/realm<br>
including configuration file /usr/local/etc/raddb/modules/pam<br>
including configuration file /usr/local/etc/raddb/modules/always<br>
including configuration file /usr/local/etc/raddb/modules/exec<br>
including configuration file /usr/local/etc/raddb/modules/logintime<br>
including configuration file /usr/local/etc/raddb/modules/sql_log<br>
including configuration file /usr/local/etc/raddb/modules/smbpasswd<br>
including configuration file /usr/local/etc/raddb/modules/sradutmp<br>
including configuration file /usr/local/etc/raddb/modules/counter<br>
including configuration file /usr/local/etc/raddb/modules/ldap<br>
including configuration file /usr/local/etc/raddb/modules/expr<br>
including configuration file /usr/local/etc/raddb/modules/attr_filter<br>
including configuration file /usr/local/etc/raddb/modules/checkval<br>
including configuration file /usr/local/etc/raddb/modules/digest<br>
including configuration file /usr/local/etc/raddb/modules/detail<br>
including configuration file /usr/local/etc/raddb/modules/detail.log<br>
including configuration file /usr/local/etc/raddb/modules/mac2ip<br>
including configuration file /usr/local/etc/raddb/eap.conf<br>
including configuration file /usr/local/etc/raddb/sql.conf<br>
including configuration file /usr/local/etc/raddb/sql/mysql/dialup.conf<br>
including configuration file /usr/local/etc/raddb/sql/mysql/counter.conf<br>
including configuration file /usr/local/etc/raddb/policy.conf<br>
including files in directory /usr/local/etc/raddb/sites-enabled/<br>
including configuration file /usr/local/etc/raddb/sites-enabled/default<br>
including configuration file /usr/local/etc/raddb/sites-enabled/inner-tunnel<br>
including dictionary file /usr/local/etc/raddb/dictionary<br>
main {<br>
prefix = "/usr/local"<br>
localstatedir = "/usr/local/var"<br>
logdir = "/usr/local/var/log/radius"<br>
libdir = "/usr/local/lib"<br>
radacctdir = "/usr/local/var/log/radius/radacct"<br>
hostname_lookups = no<br>
max_request_time = 30<br>
cleanup_delay = 5<br>
max_requests = 1024<br>
allow_core_dumps = no<br>
pidfile = "/usr/local/var/run/radiusd/radiusd.pid"<br>
checkrad = "/usr/local/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>
}<br>
client localhost {<br>
ipaddr = <a href="http://127.0.0.1">127.0.0.1</a><br>
require_message_authenticator = no<br>
secret = "testing123"<br>
nastype = "other"<br>
}<br>
radiusd: #### Loading Realms and Home Servers ####<br>
proxy server {<br>
retry_delay = 5<br>
retry_count = 3<br>
default_fallback = no<br>
dead_time = 120<br>
wake_all_if_all_dead = no<br>
}<br>
home_server localhost {<br>
ipaddr = <a href="http://127.0.0.1">127.0.0.1</a><br>
port = 1812<br>
type = "auth"<br>
secret = "testing123"<br>
response_window = 20<br>
max_outstanding = 65536<br>
zombie_period = 40<br>
status_check = "status-server"<br>
ping_check = "none"<br>
ping_interval = 30<br>
check_interval = 30<br>
num_answers_to_alive = 3<br>
num_pings_to_alive = 3<br>
revive_interval = 120<br>
status_check_timeout = 4<br>
}<br>
home_server_pool my_auth_failover {<br>
type = fail-over<br>
home_server = localhost<br>
}<br>
realm <a href="http://example.com">example.com</a> {<br>
auth_pool = my_auth_failover<br>
}<br>
realm LOCAL {<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 = "/usr/local/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>
}<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>
rlm_eap: Ignoring EAP-Type/tls because we do not have OpenSSL support.<br>
rlm_eap: Ignoring EAP-Type/ttls because we do not have OpenSSL support.<br>
rlm_eap: Ignoring EAP-Type/peap because we do not have OpenSSL support.<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 = "/usr/local/etc/raddb/users"<br>
acctusersfile = "/usr/local/etc/raddb/acct_users"<br>
preproxy_usersfile = "/usr/local/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 = "/usr/local/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_attr_filter<br>
Module: Instantiating attr_filter.access_reject<br>
attr_filter attr_filter.access_reject {<br>
attrsfile = "/usr/local/etc/raddb/attrs.access_reject"<br>
key = "%{User-Name}"<br>
}<br>
}<br>
}<br>
server {<br>
modules {<br>
Module: Checking authenticate {...} for more modules to load<br>
/<b>usr/local/etc/raddb/modules/ldap[29]: Failed to link to module
'rlm_ldap': rlm_ldap.so: cannot open shared object file: No such file
or directory<br>
/usr/local/etc/raddb/sites-enabled/default[275]: Failed to find module "ldap".<br>
/usr/local/etc/raddb/sites-enabled/default[275]: Failed to parse "ldap" entry.<br>
}<br>
}</b><br><b>
Errors initializing modules</b><br>
<br><b><br><br><br><br></b></div>