I'm working on learning & setting up ACLs. My goal is to /not/ have anything set by default, deny all, and step-by-step allow each required access.
In slapd.conf, I've defined security/ACLs as: security ssf=256 update_ssf=256 tls=256 update_tls=256 simple_bind=256 ... access to * by tls_ssf=256 peername.ip=127.0.0.1 break by tls_ssf=256 peername.ip=10.0.1.0%255.255.255.0 break access to dn.exact="uid=system,ou=System,dc=domain,dc=com" attrs=userPassword by ssf=256 self =x by * none access to * by * none When I test with: ldapsearch -LLL -ZZZ -x -W -D 'uid=system,ou=System,dc=domain,dc=com' -H ldap://domain.com:389 -b "" -s base '(objectclass=*)' + Enter LDAP Password: I get: dn: supportedSASLMechanisms: GSSAPI as expected. In logs I see: Sep 3 08:33:06 test slapd[5727]: conn=1 fd=11 ACCEPT from IP=10.0.1.16:37316 (IP=10.0.1.16:389) Sep 3 08:33:06 test slapd[5727]: conn=1 op=0 EXT oid=1.3.6.1.4.1.1466.20037 Sep 3 08:33:06 test slapd[5727]: conn=1 op=0 STARTTLS Sep 3 08:33:06 test slapd[5727]: conn=1 op=0 RESULT oid= err=0 text= Sep 3 08:33:06 test slapd[5727]: conn=1 fd=11 TLS established tls_ssf=256 ssf=256 Sep 3 08:33:09 test slapd[5727]: conn=1 op=1 BIND dn="uid=system,ou=System,dc=domain,dc=com" method=128 Sep 3 08:33:09 test slapd[5727]: => access_allowed: auth access to "uid=system,ou=System,dc=domain,dc=com" "userPassword" requested Sep 3 08:33:09 test slapd[5727]: => acl_get: [1] attr userPassword Sep 3 08:33:09 test slapd[5727]: => slap_access_allowed: result not in cache (userPassword) Sep 3 08:33:09 test slapd[5727]: => acl_mask: access to entry "uid=system,ou=System,dc=domain,dc=com", attr "userPassword" requested Sep 3 08:33:09 test slapd[5727]: => acl_mask: to value by "", (=0) Sep 3 08:33:09 test slapd[5727]: <= check a_peername_path: 127.0.0.1 Sep 3 08:33:09 test slapd[5727]: <= check a_peername_path: 10.0.1.0%255.255.255.0 Sep 3 08:33:09 test slapd[5727]: <= check a_authz.sai_tls_ssf: ACL 256 > OP 256 Sep 3 08:33:09 test slapd[5727]: <= acl_mask: [2] applying +0 (break) Sep 3 08:33:09 test slapd[5727]: <= acl_mask: [2] mask: =0 Sep 3 08:33:09 test slapd[5727]: => dn: [2] uid=system,ou=system,dc=domain,dc=com Sep 3 08:33:09 test slapd[5727]: => acl_get: [2] matched Sep 3 08:33:09 test slapd[5727]: => acl_get: [2] attr userPassword Sep 3 08:33:09 test slapd[5727]: => slap_access_allowed: result not in cache (userPassword) Sep 3 08:33:09 test slapd[5727]: => acl_mask: access to entry "uid=system,ou=System,dc=domain,dc=com", attr "userPassword" requested Sep 3 08:33:09 test slapd[5727]: => acl_mask: to value by "", (=0) Sep 3 08:33:09 test slapd[5727]: <= check a_dn_pat: anonymous Sep 3 08:33:09 test slapd[5727]: <= check a_authz.sai_ssf: ACL 256 > OP 256 Sep 3 08:33:09 test slapd[5727]: <= acl_mask: [1] applying =x (stop) Sep 3 08:33:09 test slapd[5727]: <= acl_mask: [1] mask: =x Sep 3 08:33:09 test slapd[5727]: => slap_access_allowed: auth access granted by =x Sep 3 08:33:09 test slapd[5727]: => access_allowed: auth access granted by =x Sep 3 08:33:09 test slapd[5727]: conn=1 op=1 BIND dn="uid=system,ou=System,dc=domain,dc=com" mech=SIMPLE ssf=0 Sep 3 08:33:09 test slapd[5727]: conn=1 op=1 RESULT tag=97 err=0 text= Sep 3 08:33:09 test slapd[5727]: conn=1 op=2 SRCH base="" scope=0 deref=0 filter="(objectClass=*)" Sep 3 08:33:09 test slapd[5727]: conn=1 op=2 SRCH attr=supportedSASLMechanisms Sep 3 08:33:09 test slapd[5727]: => access_allowed: search access to "" "objectClass" requested Sep 3 08:33:09 test slapd[5727]: => slap_access_allowed: backend default search access granted to "uid=system,ou=System,dc=domain,dc=com" Sep 3 08:33:09 test slapd[5727]: => access_allowed: search access granted by read(=rscxd) Sep 3 08:33:09 test slapd[5727]: => access_allowed: read access to "" "entry" requested Sep 3 08:33:09 test slapd[5727]: => slap_access_allowed: backend default read access granted to "uid=system,ou=System,dc=domain,dc=com" Sep 3 08:33:09 test slapd[5727]: => access_allowed: read access granted by read(=rscxd) Sep 3 08:33:09 test slapd[5727]: => access_allowed: read access to "" "supportedSASLMechanisms" requested Sep 3 08:33:09 test slapd[5727]: => slap_access_allowed: backend default read access granted to "uid=system,ou=System,dc=domain,dc=com" Sep 3 08:33:09 test slapd[5727]: => access_allowed: read access granted by read(=rscxd) Sep 3 08:33:09 test slapd[5727]: conn=1 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text= Sep 3 08:33:09 test slapd[5727]: conn=1 op=3 UNBIND Sep 3 08:33:09 test slapd[5727]: conn=1 fd=11 closed As expected, I see the "auth" access greanted per my ACL, Sep 3 08:33:09 test slapd[5727]: => slap_access_allowed: auth access granted by =x Sep 3 08:33:09 test slapd[5727]: => access_allowed: auth access granted by =x But I also see "default" access being granted: Sep 3 08:33:09 test slapd[5727]: => slap_access_allowed: backend default search access granted to "uid=system,ou=System,dc=domain,dc=com" Sep 3 08:33:09 test slapd[5727]: => access_allowed: search access granted by read(=rscxd) Sep 3 08:33:09 test slapd[5727]: => access_allowed: read access to "" "entry" requested Sep 3 08:33:09 test slapd[5727]: => slap_access_allowed: backend default read access granted to "uid=system,ou=System,dc=domain,dc=com" I'd expect that the "by * none" clauses should prevent default anything. >From 'man slapd.access' I learn: "If no access controls are present, the default policy allows anyone and everyone to read anything but restricts updates to rootdn. (e.g., "access to * by * read"). The rootdn can always read and write EVERYTHING!" But I clearly have defined access controls. Why am I seeing any default access granted, and what ACL needs to be specified to prevent it? Thanks. Ric -- Click here for great computer networking solutions! http://tagline.hushmail.com/fc/Ioyw6h4fM6mP9SLHp99dANqh2C08pocAnYQkctPkIVUwTC4e7SrQ42/