SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Do The Right Thing!
How LDAP servers should help LDAP clients
Michael Ströder <michael@stroeder.com>
Paris, 2013­11­19
Who?
Michael Ströder <michael@stroeder.com>
Freelancer : LDAP and PKI consulting
Active open source projects:
– http://web2ldap.de
– http://python-ldap.org

Not a UI expert
Old-fashioned
Concerned about insecurity by complexity
stroeder.com
Why?
Kurt Zeilenga wrote:
> It might be interesting to discuss how/where web2ldap is
> able to support its users using vendor-inspecific codes,
> where you need to use vendor-specific codes, where LDAP's
> discovery mechanisms help, where they don't, what you do
> when they don't, etc.

How to guide human users using as much
server-side information as possible ?
How much client-side knowledge is needed?

stroeder.com
What?
Guiding vs. enforcing, notes about users
Introduction to available server information
Example use-cases with web2ldap using
server information
Recommendations
Open issues to be solved

stroeder.com
Guiding... (1)
Mantra:
Guiding is not enforcing!
Avoid user frustration, reducing false attempts
to reach use-case goal in normal situation
Try to use server-side extensions to improve
client behaviour without bothering user
Don't stop a skilled user to do something
unusual

stroeder.com
Guiding... (2)
Meaningful input forms:
– searchable naming contexts (rootDSE)
– available attributes and editable input values
(subschema, access control, constraints)
– Information about affected LDAP entries (count)

Gracefully handle user's input values (normalize)
Optional use of : DIT content/structure rules,
name forms, LDAPv3 ext. controls and ext.
operations

stroeder.com
Enforcing... (1)
Recommendation: Let only the server enforce...
– schema
– access control
– constraints (values, uniqueness, references)

Avoid client enforcing of schema and constraints
because users could circumvent rules
=> data integrity risks
Avoid client-side access control because users could
circumvent rules
=> security risks

stroeder.com
Enforcing... (2)
Client-side access control requires powerful
proxy user accounts which in real life gets
(ab)used later for other purposes (yuck!)
More meaningful logging possible by using
end user's identity for LDAP operations
Server can check constraints within one
transaction

stroeder.com
Enforcing... (3)
Things to enforce at client side based on
client configuration or user's input:
– StartTLS
– bind method

Local security configuration in web2ldap is
gateway security policy

stroeder.com
Users...
Some personal observations:
– Users are not dumb
– Users are pretty good in ignoring unneeded things
– Users appreciate additional information if something
went wrong and will report it to you
– Secretary with usual office skills provides better data
than IT guy with technical LDAP skills
– Speaking with end users helps

personal observations are the opposite of mainstream
UI opinions of IT guys...

stroeder.com
Server-side information (1)
LDAP result information (often overlooked)
– result code
– diagnostic message

rootDSE (obvious)
– naming contexts, default search root
– features (extended controls/operations)
– vendor-specific information (server roles etc.)

subschema subentry (most promising)

stroeder.com
Server-side information (2)
extended controls
extended operations
number of entries/values (entry count)
operational attributes (modifyTimestamp,
numSubordinates etc.)
special count extensions
audit / change log databases (for restoring?)
server-side access control and constraints
stroeder.com
Rather not generic
/web2ldap/passwd
Set password with various methods
(RFC 3062 ext.op., client-side hashed, MS AD,
Samba3 hashes)
/web2ldap/groupadm
Add/remove entry to/from groups
/web2ldap/dds
Refresh operation for dynamic entries
(implemented for Dieter)
Still subschema used almost everywhere.
stroeder.com
Subschema subentry (1)
LDAP
syntax

matching
rule

SYNTAX
EQUALITY
SUBSTR
ORDERING

SYNTAX

attribute
type

MUST
MAY
NOT

APPLIES

matching
rule use

MUST
MAY

SUP

same
OID

same
OID

structural
object
class

SUP

abstract
object
class

SUP

SUP

auxiliary
object
class

MUST

AUX

DIT
structure
rule

DIT
content
rule
OC

FORM

Name
form

SUP

stroeder.com
Subschema subentry (2)
Query attribute subschemaSubentry in
current entry
Read and parse the referenced subschema
subentry
Fall-back needed due to access restrictions
Each part of the DIT could have separate
subschema (rarely in practice)
Not unusual to have big subschema subentry
~200..400kB => caching needed!
stroeder.com
Demos
Any special interests ?

