Sign inSign up

edtasixm06/ldap22

By edtasixm06

•Updated almost 4 years ago

@edt ASIX M06-ASO Escola del treball de barcelona. Repositori d'imatges Docker de LDAP.

Image
0

1.9K

edtasixm06/ldap22 repository overview

⁠LDAP server

⁠@edt ASIX M06-ASO Curs 2022-2023

Podeu trobar les imatges docker al Dockehub de edtasixm06⁠

Podeu trobar la documentació del mòdul a ASIX-M06⁠

ASIX M06-ASO Escola del treball de barcelona

⁠Ldap servers:
  • edtasixm06/ldap22:base Server bàsic ldap, amb base de dades edt.org.

  • edtasixm06/ldap22:editat Servidor edt.org amb els usuaris identificats per uid, usuaris típics més usuaris user01-user10, passwd de manager xifrat i activant la base de dades cn=config.

  • edtasixm06/ldap22:config Exemples de configuració i configuració dinàmica del servidor.

  • acls

  • edtasixm06/ldap22:schema Servidor LDAP amb la base de dades edt.org S'ha fet el següent:

    • futbolistaA.schema Derivat de inetorgPerson, structural, injectat dades de dades-futbolA.ldif.

    • futbolistaB.schema Structural derivat de TOP.

    • futbolistaC.schema Auxiliary.

  • edtasixm06/ldap22:practica Imatge de la pràctica de ldap schema. Feta per els alumnes marlene i licas.

  • edtasixm06/ldap22:grups Imatge final del servei ldap amb usuaris i grups. Els usuaris són identificats pel uid per exemple uid=pere,ou=usuaris,dc=edt,dc=org. S'han afegit grups dins de una ou=grups que conté els grups, i s'hi han posat els usuaris tot validant la coherència de les dades. També s'ha repassat que els homes dels usuaris siguin vàlids.

    dn: ou=grups,dc=edt,dc=org
    ou: grups
    description: Container per a grups del sistema linux
    objectclass: organizationalunit
    
    dn: cn=professors,ou=grups,dc=edt,dc=org
    objectclass: posixGroup
    cn: professors
    gidNumber: 601
    description: Grup de professors
    memberUid: pau
    memberUid: pere
    memberUid: jordi
    
⁠Desplegament

utilitzar la imatge latest (és la grups) i es pot desplegar el phpldapadmin

docker build -t edtasixm06/ldap22:latest

docker run --rm --name ldap.edt.org -h ldap.edt.org --net 2hisx -p 389:389 -d edtasixm06/ldap22:latest

docker run --rm  --name phpldapadmin.edt.org -h phpldapadmin.edt.org --net 2hisx -p 80:80 -d edtasixm06/ldap22:phpldapadmin


⁠Ldap servers:
  • edtasixm06/ldap22:base Server bàsic ldap, amb base de dades edt.org. Aquesta imatge engega amb CMD un script anomenat startup.sh que fa el següent:
    • Esborrar els directoris de configuració i de dades
    • Generar el directori de configuració dinàmica slapd.d a partir del fitxer de configuració slapd.conf
    • Injectar a baix nivell les dades de la BD 'populate' de l'organització dc=edt,dc=org
    • Assignar la propietat i grup del directori de ddaes i de configuració a l'usuari openldap
    • Engegar el servei slapd amb el paràmetre que fa debug per mantenir-lo engegat en foreground
⁠Desplegament
docker build -t edtasixm06/ldap22:base .
docker network create 2hisx
docker network inspect 2hisx
docker run --rm --name ldap.edt.org -h ldap.edt.org --net 2hisx -p 389:389 -d edtasixm06/ldap21:base

docker ps
nmap <ip-container ldap>
ldapsearch -x -LLL -b 'dc=edt,dc=org'
ldapsearch -x -LLL -h <ip-container> -b 'dc=edt,dc=org'
docker exec -it ldap.edt.org ps ax


⁠Ldap servers:
  • edtasixm06/ldap22:editat
    • generar un sol fitxer ldif anomenat edt.org.ldif
    • afegir en el fitxer dos usuaris i una ou nova inventada i posar-los dins aquesta ou.
    • modificar el fitxer edt.org.ldif modificant dn dels usuaris utilitzant en lloc del cn el uid per identificar-los.
    • configurar el password de Manager que sigui ‘secret’ però encriptat (posar-hi un comentari per indicar quin és de cara a estudiar).
    • propagar el port amb -p -P
    • editar els dos README, en el general afegir que tenim una nova imatge. En el de la imatge ldap21:editat descriure els canvis i les ordres per posar-lo en marxa.
    • [posteriorment] vam afegir el requeriment de que tingui cn=config]
