LDAP + LAM + Phpldapadmin + Kanban

·

6 min read

LDAP + LAM + Phpldapadmin + Kanban

Instalar Open Ldap

Editamos el archivo /etc/hostname

sudo hostnamectl set-hostname srvldap210.empresa210.local

Edito el archivo /etc/hosts

127.0.0.1     srvldap210.empresa210.local
172.22.210.17 srvldap210.empresa210.local

En caso de eroor, desinstalar ldap

$ dpkg --remove --force-remove-reinstreq slapd
$ dpkg --purge slapd

Instalo software

sudo apt update -y && sudo apt upgrade -y && sudo apt dist-upgrade -y
sudo apt install slapd ldap-utils -y

Compruebo instalación

sudo slapcat

Instalar qemu-guest-agent

sudo apt -y install qemu-guest-agent
sudo systemctl enable qemu-guest-agent
sudo systemctl start qemu-guest-agent

Configuracion de la estructura del directorio

Creo la estructura de directorio

sudo nano unidades210.ldif
dn: ou=grupos,dc=empresa210,dc=local
objectClass: top
objectClass: organizationalUnit
ou: grupos

dn: ou=usuarios,dc=empresa210,dc=local
objectClass: top
objectClass: organizationalUnit
ou: usuarios
sudo ldapadd -x -D cn=admin,dc=empresa210,dc=local -W -f unidades210.ldif

compruebo

sudo slapcat

Creo los grupos en otro fichero ldif

sudo nano grupos210.ldif
dn: ou=SIR1,ou=grupos,dc=empresa210,dc=local
objectClass: top
objectClass: posixGroup
gidNumber: 1003
cn: grupo

dn: ou=SIR2,ou=grupos,dc=empresa210,dc=local
objectClass: top
objectClass: posixGroup
gidNumber: 1004
cn: grupo
sudo ldapadd -x -D cn=admin,dc=empresa210,dc=local -W -f grupos210.ldif

compruebo

sudo slapcat

Genero los hashes para cada usuario

slappasswd

creo el fichero ldif para usuarios

dn: uid=melerom,ou=usuarios,dc=empresa210,dc=local
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: person
cn: melerom
uid: melerom
ou: tecnologia
uidNumber: 3000
gidNumber: 5000
homeDirectory: /home/melerom
loginShell: /bin/bash
userPassword: {SSHA}IJQuaPyiyT2akQL50AqBCciLLLflGKqU
sn: Melero
mail: melerom@empresa210.local
givenName: melerom

dn: uid=bhill,ou=usuarios,dc=empresa210,dc=local
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: person
cn: bhill
uid: bhill
ou: usuarios
uidNumber: 3001
gidNumber: 5001
homeDirectory: /home/bhill
loginShell: /bin/bash
userPassword: {SSHA}SQ0N7dlh45xqy6gumzLpdafXwNouFwYx
sn: Hill
mail: bhill@empresa210.local
givenName: bhill
sudo ldapadd -x -D cn=admin,dc=empresa210,dc=local -W -f usuarios210.ldif

Comandos para buscar el openldap

ldapsearch -x -b "dc=empresa210,dc=local" uid=melerom sn givenName

Cambios: Creamos el fichero cambios.lidf

sudo nano cambios.ldif
dn: uid=melerom,ou=usuarios,dc=empresa210,dc=local
changetype: modify
replace: mail
mail: melero.m@empresa210.local
ldapmodify -x -D cn=admin,dc=empresa210,dc=local -W -f cambios.ldif

Instalar Interfaz web

Instalar Ldap Account Manager

sudo apt-get install libnss-ldap libpam-ldap ldap-utils -y

escribiremos la dirección IP del servidor y sustituiremos el protocolo ldapi:/// por ldap://.

En el siguiente paso, debemos indicar: dc=empresa210,dc=local
ldap version 3
Si
No
Ya sólo nos queda indicar el nombre de la cuenta LDAP que tendrá privilegios para realizar cambios en las contraseñas
(cn=admin,dc=empresa210,dc=local). Contraseña de administrador

sudo apt install ldap-account-manager

modifico el archivo nsswitch

sudo nano /etc/nsswitch.conf

Añado ldap:

passwd    files ldap
group     files ldap
shadow    files ladap

Añado la última línea al archivo de configuracion /etc/pam.d/common-session esta línea hara que cada usuarios que se cree tenga los permisos 700 sobre su directorio home

session optional     pam_mkhomedir.so skel=/etc/skel   umask=077

session optional pam_mkhomedir.so skel=/etc/skel umask=077

