Gestion d’un domaine sous Ubuntu – 7 – Configurer des clients Ubuntu

Article en cours de modifications

7 – Configurer des clients Ubuntu

Les clients vont être configurés de sorte que le répertoire Home soit monté à partir du serveur et que la paire utilisateur / mot de passe soit vérifié par ldap et kerberos.

Nous n’allons pas aborder l’installation d’une machine sous Ubuntu, néanmoins, pendant l’installation, je vous recommande de créer un utilisateur local, par exemple « localadmin” dont le nom ne sera pas utilisé sur le réseau. Nous l’utiliserons pour configurer la machine.

D’autre part, lors de l’installation, il est important d’utiliser le nom d’hôte FQDN pour renseigner le nom de la machine, par exemple : monpc.exemple.local

Si vous travaillez sur une machine qui a déjà été installé, alors il suffit de modifier le fichier /etc/hosts et changer la ligne :

127.0.1.1 monpc

par

127.0.1.1 monpc.exemple.local monpc

 

 Installation des paquetages d’authentification

Voici les paquets à installer en premier :

sudo aptitude install sssd krb5-user nfs-common

Si vous avez suivi ce guide depuis le début, la plus parts des informations seront probablement fournies par le serveur DHCP.

Si le système pose la question, « Entrez votre royaume Kerberos version 5 par défaut », tapez : “EXEMPLE.LOCAL”

L’adresse du serveur kerberos est : “bidule.exemple.local”

L’adresse du serveur administratif : “bidule.exemple.local”

L’adresse du serveur LDAP : “ldap://bidule.exemple.local/”

La base de recherche du serveur LDAP “dc=exemple,dc=local”

Il y a un bug non résolu sous Ubuntu, dans certains cas, le script qui génère le fichier /etc/sssd.conf ne fonctionne pas. Si c’est votre cas, il faut configurer sssd.conf manuellement, comme ceci :

 

sudo nano /etc/sssd/sssd.conf

[sssd]
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = exemple.local