stroeder.com
Diffing with matching rules
Goal:
Fine-grained delete-by-value to provoke
collisions in case of concurrent write access
(e.g. two admins working at the same ticket)
web2ldap uses EQUALITY matching rule
information to determine whether it's possible
to delete a certain attribute value
Matching rules are inherited !
It's not sufficient to only look at the
AttributeTypeDescription...
stroeder.com
DIT structure rules & name forms
Enforce tree structure, web2ldap guides
Ideal if server sets governingStructureRule
If not you have to find nearest “subschema
administrative point”
Real X.500 servers might provide attribute
administrativeRole with a value of
subschemaAdminSpecificArea
=> rather exotic in the pure LDAP field
=> fall-back to best matching naming context
Thanks to S. Legg for this private lesson :-)
stroeder.com
Interop issues (1)
Domino/LDAP tested up to 7.x (not sure whether fixed
in 8.x):
– single null-byte in attribute namingContexts
– returns diagnosticMessage in ISO-8859-1
– many attributes not found in subschema

web2ldap has work-arounds
otherwise users would blame web2ldap not to work
with Domino/LDAP
BTW : It was funny to see Domino/LDAP 5.x crash
because of tab character sent in a password ;-) (fixed)

stroeder.com
Interop issues (2)
Assertion control sent with modify request to
detect concurrent write access
Leads to interop issues with slapo-constraint
Had to disable this completely forever even if it
gets fixed because vendor version not
available in rootDSE
Users would blame web2ldap not to work with
OpenLDAP

stroeder.com
Interop issues (3)
Basically it's good when LDAP server enforces
access control - also on use of extended controls
But overzealous checks are not good !
OpenDJ disallowed post read entry control even in
case the user was allowed to read entry
At least a non-critical controls should not result in
error code being returned
Users would blame web2ldap not to work with
OpenDJ

stroeder.com
Interop issues (4)
ApacheDS returned invalid ASN.1 encoding for
password policy response control
=> raising ASN.1 exception was disabled in
python-ldap in case of invalid but non-critical
response controls
Otherwise users would blame web2ldap not to
work with ApacheDS

stroeder.com
Interop issues (5)
OpenLDAP returned invalid ASN.1 encoding
for read entry response control
Immediately fixed by Pierangelo within hours
But decoding work-around added to web2ldap
Otherwise users would blame web2ldap not to
work with OpenLDAP
or I'd have to disable the feature forever.

stroeder.com
Interop issues (6)
non-ASCII chars in MS AD's are a bad idea
SASL/DIGEST-MD5 does not work even
though you can see UTF-8 mentioned in SASL
messages
impossible to work around this
I don't expect this to be ever fixed because of
AD's own backward compability commitment

stroeder.com
Recommendation to client developers
Don't implement an advance LDAP client, it's
waste of your spare time
Prefer RAD to meet customer's requirements
Still crazy enough?
Still interested in implementing advanced
LDAP features ?
Mantra : testing, testing, testing, testing, ....
Otherwise people will complain about your
client and will prefer dumb LDAP clients
stroeder.com
Interop testing with servers
OpenLDAP 2.x
OpenDJ 2.4.x
MS Active Directory W2K3..W2K12
CA eTrust Directory 8.1 and 12.0
Novell eDirectory 8.7.x and 8.8.x
Lotus Domino LDAP R5.x, R6.x and R7.0.x
389/Fedora Directory Server (fairly recent)
iPlanet/SunONE Directory Server 5.x and 6.x
Siemens DirX 6.x
Innosoft Distributed Directory Server (IDDS)
IBM Directory Server 5.1
Apache DS 1.5 and 2.0M7
OpenDS 1.0 and 2.0RC
Isode's M-Vault LDAP/X.500 Directory Server R14
eB2Bcom's ViewDS (formerly View500) 6.0e11
Critical Path InJoin and Directory Server 4.2
Syntegra (historic)
Netscape Directory Server 4.x (historic)

stroeder.com
Recommendation to server developers
Meaningful diagnosticMessage helps ! Don't
write it just to the server's log.
Invite client developers to do interop testing of
more advanced features (test drive licenses)
Fix bugs reported to you ;-)
Add vendorName/vendorVersion to rootDSE
Document proprietary schema and extensions
don't hide experimental schema (.666)

stroeder.com
Recommendation to IT admins
Don't set overrestrictive access control on
– rootDSE
– subschema subentry
– operational attributes

Try to find interop issues and report them to
client and server developers if appropriate
Mantra : Logging helps...