⁠Generar passwd
$ docker run --rm --name ldap.edt.org -h ldap.edt.org --net 2hisx -p 389:389 -d edtasixm06/ldap22:config
d17420f8f77b266c1be84599dea12cb630ad77180776bb06b48257c2790cf1e7

$ docker exec -it ldap.edt.org slappasswd
New password: 
Re-enter new password: 
{SSHA}oAtPEpCsAdk6SLqmqv+6fkqm2EHELq32
⁠Verificar config
$ docker build -t edtasixm06/ldap22:editat .

$ docker run --rm --name ldap.edt.org -h ldap.edt.org --net 2hisx -p 389:389 -d edtasixm06/ldap22:editat

$ ldapsearch -x -LLL -b 'dc=edt,dc=org' | grep dn
dn: dc=edt,dc=org
dn: ou=maquines,dc=edt,dc=org
dn: ou=clients,dc=edt,dc=org
dn: ou=productes,dc=edt,dc=org
dn: ou=usuaris,dc=edt,dc=org
dn: cn=Pau Pou,ou=usuaris,dc=edt,dc=org
dn: cn=Pere Pou,ou=usuaris,dc=edt,dc=org
dn: cn=Anna Pou,ou=usuaris,dc=edt,dc=org
dn: cn=Marta Mas,ou=usuaris,dc=edt,dc=org
dn: cn=Jordi Mas,ou=usuaris,dc=edt,dc=org
dn: cn=Admin System,ou=usuaris,dc=edt,dc=org
$ ldapwhoami -x -D 'cn=Manager,dc=edt,dc=org' -w secret 
dn:cn=Manager,dc=edt,dc=org

$ docker exec -it ldap.edt.org slapcat -n0 

$ ldapsearch -x -LLL -D 'cn=Sysadmin,cn=config' -w syskey -b 'olcDatabase={1}mdb,cn=config'
dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=edt,dc=org
olcAccess: {0}to *  by self write  by * read
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=Manager,dc=edt,dc=org
olcRootPW: {SSHA}oAtPEpCsAdk6SLqmqv+6fkqm2EHELq32
olcSyncUseSubentry: FALSE
olcMonitoring: TRUE
olcDbNoSync: FALSE
olcDbIndex: objectClass pres,eq
olcDbMaxReaders: 0
olcDbMaxSize: 10485760
olcDbMode: 0600
olcDbSearchStack: 16
olcDbRtxnSize: 10000
⁠Nou format de DN dels usuaris
dn: uid=pau,ou=usuaris,dc=edt,dc=org
objectclass: posixAccount
objectclass: inetOrgPerson
cn: Pau Pou
cn: Pauet Pou
sn: Pou
homephone: 555-222-2220
mail: [email protected]
description: Watch out for this guy
ou: Profes
uid: pau
uidNumber: 5000
gidNumber: 100
homeDirectory: /tmp/home/pau
userPassword: {SSHA}NDkipesNQqTFDgGJfyraLz/csZAIlk2/
⁠Entrades noves fetes
dn: ou=cfgs,dc=edt,dc=org
ou: cfgs
description: cicle informatica grau superior
objectclass: organizationalunit

dn: cn=cicle01,ou=cfgs,dc=edt,dc=org
objectclass: inetOrgPerson
cn: cicle01
sn: 01
homephone: 555-222-2220
mail: [email protected]
description: Watch out for this guy
⁠Exemple-1
$ cat acl-e1.ldif 
dn: olcDatabase={1}mdb,cn=config
changetype: modify
delete: olcAccess
-
add: olcAccess
olcAccess: to * by * read
$ ldapmodify -vx -D 'cn=sysadmin,cn=config' -w syskey -f acl-e1.ldif 
ldap_initialize( <DEFAULT> )
delete olcAccess:
add olcAccess:
	to * by * read
modifying entry "olcDatabase={1}mdb,cn=config"
modify complete
$ ldapsearch -x -LLL -D 'cn=sysadmin,cn=config' -w syskey -b 'olcDatabase={1}mdb,cn=config' olcAccess
dn: olcDatabase={1}mdb,cn=config
olcAccess: {0}to * by * read
$ ldapmodify -cvx -D 'uid=pere,ou=usuaris,dc=edt,dc=org' -w pere -f mod1.ldif 


⁠Ldap servers:
  • edtasixm06/ldap22:config Configuració dinàmica del servidor. Definir un compte d’administració per a cn=config. Consultes amb ldapsearch de cn=config. Modificacions de la configuració amb ldapmodify usant l’usuari i passwd de l’administrador de cn=config. Slapd.conf → slaptest → /etc/openldap/slapd.d → fitxers ldif. cn=config. Exemple mod2.ldif (posar atenció a no deixar espis al final dels ldif)