[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3

[pam]
reconnection_retries = 3

[domain/exemple.local]
; Using enumerate = true leads to high load and slow response
enumerate = false
cache_credentials = true

id_provider = ldap
auth_provider = krb5
chpass_provider = krb5

ldap_uri = ldap://ldap.exemple.local
ldap_search_base = dc=exemple,dc=local
ldap_tls_reqcert = never

krb5_kdcip = kerberos.exemple.local
krb5_realm = EXEMPLE.LOCAL
krb5_changepw_principle = kadmin/changepw
krb5_auth_timeout = 15

Pour que sssd démarre correctement, le fichier de configuration ne doit être lisible que par root. Si le fichier exeistait déjà au moment de l’édition, cette étape n’est pas nécessaire.

sudo chmod 600 /etc/sssd/sssd.conf

Maintenant, vous pouvez redémarrer sssd

sudo service sssd restart

Pour l’instant, vous pourriez changer d’utilisateur dans un terminal, mais il n’est pas encore possible d’ouvrir une session graphique : les utilisateurs du domaine n’ont pas de répertoire home sur la machine client.

Les répertoires /home

Bien que les machines clients puissent récupérer la configuration kerberos à travers le DNS, Kadmin ne le supporte complètement.
Il va donc falloir faire un petit changement dans « /etc/krb5.conf » sur les machines clients pour rendre les étapes suivantes beaucoup plus facile.

sudo dpkg-reconfigure krb5-config

Entrez le nom du domaine à nouveau (EXEMPLE.LOCAL – Le nom devrait déjà apparaître) et à la question voulez-vous ajouter les informations de domaine au fichier /etc/krb5.conf, choisissez OUI, et non pas la selection par défaut.
Finalement, entrez les adresses des serveur kerberos et admin (les deux étant kerberos.exemple.local).

Maintenant, nous allons créer un principal sur kerberos pour NFS sur la machine client :

kadmin -p MonNomDUtilisateur/admin -q « addprinc -randkey nfs/monpc.exemple.local »

En ayant spécifié le serveur admin dans « /etc/krb5.conf », nous pouvons lancer dette commande à partir de la machine client. Attention au copier/coller, les guillemets ne sont pas toujours bien recopiés.

Maintenant, nous devons ajouter le principal nouvellement créé sur le serveur au fichier « keytab » de la machine cliente:

sudo kadmin -p MonNomDUtilisateur/admin -q « ktadd nfs/monpc.exemple.local »

 

 

En cas de problème :

Si le message d’erreur est :

kadmin: Cannot contact any KDC for requested realm while getting initial credentials

Signifie que « kinit » ne peut pas contacter le serveur kerberos

kadmin: Cannot resolve network address for KDC in requested realm while getting initial credentials

Signifie que « kinit » ne trouve pas l’adresse du serveur kerberos.

 

Sur le client, vérifier la résolution de nom :

ping bidule

ping bidule.exemple.local

nslookup bidule

nslookup bidule.exemple.local

La réponse doit être l’IP du serveur bidule.

Si « nslookup » résous le nom du serveur mais « ping » ne le fait pas, soit le client ne fait pas la demande au serveur DNS, soit il y a un problème avec le serveur DNS.

Pour vérifier la résolution de nom, regardez le fichier nsswitch.conf :

s’il contient la ligne suivante :

host:   files mdns4_minimal [NOTFOUND=return] dns mdns4

alors, il faut changer cette ligne par :

host: files dns mdns4_minimal msdns4

En dernier recours, vous pouvez ajouter l’IP du serveur bidule.exemple.local dans le fichier « /etc/hosts » du client.

Mais cette manipulation ne permet pas de profiter des avantages du DNS.

Sur le serveur, vérifier qu’il « écoute » les requêtes :

netstat -an

Ceux-ci doivent apparaître :

tcp        0      0 0.0.0.0:88              0.0.0.0:*               LISTEN

udp        0      0 0.0.0.0:88              0.0.0.0:*

Sur le serveur, vérifier le firewall :

sudo ufw status verbose

Voici les ports à ouvrir : http://web.mit.edu/Kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-admin/Configuring-Your-Firewall-to-Work-With-Kerberos-V5.html

 

Installer et configurer NTP

sudo aptitude install ntp

 

Modifiez la configuration du serveur ntp :

sudo vi /etc/ntp.conf

 

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
server Monserver.example.local
server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org

Redémarrez le service ntp

sudo service ntp restart

Pour vérifier que le service ntp sur le serveur et le client fonctionne bien, il faut utiliser la commande suivante:

ntpq -p

ce qui peut donner une réponse telle que :

     remote           refid         st t when poll reach   delay     offset     jitter
==============================================================================
Monserver.local.    94.23.205.58     3 u   64   64    1        0.669    -131.45   0.001
+panopea.unstabl  192.93.2.20      2 u   39   64   377     23.224  123.021   26.705
+ntp.tuxfamily.n 145.238.203.14    2 u   46   64   377     44.511   74.921    39.609
-saturnaab.iroqw 88.191.135.237    3 u   20   64   377     32.040  129.435   28.513
*www.jup-coburg. 193.67.79.202     2 u   48   64   377     23.048   75.710   40.238
-europium.canoni 193.79.237.14     2 u   44   64   377     25.927  131.127   33.476

Configuration de NFS

Nous allons configurer NFS pour l’utilisation de kerberos en modifiant le fichier « /etc/default/nfs-common » :

# If you do not set values for the NEED_ options, they will be attempted
# autodetected; this should be sufficient for most people. Valid alternatives
# for the NEED_ options are « yes » and « no ».

# Do you want to start the statd daemon? It is not needed for NFSv4.
NEED_STATD=

# Options for rpc.statd.
# Should rpc.statd listen on a specific port? This is especially useful
# when you have a port-based firewall. To use a fixed port, set this
# this variable to a statd argument like: « –port 4000 –outgoing-port 4001 ».
# For more information, see rpc.statd(8) or http://wiki.debian.org/?SecuringNFS
STATDOPTS=

# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=yes

 

AutoFS

Deux manières de procéder.

Manuellement :

Nous allons installer et configurer autofs pour monter le répertoire home au login de l’utilisateur.

Installation du paquet Autofs :

sudo aptitude install autofs

Pour la configuration, nous modifions le fichier « /etc/auto.master ».

sudo vi /etc/auto.master

Voici le fichier exemple donné par Ubuntu :

#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).
#
#/misc /etc/auto.misc
#
# NOTE: mounts done from a hosts map will be mounted with the
# « nosuid » and « nodev » options unless the « suid » and « dev »
# options are explicitly given.
#
#/net -hosts
#
# Include central master map if it can be found using
# nsswitch sources.
#
# Note that if there are entries for /net or /misc (as
# above) in the included master map any keys that are the
# same will not be seen as the first read key seen takes
# precedence.
#
+auto.master

La dernière ligne ne doit pas être commentée.

Chaque point de montage est associé à un fichier de configuration.

Nous allons créer un nouveau fichier pour notre partage NFS

Ajouter la ligne suivante au fichier « /etc/auto.master » :

/home /etc/auto.home

Ceci va créer un point de montage dans /home et le configurer en fonction des paramètres du fichier  « /etc/auto.home » que nous allons créer.

sudo vi /etc/auto.home

Ce fichier doit contenir une ligne par partage NFS en suivant le format :  {mount point} [{mount options}] {location}.

*    -fstype=nfs4,rw,hard,intr,fsc,sec=krb5    bidule.exemple.local:/home/&

Ceci va permettre de monter automatiquement les répertoires dans /home lors de leur accès. Ce qui donnera accès à tous les utilisateurs.

Il ne reste plus qu’à démarrer le service autofs :

sudo service autofs restart

Automatiquement :

On the client

There are three files you need to concern yourself with:

/etc/default/autofs
/etc/autofs_ldap_auth.conf
/etc/nsswitch.conf

/etc/default/autofs

Open up /etc/default/autofs and read it though. Some of the entries are explained in more detail in man auto.master. What follows are the minimal settings to get autofs talking to your LDAP tree.

MASTER_MAP_NAME= »ou=auto.master,ou=automount,ou=admin,dc=example,dc=com »

You could write this in the form //servername/ou=auto.master… instead; without it autofs will check nsswitch for the server location, which is fine.

LOGGING= »verbose »

Be sure to uncomment it. Log output goes to var/log/syslog You can set it back to its default later but for now you really want it on. Use « debug » instead for even more detailed output.

LDAP_URI= »ldap://192.168.x.x »

The address of your LDAP server. Use ldaps:// if your setup calls for it, though you may wish to test that everything else works before adding encryption into the mix.

SEARCH_BASE= »ou=automount,ou=admin,dc=example,dc=com »

Where in the tree autofs should look for auto.master

# Define the LDAP schema to used for lookups
#
# If no schema is set autofs will check each of the schemas
# below in the order given to try and locate an appropriate
# basdn for lookups. If you want to minimize the number of
# queries to the server set the values here.
#
# (…)
#
MAP_OBJECT_CLASS= »automountMap »
ENTRY_OBJECT_CLASS= »automount »
MAP_ATTRIBUTE= »ou »
ENTRY_ATTRIBUTE= »cn »
VALUE_ATTRIBUTE= »automountInformation »

If using a different schema, uncomment the one that applies to you.

autofs_ldap_auth.conf

The contents of this file will vary greatly depending on your LDAP and NFS setup. You should read man autofs_ldap_auth.conf for a full description. The default config looks like this:

<autofs_ldap_sasl_conf usetls= »no » tlsrequired= »no » authrequired= »no » />

This is sufficient for many « basic » configurations, allowing reads without any extra authentication. TLS users will want to change the usetls and (if applicable) the tlsrequired entries to « yes ». If you are using your own Certificate Authority to sign your certs, you need the CA certificate installed on the client machine and it’s location defined in ldap.conf (see below).

If your NFS setup relies on Kerebos authentication, you need to add/change the following lines:

authrequired= »yes »
authtype= »GSSAPI »
clientprinc= »user1@EXAMPLE.COM »
credentialcache= »/tmp/krb5cc_0″

Change the values of clientprinc and credentialcache to match your setup.

nsswitch.conf

Lastly, you have to add the LDAP map to the automount entry of /etc/nsswitch.conf. Edit your /etc/nsswitch.conf and add the line:

automount: files ldap

If you haven’t already (and you may have for other purposes), you should also edit /etc/ldap/ldap.conf with the appropriate values for your LDAP server:

BASE dc=example,dc=com
URI ldap://ldap.example.com

#If using TLS:
TLS_CACERT /usr/share/ca-certificates/example.com/cacert.pem

Launch

Start or restart autofs:

sudo /etc/init.d/autofs restart

or

sudo service autofs restart

Have a look in /var/log/syslog:

Apr 7 12:54:44 vm-sandbox1 automount[7951]: Starting automounter version 5.0.5, master map ou=auto.master,ou=automount,ou=sysconfig,dc=tempe,dc=grindwork,dc=com
Apr 7 12:54:44 vm-sandbox1 automount[7951]: using kernel protocol version 5.01
Apr 7 12:54:44 vm-sandbox1 automount[7951]: ignoring duplicate indirect mount /common
Apr 7 12:54:44 vm-sandbox1 automount[7951]: mounted indirect on /common with timeout 60, freq 15 seconds
Apr 7 12:54:44 vm-sandbox1 automount[7951]: ghosting enabled

So far, so good – it found auto.master. Try to ls or cd to your subdirectories and make sure they mount properly. If the mount is failing at any point, check the log again and see what it’s complaining about. Restart autofs again after making configuration changes.

CacheFS

Pour améliorer les performances du répertoire NFS Home, nous allons utiliser « CacheFS ».

Premièrement, il faut l’installer :

sudo aptitude install cachefilesd

Puis, il faut l’activer en modifiant le fichier « /etc/default/cachefilesd » :

sudo nano /etc/default/cachefilesd

# Defaults for cachefilesd initscript
# sourced by /etc/init.d/cachefilesd

# You must uncomment the run=yes line below for cachefilesd to start.
# Before doing so, please read /usr/share/doc/cachefilesd/howto.txt.gz as
# extended user attributes need to be enabled on the cache filesystem.
RUN=yes

# Additional options that are passed to the Daemon.
DAEMON_OPTS= » »

Soyer sûr d’avoir utilisé l’option « fsc » dans le fichier « /etc/auto.home » pour monter le partage NFS.

Démarrez le service :

sudo service cachefilesd restart

Droits Administrateurs

Nous voulons que les membres du groupe domainadmins aient les droits administrateur sur les machines clients :

sudo visudo

Ajoutez la ligne « %domainadmins… » :

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
%domainadmins ALL=(ALL:ALL) ALL

Pour que les membres du groupe domainadmins puissent utiliser les programmes graphiques en tant qu’administrateur, nous allons utiliser « polkit » pour donner les droits nécessaires :

sudo nano /etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf

Ajoutez “;unix-group:10000″ au fichier :

[Configuration]
AdminIdentities=unix-group:sudo;unix-group:admin;unix-group:10000

Remplacez « 10000 » avec l’ID du groupe administrateur. Si vous avez suivi ce guide depuis le début, ce devrait être « 10000 », mais vous pouvez vérifier en lançant la commande “getent group” sur le serveur.

Attention, il ne faut pas spécifier le nom du groupe (domainadmins) dans le fichier à cause d’un bug.

LightDM – The Login Screen

Par défaut, la page de login sous Ubuntu 12.04 liste les utilisateurs du système local. Nous voulons pouvoir entrer un nom d’utilisateur manuellement. Pour cela, il faut modifier le fichier « /etc/lightdm/lightdm.conf »

sudo nano /etc/lightdm/lightdm.conf

Ajoutez “greeter-hide-users=true” au fichier comme suit :

[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
greeter-hide-users=true

Vous pouvez également ajouter “allow-guest=false” pour désactiver le compte invité.

Redémarrez la machine et c’est terminé.

 Débogage

Si vous avez des problèmes avec le montage automatique du Home ou des problèmes d’authentification ldap sur les machines clients, supprimez le « principals » Kerberos pour le client et ajoutez le à nouveau:

sudo kadmin

ktremove nfs/client.example.com
delprinc nfs/client.example.com

Ajouter les hosts à Kerberos peut aussi aider :

addprinc -randkey host/client.example.com
ktadd host/client.example.com

 

Pour tester le serveur NFS :

showmount -e bidule.exemple.local

 

Pour activer le logging (ce qui n’est pas le cas par défaut), modifier la ligne LOGGING=du fichier /etc/default/autofs:

LOGGING= »verbose »

Après avoir redémarré le service autofs, le log est visible dans /var/log/syslog

Webographie :

http://users.ece.cmu.edu/~allbery/lambdabot/logs/kerberos/2011-08-11.txt

http://www.danbishop.org/2012/06/02/ubuntu-12-04-ultimate-server-guide-first-draft/7/#part-7-connecting-ubuntu-clients

http://diablotins.org/index.php/Nsswitch.conf

http://autofs.org/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.