Join di Mint a un Dominio Windows: copertina

Ovvero la procedura per unire la linuxbox ad una rete Active Directory.

Le reti Active Diretory (da qui in poi AD) sono molto comuni soprattutto in ambiente aziendale. Offrono molti vantaggi, ma sisitemi come Mac e Linux non sempre hanno un meccanismo di join (=unione al dominio AD) facile come quello dei client Windows.
Vediamo come fare questa operazione iniziando da una premessa poi vedremo i parametri dell'ambiente e successivamente le operazioni da fare. Alla fine riportiamo anche l'operazione da fare per togliere il PC dal dominio,

Premessa

Vediamo 3 aspetti utili da sapere prima di iniziare: la tecnologia AD, differenze tra distro, join via Samba o Kerberos.

Tecnologia AD

Active Diretory è il risultato dell'armonizazzione di diverse tecnologie.
Un primo mattone è il protocollo SMB che permette di condividere dischi e stampanti.
Un secondo mattoncino è l'autenticazione centralizzata.Un piccolo insieme di sistemi che garantisce crittografia, centralizzazione delle utenze, autnticazione dei PC e dei sistemi che si collegano e, naturalmente, autenticazione dell'utente che accede.
Un mattone importante è Kerberos che permette collegamenti e accessi sicuri. Kerberos richiede che tutti i sistemiche si collegano condividano lo stesso orario (con un errore massimo di 5 minuti), pena non viene permessa l'autneticazione ed il collegamento.
Un ultimo importante mattone è LDAP che tiene insieme tutti questi elementi e fa molto altro.
Ebbene buona parte di questo eco sistema va ricreato nella nostra linuxbox per poter accedere all'AD e fare il join.

Differenze tra distro

Alcune distro prevedono tool automatici per il join ad AD. È il caso di Red Hat desktop, ma anche di Ubuntu desktop.
Se segliamo il join ad AD il tool prevede all'installazione di tutto l'eco sistema e alla configurazione.
Altre distro, come Mint, non prevodono automatismi specifici, ma hanno tutti i pacchetti necessari a patto che si proceda, in modo completamente manuale, all'installazione e alla configurazione.

Samba o SSSD?

Per gestire l'autenticazione su AD del nostro Mint possiamo usare Samba o SSSD.
Samba è il sistema storico per creare servizi Windows Serve nel mondo open source. Tra i servizi che offre c'è anche quello dell'autenticazione degli utenti.
Da alcuni anni, però, è stato sviluppato SSSD (System Security Services Daemon), un sistem per l'autenticazione centralizzata, ma che permette anche l'autenticazione locale sostituendo il vecchio PAM.
Quindi possiamo scegliere se configurare la nostra linuxbox con Samba o con SSSD.
In questa guida useremo SSSD.

Ambiente di join

Per procedere è necessario conosere alcuni dati della nostra rete AD:

  • server AD hostname: ad.example.local
  • server AD IP: 192.168.200.2
  • reame AD: EXAMPLE

La configurazione della nostra linuxbox è la seguente:

  • IP: 192.168.200.100/24
  • GW: 192.168.200.1
  • DNS: 192.168.200.2
  • Hostname: PC100

Operazione di join

Apriamo un terminale e aggioniamo il sistema:

sudo apt update
sudo apt upgrade

installiamo i pacchetti aggiuntivi necessari

sudo apt install -y realmd sssd sssd-tools sssd-ad samba samba-common samba-common-bin smbclient krb5-user adcli packagekit gvfs-backends gvfs-fuse wsdd libnss-sss libpam-sss ntpdate

Durante l'installazione di krb5-user viene chiede il realm: EXAMPLE.LOCAL
Viene chiesto anche il server del realm: AD.EXAMPLE.LOCAL

aggiorniamo sudo per rendere amministratori locali gli utenti dei gruppi amministratori per il realm,
Editiamo /etc/sudoers.d/AD-EXAMPLE

sudo nano /etc/sudoers.d/AD-EXAMPLE

