Назад | Перейти на главную страницу

Как защитить LDAP

Не уверен, принадлежит ли это больше к serverfault или нет ...

ЗАДНИЙ ПЛАН:

Я использую openldap и pam / nss / ldap для аутентификации на моем сервере (веб-почта и т. Д.).

Мои файлы, которые нормально работают:

/etc/openldap/slapd.conf:

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
allow bind_v2
pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd.args
loglevel 0

access to attrs=userPassword,shadowLastChange
    by dn="cn=Admin,dc=MYDOMAIN,dc=com" write
    by anonymous auth
    by self write
    by * none

access to *
    by dn="cn=Admin,dc=MYDOMAIN,dc=com" write
    by * read

database        bdb
suffix dc=MYDOMAIN,dc=com
rootdn cn=Manager,dc=MYDOMAIN,dc=com

directory       /var/lib/ldap
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

Но когда я меняю доступ к:

access to *
    by self write
    by users read
    by anonymous auth

access to attrs=userPassword
  by self write
  by anonymous auth
  by * none

Я больше не могу войти в систему. Как я могу написать это, чтобы я мог входить в систему, но чтобы все в мире не читали и записывали?

Я обнаружил, что, по крайней мере, для samba на debian вы должны предоставить * доступ для чтения к нескольким атрибутам в учетных записях для входа:

access to attrs=userPassword
    by anonymous auth
    by * none

access to dn.subtree="ou=People,dc=MYDOMAIN,dc=com"
    attrs=dc,cn,uid,gecos,entry
    by * read

access to *
    by dn="cn=admin,dc=MYDOMAIN,dc=com" write
    by peername.ip=127.0.0.1 read
    by * none

dn.subtree = "ou = ..." добавляет дополнительную безопасность, так что вы открываете анониму только то, что действительно неизбежно. Это означает, что анонимный пользователь не может искать / просматривать это поддерево, кстати, он / она может только «угадывать» правильный dc, cn, независимо от того, что нужно вашему приложению / услуге.

By peername.ip = 127 ... следует избегать, если вы создадите все приложения / службы, которые используют вход в систему с учетной записью администратора, или если вам нужен доступ только для чтения для своих приложений, вы можете сделать для этого специальный DNS, вы можете затем пропустите строфу peername.ip.

Я думаю, если вы это сделаете:

access to attrs=userPassword,shadowLastChange
    by dn="cn=Admin,dc=MYDOMAIN,dc=com" write
    by anonymous auth
    by self write
    by * none

access to *
    by dn="cn=Admin,dc=MYDOMAIN,dc=com" write
    by self write
    by anonymous auth
    by users read
    by * none

Вы получите то, что хотите.

Ваша проблема может быть в порядке. Похоже, вы поместили общую запись вверху, а не внизу, где она и должна быть.

Кроме того, если вас интересует безопасность, вы захотите использовать TLS или SSL для защиты канала связи.