stroeder.com
Access control
Goal : Disable input fields if no write access
Parsing proprietary ACLs / ACIs not an option
Get Effective Rights control :
different variants with the same control OID !
web2ldap uses allowedAttributesEffective
(available in MS AD and slapo-allowed)
Value-based access control is an issue
Rather a permissive write access interpretation
is recommended
stroeder.com
Failed attributes control
The diagnosticMessage is useful but not
machine-readable, user has to read and
correctly interpret it.
How about a response control listing what went
wrong for which attribute?
Would be useful to point the user directly to
input fields with false data.

stroeder.com
Attribute constraints (1)
New schema definition attributeConstraints
(suggested on ietf-ldapext back in 2008)
– REGEX
– VALUES
– LDAPURI
– OPTIONS
– NUMBER <min>..<max>
– MAXBYTELEN / MAXCHARLEN

Would partially directly fit HTML5 browser-side
checking
stroeder.com
Attribute constraints (2)
Attribute type 'jpegPhoto' with restricted size and
limited to a single value:
attributeConstraints
( 0.9.2342.19200300.100.1.60
MAXNUMBER 1
MAXBYTELEN 4000 )
Attribute 'gender' restricted to values in ISO-5801:
attributeConstraints
( 1.3.6.1.4.1.5427.1.389.4.7
VALUES ( '0' $ '1' $ '2' $ '9' ) )
stroeder.com
Attribute constraints (3)
Search URIs
( <attribute type OID>
LDAPURI <search URI> )
Value of attribute o in any org. entry :
ldap:///ou=dc=example,dc=com?o??
(objectClass=organization)
DN of manager's person entry :
ldap:///dc=example,dc=com???
(&(objectClass=inetOrgPerson)
(title=Manager))

stroeder.com
Thanks !
Any questions?
Any suggestions?
Still so crazy to develop advanced clients?
Improve «dead» LDAP together?

Have fun!

stroeder.com

Más contenido relacionado

La actualidad más candente

How AD has been re-engineered to extend to the cloud
How AD has been re-engineered to extend to the cloudHow AD has been re-engineered to extend to the cloud
How AD has been re-engineered to extend to the cloudLDAPCon
 
Securing Your Deployment with MongoDB and Red Hat's Identity Management in Re...
Securing Your Deployment with MongoDB and Red Hat's Identity Management in Re...Securing Your Deployment with MongoDB and Red Hat's Identity Management in Re...
Securing Your Deployment with MongoDB and Red Hat's Identity Management in Re...MongoDB
 
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond SambaSambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond SambaAlexander Bokovoy
 
FreeIPA - Attacking the Active Directory of Linux
FreeIPA - Attacking the Active Directory of LinuxFreeIPA - Attacking the Active Directory of Linux
FreeIPA - Attacking the Active Directory of LinuxJulian Catrambone
 
Update on the OpenDJ project
Update on the OpenDJ projectUpdate on the OpenDJ project
Update on the OpenDJ projectLDAPCon
 
Practical-LDAP-and-Linux
Practical-LDAP-and-LinuxPractical-LDAP-and-Linux
Practical-LDAP-and-LinuxBalaji Ravi
 
aclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHoundaclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHoundDirkjanMollema
 
11g Identity Management - InSync10
11g Identity Management - InSync1011g Identity Management - InSync10
11g Identity Management - InSync10Peter McLarty
 
Give a REST to your LDAP directory services
Give a REST to your LDAP directory servicesGive a REST to your LDAP directory services
Give a REST to your LDAP directory servicesLDAPCon
 
Kerberos, Token and Hadoop
Kerberos, Token and HadoopKerberos, Token and Hadoop
Kerberos, Token and HadoopKai Zheng
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache TikaJukka Zitting
 
Open source identity management 20121106 - apache con eu
Open source identity management   20121106 - apache con euOpen source identity management   20121106 - apache con eu
Open source identity management 20121106 - apache con euFrancesco Chicchiriccò
 
Attack All the Layers: What's Working during Pentests (OWASP NYC)
Attack All the Layers: What's Working during Pentests (OWASP NYC)Attack All the Layers: What's Working during Pentests (OWASP NYC)
Attack All the Layers: What's Working during Pentests (OWASP NYC)Scott Sutherland
 
2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShell
2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShell2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShell
2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShellScott Sutherland
 
Hadoop Security Now and Future
Hadoop Security Now and FutureHadoop Security Now and Future
Hadoop Security Now and Futuretcloudcomputing-tw
 
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]Malin Weiss
 

