Post

cwwk KVM - Serveur LLDAP (Alpine Linux vm-lldap)

cwwk KVM - Serveur LLDAP (Alpine Linux vm-lldap)

Alpine Linux est une distribution Linux ultra-légère pour héberger un serveur LLDAP

Alpine Linux

Création machine virtuelle Alpine de type KVM avec 2 Go de RAM, 1 cœur de processeur et 5 Go de disque dur.

Créer vm-lldap sur un serveur

Les dernières images Alpine Linux

Création d’une image virtuelle vm-lldap sous le serveur cwwk On se connecte sur le serveur cwwk en SSH

1
ssh yick@192.168.0.205 -p 55205 -i /home/yann/.ssh/yick-ed25519

puis on exécute la commande suivante pour créer une machine virtuelle Alpine avec 2 Go de RAM, 1 cœur de processeur et 5 Go de disque dur

1
2
3
4
5
6
7
8
9
10
11
sudo virt-install \
--osinfo alpinelinux3.17 \
--name vm-lldap \
--memory 1024 \
--vcpus 1 \
--cpu host \
--hvm \
--disk path=/srv/kvm/libvirt/images/vm-lldap.qcow2,format=qcow2,size=5 \
--cdrom /mnt/FreeUSB2To/iso/alpine-standard-3.21.0-x86_64.iso \
--network bridge=virbr0 \
--graphics vnc  

Note: La dernière version Alpine Linux est alpinelinux3.20 au 10/07/2024 mais KVM ne connait que alpinelinux3.17 (sudo virt-install --osinfo list |grep alpine)

Après exécution dans un terminal de la commande ci dessus, on arrive sur l’écran suivant

Configurer vm-lldap

Le serveur cwwk n’a pas d’affichage, il faut créer un tunnel ssh depuis un poste client

1
ssh -L 9500:127.0.0.1:5900 yick@192.168.0.205 -p 55205 -i /home/yann/.ssh/yick-ed25519

Puis lancer de ce même poste un client VNC

la console s’affiche

Une fois l’image ISO lancée, on arrive à un invite de connexion.
Indiquez root comme nom d’utilisateur, aucun mot de passe ne vous sera demandé à cette étape.

Le système est utilisable, mais on veut l’installer, ce qui passe par la commande suivante (clavier qwerty)

1
setup-alpine # saisir setup)qlpine

Une suite de questions :

mot de passe root (rtyuiop)

APK mirror (f) ,patienter …

Utilisateur/mp aluser/aluser49

Relever l’adresse ip allouée : ip a –> 192.168.10.138
Puis redémarrer : reboot
La fenêtre vnc se ferme

Vous devez utiliser l’utilisateur pour vous connecter via SSH (impossible avec le compte root)
Sur un terminal linux du serveur cwwk

1
ssh aluser@192.168.10.138

Une fois connecté ,vous pouvez accéder au “root” de manière classique avec la commande :

1
su -

Mise à jour

1
2
3
4
apk update
apk upgrade 
# Vous pouvez fusionner les deux lignes avec 
apk -U upgrade

Editeur nano (Vous pouvez aussi opter pour vi qui est nativement présent sur le système)

1
apk add nano

Supprimer le VNC dans vm-lldap avec le gestionnaire de machine virtuelle

1
2
3
<graphics type="vnc" port="-1" autoport="yes">
  <listen type="address"/>
</graphics>

Réseau - IP statique

How to configure static IP address on Alpine Linux

Le fichier de configuration /etc/network/interfaces

1
/etc/network/interfaces
1
2
3
4
5
6
7
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.10.66/24
        gateway 192.168.10.1

Fichier de résolution dns

1
/etc/resolv.conf
1
2
nameserver 1.1.1.1
nameserver 9.9.9.9

Les modifications apportées à /etc/network/interfaces peuvent être activées en exécutant

1
service networking restart 

OpenSSH avec clés

Connexion ssh sur un autre port avec un jeu de clés

Générer une paire de clé sur l’ordinateur de bureau PC1
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) pour une liaison SSH avec le serveur.

1
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/vm-lldap

Copier la clé publique cat ~/.ssh/vm-lldap.pub dans le presse-papier

1
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBQu0LRiDjPM7BJAfjECl22fnEchVuxnw38RV2IJs0+l yann@yann-pc1

On modifie les droits de la clé privée

1
chmod 600 ~/.ssh/vm-lldap

On se connecte sur la machine virtuelle alpine linux “ttrss alpine-searx”

1
ssh aluser@192.168.10.66

Créer le répertoire et ouvrir nouveau fichier

1
2
mkdir -p $HOME/.ssh/
nano $HOME/.ssh/authorized_keys

Coller le contenu du presse-papier , sauver le fichier et sortir

Modifier les droits

1
chmod 600 $HOME/.ssh/authorized_keys

Passer en mode su

1
su -

Modifier la configuration serveur SSH

1
nano /etc/ssh/sshd_config

Modifier

1
2
Port = 55066
PasswordAuthentication no

Relancer le serveur

1
service sshd restart

Test connexion

1
ssh -p 55066 -i ~/.ssh/vm-lldap aluser@192.168.10.66

sudo

Passer en root

1
su -

Editer la configuration des dépôts

1
nano /etc/apk/repositories

Trouvez maintenant la ligne qui se termine dans /community Ensuite, retirez le # au début de la ligne. Le fichier résultant devrait ressembler à ceci

