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

Списки контроля доступа LDAP с доступом только к файлам ldapmodify и .ldif

Я хочу изменить настройки, мой новый сервер LDAP позволяет только пользователям сервера читать записи, а не анонимно. В настоящее время мой olcAccess выглядит так:

olcAccess: {0} to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=example,dc=com" write by * none
olcAccess: {1} to * by self write by dn="cn=admin,dc=example,dc=com" write by * read

Пытался изменить вот так:

olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=example,dc=com" write by * none
olcAccess: {1} to * by self write by dn="cn=admin,dc=exampme,dc=com" write by users read

Но это вообще не дает мне доступа. Может ли кто-нибудь помочь мне в этом?

Спасибо

ОБНОВЛЕНИЕ: это журнал, прочитанный после изменений, упомянутых userxxx

Sep 30 10:47:21 j16354 slapd[11805]: conn=1437 fd=28 ACCEPT from IP=87.149.169.6:64121     (IP=0.0.0.0:389)
Sep 30 10:47:21 j16354 slapd[11805]: conn=1437 op=0 do_bind: invalid dn (pbrechler)
Sep 30 10:47:21 j16354 slapd[11805]: conn=1437 op=0 RESULT tag=97 err=34 text=invalid DN
Sep 30 10:47:21 j16354 slapd[11805]: conn=1437 op=1 UNBIND
Sep 30 10:47:21 j16354 slapd[11805]: conn=1437 fd=28 closed
Sep 30 10:47:21 j16354 slapd[11805]: conn=1438 fd=28 ACCEPT from IP=87.149.169.6:64122     (IP=0.0.0.0:389)
Sep 30 10:47:21 j16354 slapd[11805]: conn=1438 op=0 do_bind: invalid dn (pbrechler)
Sep 30 10:47:21 j16354 slapd[11805]: conn=1438 op=0 RESULT tag=97 err=34 text=invalid DN
Sep 30 10:47:21 j16354 slapd[11805]: conn=1438 op=1 UNBIND
Sep 30 10:47:21 j16354 slapd[11805]: conn=1438 fd=28 closed

pbrechler должен быть действующим пользователем, но не имеет системного пользователя (он нам не нужен) администратор также не работает

  1. Элемент списка

olcAccess: {0} to attrs = userPassword, shadowLastChange by self write by anonymous auth by dn = "cn = admin, dc = example, dc = com" записать * none
olcAccess: {1} для attrs = uid, uidNumber, gidNumber от dn = "cn = admin, dc = example, dc = com" запись с помощью * чтения
olcAccess: {2} в * путем самостоятельной записи dn = "cn = admin, dc = example, dc = com" запись пользователями, прочитанными анонимной аутентификацией

olc{1} ... by * read вместо этого может быть by * auth зависит от конфигурации pam_ldap и как / если клиентские машины (а не пользователи) аутентифицируют себя.

Изменить как ответ:

Действительный DNS выглядит как uid=username,ou=users,dc=sub,dc=domain,dc=tld.
username не является допустимым синтаксисом dn и никогда не был.
olcAccess не может этого изменить.
(SASL / olcAuthzRegexp может делать всевозможные интересные вещи, однако не было предоставлено достаточно подробностей, чтобы узнать, использует ли система SASL вообще.)

Если этот компьютер использует ldap только для общения с самим собой, вы можете ограничить его локальным хостом (или сокетами, также известными как ldapi, если ваше клиентское программное обеспечение это поддерживает). правила именования dn по-прежнему применяются.

Кроме того, если dn = "cn = admin, dc = example, dc = com" определен как ваш rootdn для базы данных, нет необходимости указывать его в olcAccess этой базы данных. У DNS всегда есть доступ на запись ко всем attrs в базе данных, для которой он rootdn.

Попробуй это:

access to attrs=userPassword,shadowLastChange 
    by self write 
    by anonymous auth 
    by dn="cn=admin,dc=example,dc=com" write 
    by users read
    by * none
access to * 
    by self write 
    by dn="cn=admin,dc=example,dc=com" write 
    by * read

Но вы можете рассмотреть 2 угрозы безопасности: первая - это access to attrs=userPassword,shadowLastChange by users read означает, что пользователи могут читать теневой пароль и использовать инструменты для взлома. Второй access to * by self write, поэтому пользователи могут изменить uidNumber и / или gidNumber to становится root.

Поэтому я предлагаю следующий ACL:

access to attrs=userPassword,shadowLastChange 
    by self write 
    by anonymous auth 
    by dn="cn=admin,dc=example,dc=com" write 
    by users none
access to * 
    by dn="cn=admin,dc=example,dc=com" write 
    by * read