La actualidad más candente (20)

How AD has been re-engineered to extend to the cloud
How AD has been re-engineered to extend to the cloudHow AD has been re-engineered to extend to the cloud
How AD has been re-engineered to extend to the cloud
 
Securing Your Deployment with MongoDB and Red Hat's Identity Management in Re...
Securing Your Deployment with MongoDB and Red Hat's Identity Management in Re...Securing Your Deployment with MongoDB and Red Hat's Identity Management in Re...
Securing Your Deployment with MongoDB and Red Hat's Identity Management in Re...
 
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond SambaSambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
 
FreeIPA - Attacking the Active Directory of Linux
FreeIPA - Attacking the Active Directory of LinuxFreeIPA - Attacking the Active Directory of Linux
FreeIPA - Attacking the Active Directory of Linux
 
Spring Ldap
Spring LdapSpring Ldap
Spring Ldap
 
Update on the OpenDJ project
Update on the OpenDJ projectUpdate on the OpenDJ project
Update on the OpenDJ project
 
Practical-LDAP-and-Linux
Practical-LDAP-and-LinuxPractical-LDAP-and-Linux
Practical-LDAP-and-Linux
 
aclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHoundaclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHound
 
11g Identity Management - InSync10
11g Identity Management - InSync1011g Identity Management - InSync10
11g Identity Management - InSync10
 
Give a REST to your LDAP directory services
Give a REST to your LDAP directory servicesGive a REST to your LDAP directory services
Give a REST to your LDAP directory services
 
Kerberos, Token and Hadoop
Kerberos, Token and HadoopKerberos, Token and Hadoop
Kerberos, Token and Hadoop
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache Tika
 
Open source identity management 20121106 - apache con eu
Open source identity management   20121106 - apache con euOpen source identity management   20121106 - apache con eu
Open source identity management 20121106 - apache con eu
 
Attack All the Layers: What's Working during Pentests (OWASP NYC)
Attack All the Layers: What's Working during Pentests (OWASP NYC)Attack All the Layers: What's Working during Pentests (OWASP NYC)
Attack All the Layers: What's Working during Pentests (OWASP NYC)
 
2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShell
2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShell2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShell
2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShell
 
Hadoop Security Now and Future
Hadoop Security Now and FutureHadoop Security Now and Future
Hadoop Security Now and Future
 
Ldap introduction (eng)
Ldap introduction (eng)Ldap introduction (eng)
Ldap introduction (eng)
 
Databasecentricapisonthecloudusingplsqlandnodejscon3153oow2016 160922021655
Databasecentricapisonthecloudusingplsqlandnodejscon3153oow2016 160922021655Databasecentricapisonthecloudusingplsqlandnodejscon3153oow2016 160922021655
Databasecentricapisonthecloudusingplsqlandnodejscon3153oow2016 160922021655
 
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
 
Hadoop security
Hadoop securityHadoop security
Hadoop security
 

Similar a Do The Right Thing! How LDAP servers should help LDAP clients

Server 2008 r2 ppt
Server 2008 r2 pptServer 2008 r2 ppt
Server 2008 r2 pptRaj Solanki
 
Docker interview Questions-3.pdf
Docker interview Questions-3.pdfDocker interview Questions-3.pdf
Docker interview Questions-3.pdfYogeshwaran R
 
The way from DB-driven development to DDD
The way from DB-driven development to DDDThe way from DB-driven development to DDD
The way from DB-driven development to DDDProvectus
 
Under the Hood 11g Identity Management
Under the Hood  11g Identity ManagementUnder the Hood  11g Identity Management
Under the Hood 11g Identity ManagementInSync Conference
 
High Performance Mysql
High Performance MysqlHigh Performance Mysql
High Performance Mysqlliufabin 66688
 
Monitoring active-directory
Monitoring active-directoryMonitoring active-directory
Monitoring active-directoryPrince JabaKumar
 
Data Handning with Sqlite for Android
Data Handning with Sqlite for AndroidData Handning with Sqlite for Android
Data Handning with Sqlite for AndroidJakir Hossain
 
Understanding Active Directory Enumeration
Understanding Active Directory EnumerationUnderstanding Active Directory Enumeration
Understanding Active Directory EnumerationDaniel López Jiménez
 
Complete open source IAM solution
Complete open source IAM solutionComplete open source IAM solution
Complete open source IAM solutionRadovan Semancik
 
