This docker launches a LDAP Server that emulates Iberdrola LDAP Server.
sudo docker run -d -it --name=ldapServerContainer -h iberdrola.es -p 389:389 -p 636:636 --restart unless-stopped circutor/ldapserver-iberdrola
where the LDAP Server port #389 is mapped to the one of the computer where the container is being executed. This will be used for plain-text LDAP connections and for those upgraded to encryption by calling StartTLS() method. Port #636 for LDAPs using SSL is mapped too, although not used in our case.
sudo docker exec -it ldapServerContainer /bin/bash
ldapadd -x -D cn=admin,dc=iberdrola,dc=es -w Adm1n -f groupsCncIberdrola.ldif
ldapadd -x -D cn=admin,dc=iberdrola,dc=es -w Adm1n -f usersCncIberdrola.ldif
cd ~
ldapmodify -H ldapi:// -Y EXTERNAL -f addcerts.ldif
ldapsearch -x -b "uid=U000001,ou=usuarios,dc=iberdrola,dc=es" -s sub "objectclass=*"
ldapdelete -v -c -D "cn=admin,dc=iberdrola,dc=es" -w Adm1n "uid=U000001,ou=usuarios,dc=iberdrola,dc=es"
ldapadd -x -D cn=admin,dc=iberdrola,dc=es -w Adm1n -f newConfigUser01.ldif
The steps followed to create this docker are listed below.
sudo docker pull ubuntu
sudo docker run -d -it --name=ldapServer -h iberdrola.es -p 389:389 -p 636:636 ubuntu
If conflict using any of these ports arises, it's because there is another slapd server using it. Show list of processes, kill those using the affected port and re-execute run command:
sudo lsof -i -P -n | grep #Port NumberInConflict#
kill -9 #ID_Process#
sudo docker exec -it ldapServer /bin/bash
printf '#!/bin/sh\nexit 0' > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
exit
sudo docker exec -it ldapServer bash -c "apt-get update && apt-get install ldap-utils slapd"
sudo docker exec -it ldapServer /bin/bash
dpkg-reconfigure slapd
--> In the Console that pops-up, select:
- Omit OpneLDAP server configuration? --> No
- DNS domain name: iberdrola.es
- Organization name: Iberdrola
- Administrator pwd: Adm1n
- Do you want the database to be removed when slapd is purged? --> Yes
- ... move the old database files out of the way before creating a new database? --> Yes
slappasswd
apt-get install nano
nano /etc/ldap/ldap.conf
BASE dc=iberdrola,dc=es
URI ldap://iberdrola.es
nano rootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}7r2LpWe3Eg3n3X8YcU49Yb6tx93rd8nz
ldapadd -Y EXTERNAL -H ldapi:/// -f rootpw.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/dyngroup.ldif
ls /etc/ldap/slapd.d/cn\=config/
nano manager.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=iberdrola,dc=es
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=iberdrola,dc=es
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}7r2LpWe3Eg3n3X8YcU49Yb6tx93rd8nz
ldapmodify -Y EXTERNAL -H ldapi:/// -f manager.ldif
nano schemaCncIberdrola.ldif
dn: cn=iberdrola,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: iberdrola
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.110
NAME 'apellidos'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.112
NAME 'perfil-fw'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.113
NAME 'bloqueo-clave'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.114
NAME 'fech-modif-clave'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.115
NAME 'correo'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.118
NAME 'nombre'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.119
NAME 'perfil-usu'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.120
NAME 'perfil-cat1'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.121
NAME 'perfil-cat2'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.122
NAME 'perfil-cat3'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.123
NAME 'perfil-cat4'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.124
NAME 'perfil-cat5'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.125
NAME 'perfil-cat6'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.126
NAME 'perfil-cat7'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcAttributeTypes: ( 1.3.6.1.4.1.6863.2.3.127
NAME 'perfil-cat8'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
)
olcObjectClasses: ( 1.3.6.1.4.1.6863.2.4.59 NAME 'equiposCTstar'
DESC 'Equipos CT Star'
SUP top AUXILIARY
MUST ( perfil-usu $ perfil-cat1 $ perfil-cat2 $ perfil-cat3 $ perfil-cat4 $ perfil-cat5 $ perfil-cat6 $ perfil-cat7 $ perfil-cat8 )
)
olcObjectClasses: ( 1.3.6.1.4.1.6863.2.4.57 NAME 'usuarioIberdrola'
DESC 'Usuario Iberdrola'
SUP top AUXILIARY
MUST ( apellidos $ userPassword $ uid $ bloqueo-clave $ fech-modif-clave $ correo $ nombre )
MAY perfil-fw
)
ldapadd -Y EXTERNAL -H ldapi:/// -f schemaCncIberdrola.ldif
nano addObjectClassToschema.ldif
dn: cn=iberdrola,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: iberdrola
olcObjectClasses: ( 1.3.6.1.4.1.6863.2.4.57 NAME 'usuarioIberdrola'
DESC 'Usuario Iberdrola'
SUP top AUXILIARY
MUST ( apellidos $ userPassword $ uid $ bloqueo-clave $ fech-modif-clave $ correo $ nombre )
MAY perfil-fw
)
ldapadd -Y EXTERNAL -H ldapi:/// -f addObjectClassToschema.ldif
nano iberdrolaAdminRoles.ldif
dn: dc=iberdrola,dc=es
objectClass: domain
objectClass: top
dc: iberdrola
dn: cn=admin,dc=iberdrola,dc=es
objectClass: organizationalRole
cn: admin
description: Iberdrola LDAP server administrator
ldapadd -x -D cn=admin,dc=iberdrola,dc=es -w Adm1n -f iberdrolaAdminRoles.ldif
nano groupsCncIberdrola.ldif
dn: ou=usuarios,dc=iberdrola,dc=es
objectclass: top
objectclass: organizationalUnit
ou: usuarios
description: Container for user entries
dn: ou=grupos,dc=iberdrola,dc=es
objectclass: top
objectclass: organizationalUnit
ou: grupos
description: Container for user entries
nano usersCncIberdrola.ldif
dn: uid=U000001,ou=usuarios,dc=iberdrola,dc=es
objectClass: organizationalRole
objectClass: usuarioIberdrola
objectClass: equiposCTstar
cn: U000001
apellidos: Apellido1 Apellido2
userPassword: {SSHA}Odu01lI+PpiF4mPKWw6cov7618ujVVbx
uid: U000001
bloqueo-clave: N
fech-modif-clave: 20090529
correo: [email protected]
nombre: Nombre1
perfil-usu: ADMINISTRACION
perfil-cat1: NORTE
perfil-cat2: FABRICANTE1
perfil-cat3: EXPLOTACION
perfil-cat4: INTEGRADOR1
perfil-cat5: CONCENTRADOR
perfil-cat6: ALL
perfil-cat7: ALL
perfil-cat8: ALL
dn: uid=U000002,ou=usuarios,dc=iberdrola,dc=es
objectClass: organizationalRole
objectClass: usuarioIberdrola
objectClass: equiposCTstar
cn: U000002
apellidos: Apellido1 Apellido2
userPassword: {SSHA}Vd3kvUtjRnSj3raKKARVqRsozZq9f632
uid: U000002
bloqueo-clave: N
fech-modif-clave: 20090529
correo: [email protected]
nombre: Nombre2
perfil-usu: VISUALIZACION
perfil-cat1: ALL
perfil-cat1: NORTE
perfil-cat1: NOROESTE
perfil-cat1: MADRID
perfil-cat1: CENTRO
perfil-cat1: ESTE_NORTE
perfil-cat1: ESTE_SUR
perfil-cat2: ALL
perfil-cat2: FABRICANTE1
perfil-cat2: FABRICANTE2
perfil-cat2: FABRICANTE3
perfil-cat3: ALL
perfil-cat3: EXPLOTACION
perfil-cat3: PST_SERVICIO
perfil-cat4: ALL
perfil-cat4: INTEGRADOR1
perfil-cat4: INTEGRADOR2
perfil-cat4: INTEGRADOR3
perfil-cat5: ALL
perfil-cat5: REMOTA
perfil-cat5: CONCENTRADOR
perfil-cat5: CARGADOR
perfil-cat6: ALL
perfil-cat7: ALL
perfil-cat8: ALL
apt-get install gnutls-bin ssl-cert
mkdir /etc/ssl/templates
nano /etc/ssl/templates/ca_server.conf
cn = LDAP Server CA
ca
cert_signing_key
nano /etc/ssl/templates/ldap_server.conf
organization = "Iberdrola"
cn = iberdrola.es
tls_www_server
encryption_key
signing_key
expiration_days = 18250
certtool -p --outfile /etc/ssl/private/ca_server.key
certtool -s --load-privkey /etc/ssl/private/ca_server.key --template /etc/ssl/templates/ca_server.conf --outfile /etc/ssl/certs/ca_server.pem
certtool -p --sec-param high --outfile /etc/ssl/private/ldap_server.key
certtool -c --load-privkey /etc/ssl/private/ldap_server.key --load-ca-certificate /etc/ssl/certs/ca_server.pem --load-ca-privkey /etc/ssl/private/ca_server.key --template /etc/ssl/templates/ldap_server.conf --outfile /etc/ssl/certs/ldap_server.pem
usermod -aG ssl-cert openldap
chown :ssl-cert /etc/ssl/private/ldap_server.key
chmod 640 /etc/ssl/private/ldap_server.key
cd ~
nano addcerts.ldif
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ca_server.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap_server.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap_server.key
exit
sudo docker container commit -a "Circutor" -m "Ldap Server emulating Iberdrola's one" ldapServer ldapserver-iberdrola
--> where:
- "Circutor": the author
- "ldapServer": the container we want to export as a new docker image
- "ldapserver-iberdrola": the name of the docker image we want to create
9. Image ldapserver-iberdrola holds the whole IBERDROLA LDAP Server configuration, but their containers DON'T launch the LDAP Server AUTOMATICALLY! An auto-executable docker image (circutor/ldapserver-iberdrola) derived from image ldapserver-iberdrola must be created. To do so, follow these steps:
nano script.sh
#!/bin/bash
# start-ldap.sh
service slapd start
# Wait for slapd to fully start
sleep 10
# Keep the container running
tail -f /dev/null
nano Dockerfile
FROM ldapserver-iberdrola
COPY script.sh /script.sh
RUN chmod +x /script.sh
ENTRYPOINT ["/script.sh"]
sudo docker build . -t circutor/ldapserver-iberdrola
sudo docker stop ldapServer
sudo docker run -d -it --name=ldapServerContainer -h iberdrola.es -p 389:389 -p 636:636 --restart unless-stopped circutor/ldapserver-iberdrola
sudo docker exec -it ldapServerContainer /bin/bash
ldapadd -x -D cn=admin,dc=iberdrola,dc=es -w Adm1n -f groupsCncIberdrola.ldif
ldapadd -x -D cn=admin,dc=iberdrola,dc=es -w Adm1n -f usersCncIberdrola.ldif
cd ~
ldapmodify -H ldapi:// -Y EXTERNAL -f addcerts.ldif
The IBERDROLA LDAP Server is now RUNNING!!
Content type
Image
Digest
sha256:619aa4194…
Size
78.2 MB
Last updated
over 2 years ago
docker pull circutor/ldapserver-iberdrola