e inseriamo il seguente contenuto

## AD Domain Groups and Users
#Adding Domain Admins and it_support as admins
%domain\ admins ALL=(ALL) NOPASSWD:ALL
%it_support ALL=(ALL) NOPASSWD:ALL

Configura Kerberos.
Editiamo /etc/krb5.conf

sudo nano /etc/krb5.conf

e sotituiamo il contenuto con il seguente

[libdefaults]
default_realm = EXAMPLE.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true

[realms]
EXAMPLE.LOCAL = {
kdc = ad.example.local
admin_server = ad.example.local
default_domain = example.local
}

[domain_realm]
.example.local = EXAMPLE.LOCAL
example.local = EXAMPLE.LOCAL

Configuriamo Samba.
Editiamo /etc/samba/smb.conf

sudo nano /etc/samba/smb.conf

svuotiamolo e inseriamo solo il seguente contenuto

[global]
workgroup = EXAMPLE
realm = EXAMPLE.LOCAL
security = ADS
dns proxy = no
kerberos method = secrets and keytab

# Browsing
local master = no
domain master = no
preferred master = no

Verifiche prima del join

  • verifica funzionamento Samba

sudo systemctl restar nmbd smbd

  • verifica che il DNS funzioni

nslookup ad.example.local
nslookup example.local

  • verifica orario sincronizzato con il server

sudo ntpdate ad.example.local

  • ottieniamo un ticket Kerberos

kinit Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
klist

Se kinit funziona siamo pronti per il join!

Join al dominio

sudo net ads join EXAMPLE.LOCAL -S ad.example.local -U administrator

Verifica:

sudo net ads testjoin

Configuriamo SSSD.
Editiamo /etc/sssd/sssd.conf

sudo nano /etc/sssd/sssd.conf

e inseriamo le seguenti stringhe

[sssd]
domains = example.local
config_file_version = 2
services = nss, pam

[domain/example.local]
ad_domain = example.local
krb5_realm = EXAMPLE.LOCAL
realmd_tags = manages-system joined-with-adcli
cache_credentials = true
id_provider = ad
auth_provider = ad
access_provider = ad
ad_server = ad.example.local

# Home directory automatico
default_shell = /bin/bash
fallback_homedir = /home/%d/%u
use_fully_qualified_names = false

securizziamo il file

sudo chmod 600 /etc/sssd/sssd.conf

attiviamo e riavviamo SSSD

sudo systemctl enable sssd
sudo systemctl restart sssd

attiviamo la creazione automatica della home directory

sudo pam-auth-update --enable mkhomedir

configurare LigthDM per il login grafico.
Editiamo /etc/lightdm/lightdm.conf

nano /etc/lightdm/lightdm.conf

e inseriamo le seguenti stringhe

[SeatDefaults]
autologin-guest=false
#autologin-guest=true
greeter-hide-users=true
greeter-show-manual-login=true

verifica finale

  • Verifichiamo che gli utenti AD siano visibili

id Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

  • verificjoamo le condivisioni

smbclient -L ad.example.local -N

  • verifichiamo la visibilità in rete

nmblookup -M EXAMPLE

Lavoro fatto con successo. Possiamo iniziare a usare la nostra linuxbox Mint con i benefici del dominio AD.

Appendice: unjoin

Se vogliamo scollegare la linuxbox Mint dal dominio AD possiamo o operare sul server AD cancellando la macchina connessa al dominio (la PC100), ma in questo caso restano tracce e chiami su PC100 che lo non fanno funzionare correttamente.
L'operazione corretta è procedere con l'unjoin dalla linuxbox PC100:

  • aprire un terminale nella linuxbox PC100
  • dare il comando di unjoin

sudo net ads leave -U administrator

  • verifichiamo lo scollegamento

sudo net ads testjoin

  • cancelliamo eventuali ticket Kerberos rimasti

sudo kdestroy

WebGrafia

https://sssd.io/docs/ad/ad-provider-manual.html