MySQL HA Alternatives 2010
MySQL  HA  Alternatives 2010MySQL  HA  Alternatives 2010
MySQL HA Alternatives 2010Kris Buytaert
 
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010Bhupesh Bansal
 
Hadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedInHadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedInHadoop User Group
 
Sql server performance tuning and optimization
Sql server performance tuning and optimizationSql server performance tuning and optimization
Sql server performance tuning and optimizationManish Rawat
 
Front Range PHP NoSQL Databases
Front Range PHP NoSQL DatabasesFront Range PHP NoSQL Databases
Front Range PHP NoSQL DatabasesJon Meredith
 
Get more than a cache back! The Microsoft Azure Redis Cache (NDC Oslo)
Get more than a cache back! The Microsoft Azure Redis Cache (NDC Oslo)Get more than a cache back! The Microsoft Azure Redis Cache (NDC Oslo)
Get more than a cache back! The Microsoft Azure Redis Cache (NDC Oslo)Maarten Balliauw
 
The Power of Relationships in Your Big Data
The Power of Relationships in Your Big DataThe Power of Relationships in Your Big Data
The Power of Relationships in Your Big DataPaulo Fagundes
 

Similar a Do The Right Thing! How LDAP servers should help LDAP clients (20)

Server 2008 r2 ppt
Server 2008 r2 pptServer 2008 r2 ppt
Server 2008 r2 ppt
 
Docker interview Questions-3.pdf
Docker interview Questions-3.pdfDocker interview Questions-3.pdf
Docker interview Questions-3.pdf
 
The way from DB-driven development to DDD
The way from DB-driven development to DDDThe way from DB-driven development to DDD
The way from DB-driven development to DDD
 
Under the Hood 11g Identity Management
Under the Hood  11g Identity ManagementUnder the Hood  11g Identity Management
Under the Hood 11g Identity Management
 
Intro to Databases
Intro to DatabasesIntro to Databases
Intro to Databases
 
High Performance Mysql
High Performance MysqlHigh Performance Mysql
High Performance Mysql
 
Monitoring active-directory
Monitoring active-directoryMonitoring active-directory
Monitoring active-directory
 
Monitoring active-directory
Monitoring active-directoryMonitoring active-directory
Monitoring active-directory
 
Data Handning with Sqlite for Android
Data Handning with Sqlite for AndroidData Handning with Sqlite for Android
Data Handning with Sqlite for Android
 
Understanding Active Directory Enumeration
Understanding Active Directory EnumerationUnderstanding Active Directory Enumeration
Understanding Active Directory Enumeration
 
Complete open source IAM solution
Complete open source IAM solutionComplete open source IAM solution
Complete open source IAM solution
 
MySQL HA Alternatives 2010
MySQL  HA  Alternatives 2010MySQL  HA  Alternatives 2010
MySQL HA Alternatives 2010
 
Software Development with PHP & Laravel
Software Development  with PHP & LaravelSoftware Development  with PHP & Laravel
Software Development with PHP & Laravel
 
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
 
Hadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedInHadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedIn
 
L11 Application Architecture
L11 Application ArchitectureL11 Application Architecture
L11 Application Architecture
 
Sql server performance tuning and optimization
Sql server performance tuning and optimizationSql server performance tuning and optimization
Sql server performance tuning and optimization
 
Front Range PHP NoSQL Databases
Front Range PHP NoSQL DatabasesFront Range PHP NoSQL Databases
Front Range PHP NoSQL Databases
 
Get more than a cache back! The Microsoft Azure Redis Cache (NDC Oslo)
Get more than a cache back! The Microsoft Azure Redis Cache (NDC Oslo)Get more than a cache back! The Microsoft Azure Redis Cache (NDC Oslo)
Get more than a cache back! The Microsoft Azure Redis Cache (NDC Oslo)
 
The Power of Relationships in Your Big Data
The Power of Relationships in Your Big DataThe Power of Relationships in Your Big Data
The Power of Relationships in Your Big Data
 

Más de LDAPCon

Benchmarks on LDAP directories
Benchmarks on LDAP directoriesBenchmarks on LDAP directories
Benchmarks on LDAP directoriesLDAPCon
 
Synchronize AD and OpenLDAP with LSC
Synchronize AD and OpenLDAP with LSCSynchronize AD and OpenLDAP with LSC
Synchronize AD and OpenLDAP with LSCLDAPCon
 
What's New in OpenLDAP
What's New in OpenLDAPWhat's New in OpenLDAP
What's New in OpenLDAPLDAPCon
 