$ ldapsearch -xH ldap://172.22.210.17 -b “dc=empresa210,dc=local

instalo nslcd

sudo apt install nslcd
ldap://172.22.210.17/
sudo reboot

Instalo

sudo apt install apache2 php php-cgi libapache2-mod-php php-mbstring php-common php-pear -y

Me aseguto que la version de php sea la correcta

sudo a2enconf php7.4-cgi
sudo systemctl reload apache2

Instalo LAM

sudo apt install ldap-account-manager -y
sudo nano /etc/apache2/conf-enabled/ldap-account-manager.conf

Una vez que tengamos el contenido del archivo en pantalla, localizamos una línea con el siguiente contenido:

# Require all granted

Cuando la hayamos localizado, insertamos un carácter almohadilla (#) delante, para comentarla. A continuación, añadimos una línea debajo con un texto similar al siguiente:

# Require all granted
Require ip 127.0.0.1 172.22.210.17/16
sudo systemctl restart apache2

Iniciar LAM en el 'cliente' si estamos en el server hay que ejecutar tambien el siguiente comando

sudo apt install ldap-account-manager

Escribo en el navegador

172.22.210.17/lam/templates/login.php

A continuacion configuro LAM, cambio la contraseña que viene por defecto (lam) y pongo los datos de mi dominio

Alternativa a LAM

Instalamos phplampadmin

sudo apt install phpldapadmin

Cambiamos algunos parametros de configuración

sudo nano /etc/phpldapadmin/config.php

$servers->setValue('sever', 'host', '172.22.210.17');
$servers->setValue('sever', 'base', array('dc=empresa210,dc=local');
$servers->setValue('login', 'bind:id', 'cn=admin,dc=empresa210,dc=local');
$config->custom->appearance['hide_template_warning'] = true;

Escribir en la barra de direciones del navegador:

172.22.210.17/phpldapadmin

entro en la configuración desde el navegador

Añado mediante ficheros ldif unidad210.ldif

Añado mediante ficheros ldif usuarios210.ldif

hago alguna búsqueda

Conexion con aplicacion Kanboard

Primero instalo el servidor y activo apache y php7.4

sudo a2enconf php7.4-cgi
sudo systemctl restart apache2
sudo systemctl status apache2

Descargo una version compatible con php7.4

wget https://github.com/kanboard/kanboard/archive/refs/tags/v1.2.28.tar.gz

descomprimo y extraigo

 tar -xvf v1.2.28.tar.gz

usando snap installo snap y wekan

sudo apt install snap
sudo snap install wekan

Le asigno el puerto 3001 y compruebo que esta a la escucha

sudo snap set wekan port='3001'
systemctl status snap.wekan.wekan

Vuelvo a la carpeta de kanboard que esta en /var/www/html y procedo a cambiar el propietareo para que éste sea www/data con el objetivo de que pueda ejecutarse

sudo chown -R www-data:www-data data

instalo mysql

sudo apt install mysql-server
sudo service mysql status

Entro en el archivo de configuracio de mysql y descomento la línea de bind address, apuntando la de la máquina cliente donde tengo instalada la aplicación.

sudo nano /etc/msql/mysql.conf.d/mysqld.cnf

añado la ip de mi server:

bind-address          = 172.20.210.17
mysqlx-bind-address   = 127.0.0.1
sudo systemctl restart mysql.service

como root Comandos en mysql para la creaión de un usuario y su password

>create user ‘melerom’@’localhost’ ;
>grant all privileges on *.* to ‘mmelero’@’localhost’ with grant option;
>flush privileges;

Incidencias, Al intentar conectar desde la máquina cliente, he tenido que solucionar un fallo inesperado. Ya que con este proceso de instalación, todo deberia de funcionar según la documentación oficial, pero me he encontrado con que me faltaba un módulo.

sudo apt-get install php7.4-sqlite
sudo phpenmod -v 7.4 sqlsrv pdo_sqlsrv

accedo desde el navegador

Lo siguiente será configurarlo, primero cambiare el password de admin que viene por defecto 'admin', le pondre el mio

A continuacion importo la base de datos desde un fichero ldif para que conecte con mi ldap

Le añado la sabe de datos, user name y password de mi ldap

Me conecto por primera vez con mi usuario

Ahora ya puedo entrar y crear tableros y asignarselo a otros usuarios de mi ldap

Creo tateas como administrador, las veo en el tablero:

Tareas hechas como un usuario

Ahora he subido un pdf y creado una tarea con un usuario sin privilegios

Final mente veo los tres proyectos que se han creado desde los distintos usuarios

Creo otra tarea conun usuario con permisos