initial version
This commit is contained in:
commit
5a92d6815c
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.env
|
||||||
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"editor.fontSize": 13,
|
||||||
|
"terminal.integrated.fontSize": 13,
|
||||||
|
"window.zoomLevel": 1.4,
|
||||||
|
}
|
||||||
67
README.md
Normal file
67
README.md
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
# Openldap
|
||||||
|
|
||||||
|
## Description
|
||||||
|
This docker compose install openldap container
|
||||||
|
|
||||||
|
## Requierments
|
||||||
|
### Folder
|
||||||
|
```bash
|
||||||
|
sudo mkdir -p /home/docker/openldap/certs
|
||||||
|
```
|
||||||
|
### Certificats
|
||||||
|
Copy files `gmolab.net.crt`, `gmolab.net.key` and `gmolabCA.net` from `/home/docker/certs` folder to `/home/docker/openldap/certs`
|
||||||
|
```bash
|
||||||
|
sudo cp /home/docker/certs/gmolabCA.crt /home/docker/openldap/certs/
|
||||||
|
sudo cp /home/docker/certs/gmolab.net.key /home/docker/openldap/certs/
|
||||||
|
sudo cp /home/docker/certs/gmolab.net.crt /home/docker/openldap/certs/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Group and Owner
|
||||||
|
```bash
|
||||||
|
sudo chown 1001 /home/docker/openldap -R
|
||||||
|
```
|
||||||
|
1001 is important because the container is running with user no-root
|
||||||
|
|
||||||
|
## Delete Directory
|
||||||
|
ATTENTION. The commands below delete the entire directory.
|
||||||
|
This is useful when you want to test configs (problems with certificates)
|
||||||
|
```bash
|
||||||
|
sudo rm -rf /home/docker/openldap/data/*
|
||||||
|
sudo rm -rf /home/docker/openldap/slapd.d/*
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run
|
||||||
|
```bash
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## Init ldap
|
||||||
|
Initialize the openldap ditectory
|
||||||
|
```bash
|
||||||
|
./ldap-init.sh
|
||||||
|
```
|
||||||
|
## LDAP commands
|
||||||
|
* Get all entry in directory
|
||||||
|
```bash
|
||||||
|
ldapsearch -H ldaps://gmoadm.gmolab.net:1636 -x -D 'cn=Access LDAP,ou=people,dc=gmolab,dc=net' -b 'dc=gmolab,dc=net' -w pa55w0rd
|
||||||
|
```
|
||||||
|
* Get Config
|
||||||
|
```bash
|
||||||
|
docker exec ldap /bin/bash -c "ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(objectClass=olcDatabaseConfig)'"
|
||||||
|
```
|
||||||
|
* Get olcAccess
|
||||||
|
```bash
|
||||||
|
docker exec ldap /bin/bash -c "ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(objectClass=olcDatabaseConfig)' olcAccess"
|
||||||
|
```
|
||||||
|
* Get Modules
|
||||||
|
```bash
|
||||||
|
docker exec ldap /bin/bash -c "ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(objectClass=olcModuleList)' "
|
||||||
|
```
|
||||||
|
|
||||||
|
## Sources
|
||||||
|
[Bitnami Openldap](https://hub.docker.com/r/bitnami/openldap)
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
### v1.0 - 2024-12-29
|
||||||
|
#### Added
|
||||||
|
- initial version by [GMo](mailto:gilles.mouchet@gmail.com)
|
||||||
25
docker-compose.yml
Normal file
25
docker-compose.yml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
networks:
|
||||||
|
my-network:
|
||||||
|
driver: bridge
|
||||||
|
services:
|
||||||
|
openldap:
|
||||||
|
image: bitnami/openldap:latest
|
||||||
|
container_name: ldap
|
||||||
|
ports:
|
||||||
|
- '1389:1389'
|
||||||
|
- '1636:1636'
|
||||||
|
env_file: ".env"
|
||||||
|
# environment:
|
||||||
|
# - LDAP_ADMIN_USERNAME=admin
|
||||||
|
# - LDAP_ADMIN_PASSWORD=password
|
||||||
|
# - LDAP_ROOT=dc=gmolab,dc=net
|
||||||
|
# - LDAP_ADMIN_DN=cn=admin,dc=gmolab,dc=net
|
||||||
|
# - LDAP_ENABLE_TLS=yes
|
||||||
|
# - LDAP_TLS_CERT_FILE=/opt/bitnami/openldap/certs/gmolab.net.crt
|
||||||
|
# - LDAP_TLS_KEY_FILE=/opt/bitnami/openldap/certs/gmolab.net.key
|
||||||
|
# - LDAP_TLS_CA_FILE=/opt/bitnami/openldap/certs/gmolabCA.crt
|
||||||
|
networks:
|
||||||
|
- my-network
|
||||||
|
volumes:
|
||||||
|
- /home/docker/openldap:/bitnami/openldap/
|
||||||
|
- /home/docker/openldap/certs:/opt/bitnami/openldap/certs
|
||||||
84
ldap-init.sh
Executable file
84
ldap-init.sh
Executable file
@ -0,0 +1,84 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
source .env
|
||||||
|
LDAP_SRV=ldaps://gmoadm.gmolab.net:1636
|
||||||
|
|
||||||
|
echo "Delete from the box users"
|
||||||
|
ldapdelete -H $LDAP_SRV -w $LDAP_ADMIN_PASSWORD -D $LDAP_ADMIN_DN \
|
||||||
|
"cn=user01,ou=people,$LDAP_ROOT" \
|
||||||
|
"cn=user02,ou=people,$LDAP_ROOT" \
|
||||||
|
"cn=readers,ou=people,$LDAP_ROOT" \
|
||||||
|
"ou=people,$LDAP_ROOT"
|
||||||
|
|
||||||
|
echo "create OUs"
|
||||||
|
ldapadd -x -H $LDAP_SRV -w $LDAP_ADMIN_PASSWORD -D $LDAP_ADMIN_DN << EOF
|
||||||
|
dn: ou=people,$LDAP_ROOT
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
ou: people
|
||||||
|
EOF
|
||||||
|
#dn: ou=groups,$LDAP_ROOT
|
||||||
|
#objectClass: organizationalUnit
|
||||||
|
#ou: groups
|
||||||
|
#EOF
|
||||||
|
|
||||||
|
echo "Create users"
|
||||||
|
ldapadd -x -H $LDAP_SRV -w $LDAP_ADMIN_PASSWORD -D $LDAP_ADMIN_DN << EOF
|
||||||
|
dn: cn=Admin LDAP,ou=people,$LDAP_ROOT
|
||||||
|
cn: Admin LDAP
|
||||||
|
displayName: Admin LDAP
|
||||||
|
sn: LDAP
|
||||||
|
givenName: Admin
|
||||||
|
objectClass: inetOrgPerson
|
||||||
|
objectClass: posixAccount
|
||||||
|
objectClass: shadowAccount
|
||||||
|
userPassword: pa55w0rd
|
||||||
|
uid: adminldap
|
||||||
|
uidNumber: 10001
|
||||||
|
gidNumber: 10001
|
||||||
|
homeDirectory: /home/adminldap
|
||||||
|
mail: admin.ldap@gmolab.net
|
||||||
|
|
||||||
|
dn: cn=Access LDAP,ou=people,$LDAP_ROOT
|
||||||
|
cn: Access LDAP
|
||||||
|
displayName: Access LDAP
|
||||||
|
sn: LDAP
|
||||||
|
givenName: Access
|
||||||
|
objectClass: inetOrgPerson
|
||||||
|
objectClass: posixAccount
|
||||||
|
objectClass: shadowAccount
|
||||||
|
userPassword: pa55w0rd
|
||||||
|
uid: accessldap
|
||||||
|
uidNumber: 10002
|
||||||
|
gidNumber: 10002
|
||||||
|
homeDirectory: /home/accessldap
|
||||||
|
mail: access.ldap@gmolab.net
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "change ACL"
|
||||||
|
docker exec ldap /bin/bash -c 'ldapmodify -H ldapi:/// -Y EXTERNAL << EOF
|
||||||
|
dn: olcDatabase={2}mdb,cn=config
|
||||||
|
changetype: modify
|
||||||
|
replace: olcAccess
|
||||||
|
olcAccess: to attrs=userPassword
|
||||||
|
by self write
|
||||||
|
by anonymous auth
|
||||||
|
by dn.base="cn=Admin LDAP,ou=people,$LDAP_ROOT" write
|
||||||
|
by dn.base="cn=Access LDAP,ou=people,$LDAP_ROOT" read
|
||||||
|
by anonymous auth
|
||||||
|
by * none
|
||||||
|
olcAccess: to dn.base=""
|
||||||
|
by * read
|
||||||
|
olcAccess: to *
|
||||||
|
by dn.base="cn=Admin LDAP,ou=people,$LDAP_ROOT" write
|
||||||
|
by self write
|
||||||
|
by users read
|
||||||
|
by * none
|
||||||
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
|
echo "Change organization name"
|
||||||
|
ldapmodify -H $LDAP_SRV -w $LDAP_ADMIN_PASSWORD -D $LDAP_ADMIN_DN << EOF
|
||||||
|
dn: dc=gmolab,dc=net
|
||||||
|
changetype: modify
|
||||||
|
replace: o
|
||||||
|
o: GMOLab (Gilles Mouchet Sandbox)
|
||||||
|
EOF
|
||||||
Loading…
x
Reference in New Issue
Block a user