What makes a LDAP server running fast ? An bit of insight about the various b...
What makes a LDAP server running fast ? An bit of insight about the various b...What makes a LDAP server running fast ? An bit of insight about the various b...
What makes a LDAP server running fast ? An bit of insight about the various b...LDAPCon
 
Manage password policy in OpenLDAP
Manage password policy in OpenLDAPManage password policy in OpenLDAP
Manage password policy in OpenLDAPLDAPCon
 
OpenLDAP configuration brought to Apache Directory Studio
OpenLDAP configuration brought to Apache Directory StudioOpenLDAP configuration brought to Apache Directory Studio
OpenLDAP configuration brought to Apache Directory StudioLDAPCon
 
Making Research "Social" using LDAP
Making Research "Social" using LDAPMaking Research "Social" using LDAP
Making Research "Social" using LDAPLDAPCon
 
eSCIMo - User Provisioning over Web
eSCIMo - User Provisioning over WebeSCIMo - User Provisioning over Web
eSCIMo - User Provisioning over WebLDAPCon
 
IAM to IRM: The Shift to Identity Relationship Management
IAM to IRM: The Shift to Identity Relationship ManagementIAM to IRM: The Shift to Identity Relationship Management
IAM to IRM: The Shift to Identity Relationship ManagementLDAPCon
 

Más de LDAPCon (9)

Benchmarks on LDAP directories
Benchmarks on LDAP directoriesBenchmarks on LDAP directories
Benchmarks on LDAP directories
 
Synchronize AD and OpenLDAP with LSC
Synchronize AD and OpenLDAP with LSCSynchronize AD and OpenLDAP with LSC
Synchronize AD and OpenLDAP with LSC
 
What's New in OpenLDAP
What's New in OpenLDAPWhat's New in OpenLDAP
What's New in OpenLDAP
 
What makes a LDAP server running fast ? An bit of insight about the various b...
What makes a LDAP server running fast ? An bit of insight about the various b...What makes a LDAP server running fast ? An bit of insight about the various b...
What makes a LDAP server running fast ? An bit of insight about the various b...
 
Manage password policy in OpenLDAP
Manage password policy in OpenLDAPManage password policy in OpenLDAP
Manage password policy in OpenLDAP
 
OpenLDAP configuration brought to Apache Directory Studio
OpenLDAP configuration brought to Apache Directory StudioOpenLDAP configuration brought to Apache Directory Studio
OpenLDAP configuration brought to Apache Directory Studio
 
Making Research "Social" using LDAP
Making Research "Social" using LDAPMaking Research "Social" using LDAP
Making Research "Social" using LDAP
 
eSCIMo - User Provisioning over Web
eSCIMo - User Provisioning over WebeSCIMo - User Provisioning over Web
eSCIMo - User Provisioning over Web
 
IAM to IRM: The Shift to Identity Relationship Management
IAM to IRM: The Shift to Identity Relationship ManagementIAM to IRM: The Shift to Identity Relationship Management
IAM to IRM: The Shift to Identity Relationship Management
 

Último

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 

Último (20)

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 