1
2
3
#/media/cdrom/apks
http://dl-cdn.alpinelinux.org/alpine/v3.21/main
http://dl-cdn.alpinelinux.org/alpine/v3.21/community

Mise à jour des dépôts

1
apk update

Installer sudo

1
apk add sudo

Pas de mot de passe sudo pour l’utilisateur aluser

1
echo "aluser     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

motd

Modifier /etc/motd

1
2
3
4
5
6
7
8
9
10
11
12
    _    _        _              _     _                 
   /_\  | | _ __ (_) _ _   ___  | |   (_) _ _  _  _ __ __
  / _ \ | || '_ \| || ' \ / -_) | |__ | || ' \| || |\ \ /
 /_/ \_\|_|| .__/|_||_||_|\___| |____||_||_||_|\_,_|/_\_\
           |_|    _  _     _                             
 __ __ _ __  ___ | || | __| | __ _  _ __                 
 \ V /| '  \|___|| || |/ _` |/ _` || '_ \                
  \_/ |_|_|_|    |_||_|\__,_|\__,_|| .__/                
  _  ___  ___     _   __  ___     _|_|__      __   __    
 / |/ _ \|_  )   / | / / ( _ )   / | /  \    / /  / /    
 | |\_, / / /  _ | |/ _ \/ _ \ _ | || () |_ / _ \/ _ \   
 |_| /_/ /___|(_)|_|\___/\___/(_)|_| \__/(_)\___/\___/   

Configuration d’un serveur LLDAP

Général

LLDAP est un petit serveur LDAP conçu pour les services d’annuaires sans la surcharge d’un serveur OpenLDAP complet. Le serveur LLDAP est conçu pour une gestion facile à l’aide d’une interface graphique Web simple. Il manque certaines des fonctionnalités trouvées dans d’autres serveurs d’annuaires, car il est spécifiquement conçu pour une utilisation facile.

Prérequis

LLDAP utilise une base Sqlite

1
2
sudo apk -U upgrade
sudo apk add --no-cache sqlite

Installer

L’installation de LLDAP est assez simple et peut être effectuée en moins de 5 minutes. Commencez par vous connecter en tant que root :

1
sudo -s

Ensuite, nous nous assurons que le système est à jour et installons wget

1
apk update && apk upgrade && apk add wget

Ensuite, nous créons le répertoire dans lequel LLDAP va être installé

1
2
3
4
5
6
7
8
mkdir -p /opt/lldap
cd /opt/lldap
# Lien https://github.com/lldap/lldap/releases pour la dernière version lldap
wget https://github.com/lldap/lldap/releases/download/v0.6.1/amd64-lldap.tar.gz
tar xzf amd64-lldap.tar.gz
mv amd64-lldap/* .
rm -rf amd64-lldap*
apk add openldap-clients # les commandes ldapadd, ldapsearch

Configuration

Pour configurer LLDAP, nous devons créer un fichier de configuration et un fichier rc pour un démarrage automatique. Nous générons d’abord 2 chaînes aléatoires à utiliser dans la configuration comme jwt_secret et key_seed :

1
openssl rand -base64 15 && openssl rand -base64 15

Ensuite, nous collons la configuration suivante dans /opt/lldap/lldap_config.toml et remplaçons jwt_secret et key_seed par les valeurs générées aléatoirement :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
ldap_port = 3890
http_port = 17170
http_url = "https://domain.tld"
jwt_secret = "very-long-string"
ldap_base_dn = "dc=domain,dc=tld"
ldap_user_dn = "admin"
ldap_user_email = "admin@domain.tld"
ldap_user_pass = "very-strong-password"
database_url = "sqlite:///opt/lldap/users.db?mode=rwc"
key_seed = "random-string-again"

[smtp_options]
#enable_password_reset=true
#server="smtp.gmail.com"
#port=587
#smtp_encryption = "TLS"
#user="sender@gmail.com"
#password="password"
#from="LLDAP Admin <sender@gmail.com>"
#reply_to="Do not reply <noreply@localhost>"

[ldaps_options]
#enabled=true
#port=6360
## Certificate file.
#cert_file="/data/cert.pem"
## Certificate key file.
#key_file="/data/key.pem"

Remplacez domain.tld par le nom de domaine que vous avez choisi. Ensuite, nous devons créer un fichier openrc pour pouvoir démarrer automatiquement lldap :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cat <<EOF > /etc/init.d/lldap
#!/sbin/openrc-run

name=lldap
command="/opt/lldap/lldap"
command_args="run"
command_background="yes"
pidfile="/run/lldap.pid"

depend() {
        need net
}

start_pre()
{
        cd /opt/lldap
}
EOF

Ce n’est pas un fichier très volumineux, mais il vous permet de démarrer et de garantir que lldap démarre et fonctionne correctement. Nous devons maintenant l’ajouter au niveau d’exécution par défaut et démarrer le service

1
chmod +x /etc/init.d/lldap && rc-update add lldap

Utilisation

Pour utiliser LLDAP, nous pouvons accéder à http://192.168.10.66:17170 et nous connecter avec les informations d’identification que nous avons spécifiées dans le fichier de configuration.

Il s’agit d’une configuration de base. Vous pouvez désormais connecter d’autres services prenant en charge les connexions LDAP à LLDAP.(Setting up a LLDAP server (Article original))

Depuis un un autre poste linux sur le réseau 192.168.10.0/24
Accès aux informations de l’annuaire en ligne de commande

Cet article est sous licence CC BY 4.0 par l'auteur.