⁠Desplegament
# Atenció no deixar espais als finals de linia
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPw: jupiter
-
delete: olcAccess
-
add: olcAccess
olcAccess: to * by * write
$ ldapmodify -vx -D 'cn=Sysadmin,cn=config' -w syskey -f mod2.ldif

$ ldapwhoami -x -D 'cn=Manager,dc=edt,dc=org'      -w jupiter

$ ldapmodify -x -D 'cn=Anna Pou,ou=usuaris,dc=edt,dc=org' -w anna -f mod.ldif

$ ldapmodify -x -D 'cn=Pere Pou,ou=usuaris,dc=edt,dc=org' -w pere -f mod.ldif
$ ldapsearch -x -LLL -D 'cn=Sysadmin,cn=config' -w syskey -b 'cn=config'

$ ldapsearch -x -LLL -D 'cn=Sysadmin,cn=config' -w syskey -b 'olcDatabase={1}mdb,cn=config'


⁠Ldap servers:
  • edtasixm06/ldap22:schema imatge ldap per implementar un schema propi de futbolistes.

    • futbolistaA.schema Derivat de inetorgPerson, structural, injectat dades de dades-futbolA.ldif.

    • futbolistaB.schema. Structural derivat de TOP.

    • futbolistaC.schema. Auxiliary.

$ docker run --rm --name ldap.edt.org -h ldap.edt.org --net 2hisx -p 389:389 -d edtasixm06/ldap22:schema

$ docker run --rm --name phpldapadmin.edt.org -h phpldapadmin.edt.org --net 2hisx -p 80:80 -d edtasixm06/ldap22:phpldapadmin
$ ldapadd -xv -D 'cn=Manager,dc=edt,dc=org' -w secret -f data-futbolB.ldif 



⁠Ldap servers:
  • *edtasixm06/ldap22:grups Imatge final del servei ldap amb usuaris i grups. Els usuaris són identificats pel uid per exemple uid=pere,ou=usuaris,dc=edt,dc=org. S'han afegit grups dins de una ou=grups que conté els grups, i s'hi han posat els usuaris tot validant la coherència de les dades. També s'ha repassat que els homes dels usuaris siguin vàlids.
dn: ou=grups,dc=edt,dc=org
ou: grups
description: Container per a grups del sistema linux
objectclass: organizationalunit
dn: cn=professors,ou=grups,dc=edt,dc=org
objectclass: posixGroup
cn: professors
gidNumber: 601
description: Grup de professors
memberUid: pau
memberUid: pere
memberUid: jordi
⁠Desplegament
docker run --rm --name ldap.edt.org -h ldap.edt.org --net 2hisx -p 389:389 -d edtasixm06/ldap21:grups


⁠Ldap servers:
  • edtasixm06/ldap22:acl Imatge per a fer proves de modificació de les acls usant fitxers de modificació. S'ha incorporat la BD cn=config per a l'administració del servidor dinàmicament.

Detach:

docker run --rm --name ldap.edt.org -h ldap.edt.org --net 2hisix -p 389:389 -d edtasixm06/ldap22:acl

Exemples:

  access to * by * read
  access to * by * write
  access to * by self write by * read
  access to * by self write by * read

Exemples de modificació dinàmica: fitxer de modificació entry.ldif

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=UserPassword by self write by * auth
olcAccess: to * by * read


#olcAccess: to * attrs=homePhone by dn.exact="cn=Marta Mas,ou=usuaris,dc=edt,dc=org" write by users write
#olcAccess:  to attrs=homePhone by * read
#olcAccess: to * by * write

Modificar amb ldapmodify

ldapmodify -x -h localhost -D ‘cn=Sysadmin,cn=config’ -w syskey -f entry.ldif


⁠Imatge:

  • edtasixm06/ldap22:phpldapadmin Imatge amb un servidor phpldapadmin. Connecta a al servidor ldap anomenat ldap.edt.org per accedir a les bases de dades dc=edt,dc=org i cn=config. Aquesta imatge està basada en fedora:27 per evitar el canvi de sintaxis de PHP 7.4.

Detach:

$ docker run --rm  --name phpldapadmin.edt.org -h phpldapadmin.edt.org --net 2hisx -p 80:80 -d edtasixm06/ldap22:phpldapadmin 

Tag summary

Content type

Image

Digest

sha256:55ad3a8ea…

Size

105.4 MB

Last updated

almost 4 years ago

docker pull edtasixm06/ldap22