Do The Right Thing! How LDAP servers should help LDAP clients

  • 2. Who? Michael Ströder <michael@stroeder.com> Freelancer : LDAP and PKI consulting Active open source projects: – http://web2ldap.de – http://python-ldap.org Not a UI expert Old-fashioned Concerned about insecurity by complexity stroeder.com
  • 3. Why? Kurt Zeilenga wrote: > It might be interesting to discuss how/where web2ldap is > able to support its users using vendor-inspecific codes, > where you need to use vendor-specific codes, where LDAP's > discovery mechanisms help, where they don't, what you do > when they don't, etc. How to guide human users using as much server-side information as possible ? How much client-side knowledge is needed? stroeder.com
  • 4. What? Guiding vs. enforcing, notes about users Introduction to available server information Example use-cases with web2ldap using server information Recommendations Open issues to be solved stroeder.com
  • 5. Guiding... (1) Mantra: Guiding is not enforcing! Avoid user frustration, reducing false attempts to reach use-case goal in normal situation Try to use server-side extensions to improve client behaviour without bothering user Don't stop a skilled user to do something unusual stroeder.com
  • 6. Guiding... (2) Meaningful input forms: – searchable naming contexts (rootDSE) – available attributes and editable input values (subschema, access control, constraints) – Information about affected LDAP entries (count) Gracefully handle user's input values (normalize) Optional use of : DIT content/structure rules, name forms, LDAPv3 ext. controls and ext. operations stroeder.com
  • 7. Enforcing... (1) Recommendation: Let only the server enforce... – schema – access control – constraints (values, uniqueness, references) Avoid client enforcing of schema and constraints because users could circumvent rules => data integrity risks Avoid client-side access control because users could circumvent rules => security risks stroeder.com
  • 8. Enforcing... (2) Client-side access control requires powerful proxy user accounts which in real life gets (ab)used later for other purposes (yuck!) More meaningful logging possible by using end user's identity for LDAP operations Server can check constraints within one transaction stroeder.com
  • 9. Enforcing... (3) Things to enforce at client side based on client configuration or user's input: – StartTLS – bind method Local security configuration in web2ldap is gateway security policy stroeder.com
  • 10. Users... Some personal observations: – Users are not dumb – Users are pretty good in ignoring unneeded things – Users appreciate additional information if something went wrong and will report it to you – Secretary with usual office skills provides better data than IT guy with technical LDAP skills – Speaking with end users helps personal observations are the opposite of mainstream UI opinions of IT guys... stroeder.com
  • 11. Server-side information (1) LDAP result information (often overlooked) – result code – diagnostic message rootDSE (obvious) – naming contexts, default search root – features (extended controls/operations) – vendor-specific information (server roles etc.) subschema subentry (most promising) stroeder.com
  • 12. Server-side information (2) extended controls extended operations number of entries/values (entry count) operational attributes (modifyTimestamp, numSubordinates etc.) special count extensions audit / change log databases (for restoring?) server-side access control and constraints stroeder.com
  • 13. Rather not generic /web2ldap/passwd Set password with various methods (RFC 3062 ext.op., client-side hashed, MS AD, Samba3 hashes) /web2ldap/groupadm Add/remove entry to/from groups /web2ldap/dds Refresh operation for dynamic entries (implemented for Dieter) Still subschema used almost everywhere. stroeder.com
  • 14. Subschema subentry (1) LDAP syntax matching rule SYNTAX EQUALITY SUBSTR ORDERING SYNTAX attribute type MUST MAY NOT APPLIES matching rule use MUST MAY SUP same OID same OID structural object class SUP abstract object class SUP SUP auxiliary object class MUST AUX DIT structure rule DIT content rule OC FORM Name form SUP stroeder.com
  • 15. Subschema subentry (2) Query attribute subschemaSubentry in current entry Read and parse the referenced subschema subentry Fall-back needed due to access restrictions Each part of the DIT could have separate subschema (rarely in practice) Not unusual to have big subschema subentry ~200..400kB => caching needed! stroeder.com
  • 16. Demos Any special interests ? stroeder.com
  • 17. Diffing with matching rules Goal: Fine-grained delete-by-value to provoke collisions in case of concurrent write access (e.g. two admins working at the same ticket) web2ldap uses EQUALITY matching rule information to determine whether it's possible to delete a certain attribute value Matching rules are inherited ! It's not sufficient to only look at the AttributeTypeDescription... stroeder.com
  • 18. DIT structure rules & name forms Enforce tree structure, web2ldap guides Ideal if server sets governingStructureRule If not you have to find nearest “subschema administrative point” Real X.500 servers might provide attribute administrativeRole with a value of subschemaAdminSpecificArea => rather exotic in the pure LDAP field => fall-back to best matching naming context Thanks to S. Legg for this private lesson :-) stroeder.com
  • 19. Interop issues (1) Domino/LDAP tested up to 7.x (not sure whether fixed in 8.x): – single null-byte in attribute namingContexts – returns diagnosticMessage in ISO-8859-1 – many attributes not found in subschema web2ldap has work-arounds otherwise users would blame web2ldap not to work with Domino/LDAP BTW : It was funny to see Domino/LDAP 5.x crash because of tab character sent in a password ;-) (fixed) stroeder.com
  • 20. Interop issues (2) Assertion control sent with modify request to detect concurrent write access Leads to interop issues with slapo-constraint Had to disable this completely forever even if it gets fixed because vendor version not available in rootDSE Users would blame web2ldap not to work with OpenLDAP stroeder.com
  • 21. Interop issues (3) Basically it's good when LDAP server enforces access control - also on use of extended controls But overzealous checks are not good ! OpenDJ disallowed post read entry control even in case the user was allowed to read entry At least a non-critical controls should not result in error code being returned Users would blame web2ldap not to work with OpenDJ stroeder.com
  • 22. Interop issues (4) ApacheDS returned invalid ASN.1 encoding for password policy response control => raising ASN.1 exception was disabled in python-ldap in case of invalid but non-critical response controls Otherwise users would blame web2ldap not to work with ApacheDS stroeder.com
  • 23. Interop issues (5) OpenLDAP returned invalid ASN.1 encoding for read entry response control Immediately fixed by Pierangelo within hours But decoding work-around added to web2ldap Otherwise users would blame web2ldap not to work with OpenLDAP or I'd have to disable the feature forever. stroeder.com
  • 24. Interop issues (6) non-ASCII chars in MS AD's are a bad idea SASL/DIGEST-MD5 does not work even though you can see UTF-8 mentioned in SASL messages impossible to work around this I don't expect this to be ever fixed because of AD's own backward compability commitment stroeder.com
  • 25. Recommendation to client developers Don't implement an advance LDAP client, it's waste of your spare time Prefer RAD to meet customer's requirements Still crazy enough? Still interested in implementing advanced LDAP features ? Mantra : testing, testing, testing, testing, .... Otherwise people will complain about your client and will prefer dumb LDAP clients stroeder.com
  • 26. Interop testing with servers OpenLDAP 2.x OpenDJ 2.4.x MS Active Directory W2K3..W2K12 CA eTrust Directory 8.1 and 12.0 Novell eDirectory 8.7.x and 8.8.x Lotus Domino LDAP R5.x, R6.x and R7.0.x 389/Fedora Directory Server (fairly recent) iPlanet/SunONE Directory Server 5.x and 6.x Siemens DirX 6.x Innosoft Distributed Directory Server (IDDS) IBM Directory Server 5.1 Apache DS 1.5 and 2.0M7 OpenDS 1.0 and 2.0RC Isode's M-Vault LDAP/X.500 Directory Server R14 eB2Bcom's ViewDS (formerly View500) 6.0e11 Critical Path InJoin and Directory Server 4.2 Syntegra (historic) Netscape Directory Server 4.x (historic) stroeder.com
  • 27. Recommendation to server developers Meaningful diagnosticMessage helps ! Don't write it just to the server's log. Invite client developers to do interop testing of more advanced features (test drive licenses) Fix bugs reported to you ;-) Add vendorName/vendorVersion to rootDSE Document proprietary schema and extensions don't hide experimental schema (.666) stroeder.com
  • 28. Recommendation to IT admins Don't set overrestrictive access control on – rootDSE – subschema subentry – operational attributes Try to find interop issues and report them to client and server developers if appropriate Mantra : Logging helps... stroeder.com
  • 29. Access control Goal : Disable input fields if no write access Parsing proprietary ACLs / ACIs not an option Get Effective Rights control : different variants with the same control OID ! web2ldap uses allowedAttributesEffective (available in MS AD and slapo-allowed) Value-based access control is an issue Rather a permissive write access interpretation is recommended stroeder.com
  • 30. Failed attributes control The diagnosticMessage is useful but not machine-readable, user has to read and correctly interpret it. How about a response control listing what went wrong for which attribute? Would be useful to point the user directly to input fields with false data. stroeder.com
  • 31. Attribute constraints (1) New schema definition attributeConstraints (suggested on ietf-ldapext back in 2008) – REGEX – VALUES – LDAPURI – OPTIONS – NUMBER <min>..<max> – MAXBYTELEN / MAXCHARLEN Would partially directly fit HTML5 browser-side checking stroeder.com
  • 32. Attribute constraints (2) Attribute type 'jpegPhoto' with restricted size and limited to a single value: attributeConstraints ( 0.9.2342.19200300.100.1.60 MAXNUMBER 1 MAXBYTELEN 4000 ) Attribute 'gender' restricted to values in ISO-5801: attributeConstraints ( 1.3.6.1.4.1.5427.1.389.4.7 VALUES ( '0' $ '1' $ '2' $ '9' ) ) stroeder.com
  • 33. Attribute constraints (3) Search URIs ( <attribute type OID> LDAPURI <search URI> ) Value of attribute o in any org. entry : ldap:///ou=dc=example,dc=com?o?? (objectClass=organization) DN of manager's person entry : ldap:///dc=example,dc=com??? (&(objectClass=inetOrgPerson) (title=Manager)) stroeder.com
  • 34. Thanks ! Any questions? Any suggestions? Still so crazy to develop advanced clients? Improve «dead» LDAP together? Have fun! stroeder.com