Monter des Partages Windows en utilisant l'Authentification Kerberos sur Debian GNU/Linux
- Mise à jour le 05 févr. 2023

Dans un environnement Microsoft Windows, il est possible de monter facilement un partage réseau depuis GNU/Linux en utilisant la commande mount et l'utilitaire cifs. L'avantage réside dans la simplicité du processus de configuration. Cependant, l'inconvénient est qu'il repose sur l'utilisation du protocole NTLM (v1 et v2) pour l'authentification qui est obsolète et peu sécurisé pour l'authentification des utilisateurs, ce qui présente des risques en terme de sécurité en raison de son ancienneté et de son manque de robustesse.
Heureusement, il existe une méthode alternative pour le montage de partages Windows depuis Linux qui offre une sécurité nettement renforcée grâce à l'utilisation de Kerberos. Contrairement à NTLM, Kerberos est un protocole d'authentification plus récent et nettement plus sécurisé. Bien que sa mise en œuvre nécessite une configuration plus complèxe, les améliorations substantielles en matière de sécurité qu'il offre font qu'ils devrait être utilisé en priorité.
Cet article est dédié à vous guider étape par étape dans le processus d'établissement et de configuration de l'authentification basée sur Kerberos, vous permettant de monter en toute sécurité des partages Windows sur les systèmes GNU/Linux.
Architecture du Réseau
- Pour cet exemple, nous utiliserons l'architecture suivante :
- Un domaine Windows : std.local
- Un partage Windows : hébergé sur un serveur Active Directory, accessible via \\ad.std.local\SHARE\
- Un utilisateur Windows avec des droits d'accès au partage : j.valmer@std.local
- Un client GNU/Linux : une installation standard de Debian
- Le partage sera monté depuis l'utilisateur john sur le système Debian

Installation et Configuration
⚠️ Prérequis : Assurez-vous que l'horloge des serveurs Windows et Debian est synchronisée. ⚠️
- Installer les prérequis :
root@desktop:~# apt update && apt install cifs krb5-user ntp
- Modifier le fichier
/etc/resolv.conf
et ajouter le serveur AD en tant que DNS principal :
domain std.local
search std.local
nameserver 192.168.1.200
- Éditer le fichier
/etc/krb5.conf
:
[libdefaults]
default_realm = STD.LOCAL
ticket_lifetime = 1d
renew_lifetime = 7d
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
STD.LOCAL = {
kdc = ad.std.local
admin_server = ad.std.local
}
Montage
Prérequis
- Identifier l'
UID
:
john@desktop:~$ id -u
1000
- Identifier le
GID
:
john@desktop:~$ id -g
1000
- Obtenir son nom d'utilisateur :
john@desktop:~$ echo $USER
john
- Créer la destination du montage :
john@desktop:~$ sudo mkdir /mnt/win_share
Montage Classique avec Authentification NTLM
- Comprendre les options suivantes :
domain=
: définit le domaine de l'utilisateuruid=
: définit l'UID qui sera propriétaire de tous les fichiers ou répertoires du système de fichiers monté lorsque le serveur ne fournit pas d'informations de propriété.gid=
: définit le GID qui sera propriétaire de tous les fichiers ou répertoires du système de fichiers monté lorsque le serveur ne fournit pas d'informations de propriété.
john@desktop:~$ sudo mount -t cifs username=j.valmer,domain=std.local,uid=1000,gid=1000 //192.168.1.200/SHARE /mnt/win_share
Montage avec Authentification Kerberos
- Obtenir un ticket ; attention car sensible à la casse :
john@desktop:~$ kinit j.valmer@STD.LOCAL
Mot de passe pour j.valmer@STD.LOCAL :
- Vérifier que le ticket a bien été obtenu :
john@desktop:~$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: j.valmer@STD.LOCAL
Valid starting Expires Service principal
09/08/2023 18:19:54 10/08/2023 04:19:54 krbtgt/STD.LOCAL@STD.LOCAL
renew until 10/08/2023 18:19:50
09/08/2023 18:19:59 10/08/2023 04:19:54 cifs/ad.std.local@
renew until 10/08/2023 18:19:50
Ticket server: cifs/ad.std.local@STD.LOCAL
- Comprendre les options suivantes :
- Utiliser le SPN (Nom Principal de Service) du nom du serveur pour indiquer le chemin du partage ; ne pas l'adresse IP. Cela est utilisé pour l'authentification avec Kerberos.
cruid=arg
: Définit l'UID du propriétaire du cache d'informations d'identification. C'est principalement utile avecsec=krb5
.sec=krb5i
: Utilise l'authentification Kerberos version 5 et active de force la signature des paquets. (krb5 seul n'active pas la signature des paquets).
john@desktop:~$ sudo mount -t cifs cruid=john,user=john,sec=krb5i,uid=1000,gid=1000 //ad.std.local/SHARE /mnt/win_share