Nie zezwalaj na globalne anonimowe wiązanie za pomocą cn = config


9

Za pomocą slapd.conf można globalnie wyłączyć anonimowe wiązanie i wymagać uwierzytelnienia za pomocą następujących dyrektyw statycznych:

disallow bind_anon
require authc

Jak mogę osiągnąć te same ustawienia globalne, ale używając nowej metody konfiguracji na żywo cn = config?

Odpowiedzi:


5

Nie to, że listy ACL kwantów są złe, ale odpowiedź na twoje pytanie:

ldapmodify
dn: cn = config
typ zmiany: modyfikuj
dodaj: olcDisallows
olcDisallows: bind_anon
-

dn: olcDatabase = {- 1} frontend, cn = config
typ zmiany: modyfikuj
dodaj: olcRequires
olcRequires: authc

Należy pamiętać, że ldapmodify jest wrażliwy na (końcowe) spacje, więc wklejanie prostej kopii nie będzie działać (i może również nie uwierzytelniać poprawnie). Ponadto używany dn będzie wymagał dostępu do zapisu do bazy danych cn = config.


11

Wariacja na ten sam temat, wypróbowałem to, działa: wskazówki bezpieczeństwa LDAP w SysadminTalk

Podsumowanie:

1) Utwórz plik, nazwijmy go disable_anon_frontend.ldifnastępującą zawartością:

dn: olcDatabase={-1}frontend,cn=config
add: olcRequires
olcRequires: authc

2) Utwórz kolejny plik o nazwie disable_anon_backend.ldifo następującej treści:

dn: olcDatabase={1}hdb,cn=config
add: olcRequires
olcRequires: authc

3) Następnie na serwerze zmodyfikuj LDAP, wydając następujące polecenia:

sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f disable_anon_frontend.ldif
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f disable_anon_backend.ldif

4) Sprawdź, wykonując następujące zapytanie anonowe: ldapsearch -x -LLL -H ldap:/// -b dc=example,dc=domain,dc=com dn(użyj swoich dc=...ustawień, jeśli dotyczy).

Jeśli zobaczysz komunikat o błędzie poniżej, oznacza to, że anonimowy dostęp został pomyślnie wyłączony:

Server is unwilling to perform (53)
Additional information: authentication required

Powodzenia!


2
Witaj w Server Fault! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
HopelessN00b

2
Dzięki, masz absolutną rację, zredagowałem swoją odpowiedź zgodnie z zaleceniami.
Laryx Decidua

1

Nie testowałem, ale próbuję czegoś takiego:

dn: olcDatabase={1}hdb,cn=config
add: olcAccess
olcAccess: to attrs=userPassword 
    by dn="cn=admin,dc=example,dc=com" write 
    by self write 
    by * none
olcAccess: to dn.base="" 
    by users read 
    by * none
olcAccess: to * 
    by dn="cn=admin,dc=example,dc=com" write 
    by * none

Dzięki, właśnie tak teraz to robię dla poszczególnych baz danych. Moje pytanie dotyczyło jednak tego, jak to zrobić na całym świecie.
Michael P,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.