Guide pour intégrer une machine Debian 11 à un domaine Active Directory et configurer SSH avec GSSAPI/Kerberos¶
In this tutorial, we show how to join a debian 11 server
Étape 1 : Préparation de la machine Debian¶
1.1 Renommer la machine¶
Modifier le nom d'hôte selon la politique de l'entreprise :
sudo nano /etc/hostname # Exemple : debian.casdds.casd
sudo hostnamectl set-hostname "nouveau_nom"
Metter à jour /etc/hosts pour inclure le nom et l'IP statique :
sudo nano /etc/hosts # Ajouter : 10.50.5.X debian.casdds.casd
1.2 Mise à jour du système¶
sudo apt update
1.3 Configurer le DNS sur Debian¶
Définir le serveur DNS AD dans /etc/resolv.conf :
search casdds.casd
nameserver 10.50.5.64
nameserver 8.8.8.8
1.4 Installer les paquets nécessaires¶
sudo apt install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin krb5-user oddjob oddjob-mkhomedir packagekit -y
Étape 2 : Joindre le domaine Active Directory¶
2.1. Découvrir le domaine¶
Vérifier la connectivité avec le contrôleur de domaine :
realm discover CASDDS.CASD
2.2. Rejoindre le domaine¶
Utiliser un compte administrateur AD :
sudo realm join --user=Administrateur CASDDS.CASD
{{:datascience:admin_system:linux:capture1.png?400|}} {{:datascience:admin_system:linux:capture2.png?400|}}
Étape 3 : Configuration DNS et Kerberos¶
3.1. Ajouter l'enregistrement DNS sur Windows¶
Dans le serveur DNS Windows :
Ajouter un enregistrement A pour la machine Debian dans la zone Forward Lookup*. (S'il n'est pas présent)
- Créer un enregistrement PTR dans la zone Reverse Lookup.(S'il n'est pas présent) {{:datascience:admin_system:linux:capture1.png?400|}} {{:datascience:admin_system:linux:capture4.png?400|}}
3.2. Enregistrer le SPN (Service Principal Name)¶
Pour assurer que l'enregistrement existant, on tape:
Sur le contrôleur de domaine (PowerShell administrateur) :
setspn -L debian
setspn -S host/debian.casdds.casd debian
ktpass -princ host/debian.casdds.casd@CASDDS.CASD -mapuser DEBIAN$ -pass * -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1
3.3. Vérifier le keytab Kerberos¶
Sur Debian :
klist -k /etc/krb5.keytab # Vérifier la présence de "host/debian.casdds.casd"
Si absent, quitter et rejoigner le domaine :
sudo realm leave CASDDS.CASD
sudo realm join --user=Administrateur CASDDS.CASD
3.4. Génération et déploiement d’un fichier keytab¶
Génération du keytab sur Windows :
ktpass -princ user@CASDDS.CASD -mapuser user -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out user.keytab
scp user.keytab user@debian.casdds.casd:/tmp/
sudo cp /tmp/user.keytab /etc/
sudo chmod 644 /etc/user.keytab
sudo chown root:root /etc/user.keytab
Étape 4 : Configuration de SSSD, PAM et Kerberos¶
4.1. Fichier /etc/sssd/sssd.conf¶
[sssd]
services = nss, pam
domains = casdds.casd
config_file_version = 2
[nss]
homedir_substring = /home
[pam]
[domain/casdds.casd]
ldap_sasl_authid = user@CASDDS.CASD
krb5_keytab = /etc/user.keytab
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = CASDDS.CASD
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = casdds.casd
use_fully_qualified_names = False
ldap_id_mapping = True
access_provider = ad
ldap_group_nesting_level = 2
4.2. Configurer PAM¶
Modifier les fichiers dans /etc/pam.d/ pour inclure pam_sss.so
### /etc/pam.d/common-auth
sudo: unable to resolve host debian118: Name or service not known
auth sufficient pam_unix.so try_first_pass
auth sufficient pam_sss.so use_first_pass
auth required pam_deny.so
### /etc/pam.d/common-account
sudo: unable to resolve host debian118: Name or service not known
account required pam_unix.so
account sufficient pam_sss.so
account required pam_permit.so
### /etc/pam.d/common-password
sudo: unable to resolve host debian118: Name or service not known
password sufficient pam_unix.so
password sufficient pam_sss.so
password required pam_deny.so
### /etc/pam.d/common-session
sudo: unable to resolve host debian118: Name or service not known
session required pam_unix.so
session optional pam_sss.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
4.3. Fichier /etc/krb5.conf¶
[libdefaults]
default_realm = CASDDS.CASD
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
ticket_lifetime = 24h
dns_lookup_realm = true
dns_lookup_kdc = true
dns_canonicalize_hostname = false
rdns = false
allow_weak_crypto = true
# The following libdefaults parameters are only for Heimdal Kerberos.
fcc-mit-ticketflags = true
[realms]
CASDDS.CASD = {
kdc = 10.50.5.64
admin_server = 10.50.5.64
}
…..
[domain_realm]
….
.casdds.casd = CASDDS.CASD
casdds.casd = CASDDS.CASD
Étape 5 : Configuration SSH avec GSSAPI¶
5.1. Sur Debian¶
Modifier /etc/ssh/sshd_config :
UsePam yes
GSSAPIAuthentication yes # l'authentification basée sur GSSAPI pour les connexions SSH
GSSAPICleanupCredentials yes # la suppression automatique des identifiants temporaires obtenus via GSSAPI après leur utilisation pour renforcer la sécurité
GSSAPIKeyExchange yes # sécuriser l'échange de clés, protégeant ainsi le processus de négociation contre les interceptions
GSSAPIStrictAcceptorCheck no # Désactive la vérification stricte de l'identité de l'acceptateur, facilitant les connexions dans des environnements où les noms de principal peuvent varier
/etc/ssh/ssh_config:
Host *
…
GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes # déléguer les identifiants GSSAPI du client au serveur pour
sudo systemctl restart sshd sssd
5.2. Sur Windows¶
Installer OpenSSH via PowerShell:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
C:\ProgramData\ssh\sshd_config :
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
Restart-Service sshd
Étape 6 : Validation¶
6.1. Test Kerberos¶
Sur Debian :
kinit user@CASDDS.CASD # Authentifier avec le mot de passe AD
klist
6.2. Connexion SSH¶
Depuis Windows :
ssh -K user@debian.casdds.casd # -K active la délégation Kerberos
Appendix Notes importantes :¶
- Permissions SSSD : Vérifier que
/etc/sssd/sssd.confa les droits600:
sudo chmod 600 /etc/sssd/sssd.conf