Édito du 09/12/2018

Et bien après des mois d’attente, la doc sur le client FreeIPA (gestion d’identité centralisé sous Linux) est enfin disponible.

Bien sur elle n’est pas à 100% complète, mais au moins elle traite des points principaux avec l’installation du client et la gestion des règles sudo des utilisateurs.

Prochaine étape à ce sujet sera « La gestion des partages« .

Je vais quand même faire le tour pour voir si je n’ai rien oublié entre la documentation sur le serveur et celle sur le client. N’hésitez pas à me faire dire si vous voyer des manques ou autres…

Je vais pouvoir terminer le script de mise en service du client et attaquer celui pour le déploiement en masse avec « Ansible ».

Prochaine documentation en route :

  • Docker (disponible théoriquement la semaine prochaine)
  • Katello/Foreman (A voir selon disponibilité)
  • OpenShift (En cours)
  • OpenStack (A définir)


FreeIPA le client :

Partie principale

Pour commencer voici la machine virtuel qui servira de test pour cette procédure :

  • 2 vcpu (processeurs virtuel)
  • 4096Mo de mémoire (à voir siil y a besoin de plus)
  • 1 disques de 40 Go
  • 1 carte réseau connecté au proxy (configurer en http://10.0.1.5:3128pour les besoins de l’infrastructure de test) non filtrant pour lemoment.
  • Accélération 3D par virtio
  • Système utilisé : Fedora29 net-install
  • Environnement graphique PLASMA/KDE pour des raisons d’habitude
  • 1 utilisateur local super-utilisateur ‘ROOT’
  • 1 utilisateur distant ‘sudotest’

Dans un premier temps je vais me concentrer sur la mise en service du client. Nous verrons les différentes possibilités au fur et à mesure.

Pour commencer installation du système :
Ici il n’y a pas grand-chose à faire et choisir KDE Workspace en environnement. Il faut aussi ajouter les options ‘adhésion au domaine’, mais ce n’est pas forcément utile, car vous pouvez l’installer par la suite (voir ci-dessous).

Pensez à configurer le réseau en mettant le nom d’hôte (ici f29test1.testipa.local) et en choisissant comme DNS celui du serveur IPA (ici : 10.0.1.10)

Il est aussi utile de configurer le proxy pour dnf et pour l’environnement :

vi /etc/dnf/dnf.conf

il faut ajouter :

proxy=http://IPduPROXY:Port

dans /etc/environnement:

vi /etc/environnement

il faut ajouter ( à voire selon vos préférences) :

https_proxy=https://IPduPROXY:Port
http_proxy=http://I
PduPROXY:Port
no_proxy=IPfreeIPA,IPduPROXY,IPlocal,localhost,.VotreDomaine,hostname.votredomaine,hostname

Si vous n’avez pas ajouté l’option ‘adhésion à un domaine’, il faut installer le client FreeIPA comme suit :

Fedora

dnf install freeipa-client

Ou sur CentOS/RedHat :

yum install ipa-client

Le reste de la procédure est identique quel que soit la version choisi.
En root : (en partant du principe que vous utilisiez une net-install ou une version serveur)
Il faut vous connecter avec cet utilisateur.
Si vous utilisez « SUDO »il faut rajouter ‘sudo -i’ devant chaque commande (voir la documentation de SUDO … LIENS DOCUMENTATION SUDO…).
Nous verrons si il y a lieu de configurer SUDO et les ‘display managers’ (login manager est plus exact chez moi…) par la suite, car il y a parfois des petites subtilités à connaître.

J’ai créer un script permettant de faire toute la procédure simplement, mais il est encore à l’état embryonnaire et incomplet pour le moment. Je termine un projet professionnel avant de reprendre le développement.
En l’état il est quand même fonctionnel, mais il faut que j’y apporte des modifications pour pouvoir le faire travailler avec ‘ansible’ pour pouvoir le déployer sur toutes nouvelles machines d’un réseau automatiquement.

Le # représente votre utilisateur ‘ROOT’, il est inutile de le recopier !!!

[root@f29test1 ~]# ipa-client-install –mkhomedir
This program will set up FreeIPA client.
Version 4.7.0
Discovery was successful!
Client hostname: f29test1.testipa.local
Realm: TESTIPA.LOCAL
DNS Domain: testipa.local
IPA Server: ipatest1.testipa.local
BaseDN: dc=testipa,dc=local
Continue to configure the system with these values? [no]: yes
Synchronizing time
No SRV records of NTP servers found and no NTP server or pool address was provided.
Using default chrony configuration.
Attempting to sync time with chronyc.
Process chronyc waitsync failed to sync time!
Unable to sync time with chrony server, assuming the time is in sync. Please check that 123 UDP port is opened, and any time server is on network.

User authorized to enroll computers:admin

Password for admin@TESTIPA.LOCAL:xxxxxxxxx

Successfully retrieved CA cert
   Subject:     CN=Certificate Authority,O=TESTIPA.LOCAL
   Issuer:      CN=Certificate Authority,O=TESTIPA.LOCAL
   Valid From:  2018-10-19 10:47:57
   Valid Until: 2038-10-19 10:47:57
Enrolled in IPA realm TESTIPA.LOCAL
Created /etc/ipa/default.conf
Configured sudoers in /etc/nsswitch.conf
Configured /etc/sssd/sssd.conf
Configured /etc/krb5.conf for IPA realm TESTIPA.LOCAL
Systemwide CA database updated.
Hostname (f29test1.testipa.local) does not have A/AAAA record.
Missing reverse record(s) for address(es): 10.0.1.102.
Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub
SSSD enabled
Configured /etc/openldap/ldap.conf
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring testipa.local as NIS domain.
Client configuration complete.
The ipa-client-install command was successful
[root@f29test1~]#

Pour confirmer que l’hôte est joint au domaine :


[root@f29test1 ~]# kinit admin
Password for admin@TESTIPA.LOCAL: xxxxxxx
[root@f29test1~]#

[root@f29test1~]# ipa-join
Hôtedéjà joint.
[root@f29test1 ~]#

Première initialisation de l’utilisateur:
Il est possible que l’utilisateur ne puisse pas s’initialiser à la première connexion en mode graphique (problème rencontré principalement avec SDDM). Il est donc préférable de le faire en ligne de commande comme suit :

[root@f29test1 ~]# kinit sudotest
Password for sudotest@TESTIPA.LOCAL: xxxxxxx
Password expired. You must change it now.
Enter new password: xxxxxxxx
Enter it again: xxxxxxxx

Pour vous connecter :

[root@f29test1 ~]# su – sudotest@testipa.local
Creating home directory for sudotest.
[sudotest@f29test1 ~]$


Vous pouvez vous connecter par interface graphique avec votre ‘display manager’ favori en tapant :

login :Testeur@testipa.local
mdp : Mot de passe de votre utilisateur sur le domaine

Gestion des droits SUDO :

Pré-requis :
Il est parfois utile :

  • Soit de faire le ménage dans ssd (A rajouter la commande pour le faire automatiquement)
  • Soit de relancer votre machine

Il ne faut pas oublier quand vous ajouter une commande superutilisateur à la liste des commande sudo d’utiliser le chemin absolu de la commande.
Exemple de commande :
/usr/bin/dnf repolist all
Par la suite vous pouvez les utiliser directement :

[sudotest@f29test1 ~]$ sudo dnf repolist all
Mot de passe : XXXXXXX
Dernière vérification de l’expiration des métadonnées effectuée il y a 0:33:10 le dim. 09 déc. 2018 04:25:04 EST.
id du dépôt nom du dépôt état
*fedora …..

Commandes SUDO avec IPA :
Je vous laisse découvrir les différentes options pour pouvoir gérer sudo directement avec freeipa

[sudotest@f29test1 ~]$ ipa sudo
sudocmd-add sudorule-add-runasgroup
sudocmd-del sudorule-add-runasuser
sudocmd-find sudorule-add-user
sudocmdgroup-add sudorule-del
sudocmdgroup-add-member sudorule-disable
sudocmdgroup-del sudorule-enable
sudocmdgroup-find sudorule-find
sudocmdgroup-mod sudorule-mod
sudocmdgroup-remove-member sudorule-remove-allow-command
sudocmdgroup-show sudorule-remove-deny-command
sudocmd-mod sudorule-remove-host
sudocmd-show sudorule-remove-option
sudorule-add sudorule-remove-runasgroup
sudorule-add-allow-command sudorule-remove-runasuser
sudorule-add-deny-command sudorule-remove-user
sudorule-add-host sudorule-show
sudorule-add-option
[sudotest@f29test1 ~]$

Gestion SUDO avec l’interface graphique de FreeIPA:

Gestion des commandes SUDO (exemple /bin/bash)
Ajout d’une commande SUDO (mettre le chemin absolu, ici : /bin/bash)
Gestion des groupes de commandes SUDO
Ajout des commandes SUDO pré-établis au groupe choisi (ici sudoqtestcmdg)
Liste des commandes SUDO disponible pour ajout au groupe
Gestion des règles SUDO
Gestion de la règle SUDO (ajout  d’un ou plusieurs utilisateur(s), groupe d’utilisateurs, hôte(s) ou groupe d’hôtes, commande(s), groupe de commandes, etc…)
Gestion des règles SUDO de l’utilisateur (s’applique aussi aux groupes d’utilisateurs, hôte(s) et groupe d’hôtes

Voici la fin de cette partie consacré à la mise en place simple d’un client FreeIPA.
Je pense par la suite ajouter d’autres parties comme

  • la gestion Active-Directory (MS Windows) -> FreeIPA et inversement
  • La connexion utilisateur avec jeton OTP (double système d’authentification)
  • La politique HBAC, de mots de passe, Kerberos et surtout SELINUX
  • Les montages automatique (partie la plus importante à faire en priorité)

Je rajouterai d’autres partie selon ce que j’expérimenterai.
N’hésitez pas à me faire savoir si vous avez des remarques ou des ajouts à faire.

Édito : 05/12/2018

Je vous annonce la fin de la doc sur le client FREEIPA ce week end si tout vas bien.

Une nouvelle version des paquets MESA git est en route pour demain avec pas mal de nouveautés d’après les rapports des développeurs. Je verrai si je peux trouver des informations plus pertinentes. Par contre certaines demandera la mise à jour vers le noyau 4.20 et le futur 4.21.

Pas plus de choses à dire aujourd’hui.

Édit : Et bien j’ai eu une surprise ces derniers jours. Mon écran 27″ IPS LG à en partie rendu l’âme. C’est au niveau de la prise HDMI, du coup j’utilise le port VGA avec un adaptateur HDMI.
J’ai tout de même avancé l’ajout d’un écran Samsung C27H70 plus performant (surtout niveau jeux…). Ce n’était pas à l’ordre du jour, mais bon cela me permet de remplacer mon vieux 19″ Asus qui vas partir vers d’autres horizon. Soit sur le NAS, soit sur une autre machine d’appoint.

Je ferai une présentation de cet écran plus en détail ce week-end après avoir terminé la mise en ligne de la finalisation de la doc sur le client FreeIPA.
Par la suite j’attaque celle sur Katello/Foreman et sans doute sur OpenShift, ainsi que celle sur docker.

Je pense aussi ajouter une petite rubrique « Cinéma/films/séries » avec mon ressenti perso sur ce que je vais voir et regarde en ce moment.
Je commencerai sans doute par le dernier qui était « Asterix et le secret de la potion magique« .