Vai al contenuto

Autenticazione Active Directory con Samba

Prerequisiti

  • Conoscenza di Active Directory
  • Conoscenza di LDAP

Introduzione

Nella maggior parte delle aziende, Active Directory (AD) di Microsoft è il sistema di autenticazione predefinito per i sistemi Windows e per i servizi esterni collegati a LDAP. Consente di configurare utenti e gruppi, controllo degli accessi, autorizzazioni, auto-mounting e altro ancora.

Sebbene la connessione di Linux a un cluster AD non possa supportare tutte le funzionalità menzionate, può gestire utenti, gruppi e controllo degli accessi. È possibile (attraverso alcune modifiche di configurazione sul lato Linux e alcune opzioni avanzate sul lato AD) distribuire chiavi SSH utilizzando AD.

Il modo predefinito di utilizzare Active Directory su Rocky Linux è SSSD, ma Samba è un'alternativa più completa. Ad esempio, la condivisione dei file può essere effettuata con Samba ma non con SSSD. Questa guida, tuttavia, tratterà la configurazione dell'autenticazione per Active Directory utilizzando Samba e non includerà alcuna configurazione aggiuntiva sul lato Windows.

Trovare e join AD usando Samba

Note

Il nome del dominio `ad.company.local` in questa guida rappresenta il dominio Active Directory. Per seguire questa guida, sostituitelo con il nome del vostro dominio AD.

Il primo passo per unire un sistema Linux ad AD è quello di scoprire il cluster AD, per assicurarsi che la configurazione di rete sia corretta su entrambi i lati.

Preparazione

  • Assicurarsi che le seguenti porte siano aperte per l'host Linux sul domain controller:
ServizioPorta(e)Note
DNS53 (TCP+UDP)
Kerberos88, 464 (TCP+UDP)Usato da kadmin per impostare & aggiornare le password
LDAP389 (TCP+UDP)
LDAP-GC3268 (TCP)LDAP Global Catalog - consente di generare ID utenti da AD
  • Assicurarsi di aver configurato il domain controller AD come server DNS sull'host Rocky Linux:

Con NetworkManager:

# dove la tua connessione principale a NetworkManager è 'System eth0' e il tuo server AD
# è accessibile all'indirizzo IP 10.0.0.2.
[root@host ~]$ nmcli con mod 'System eth0' ipv4.dns 10.0.0.2
  • Assicurarsi che l'ora su entrambi i lati (host AD e sistema Linux) sia sincronizzata (vedere chronyd)

Per verificare l'ora su Rocky Linux:

[user@host ~]$ date
Mer 22 set 17:11:35 BST 2021
  • Installare i pacchetti richiesti per la connessione AD sul lato Linux:
[user@host ~]$ sudo dnf install samba samba-winbind samba-client

Rilevare

Ora dovreste essere in grado di rilevare i vostri server AD dall'host Linux.

[user@host ~]$ realm discover ad.company.local
ad.company.local
  type: kerberos
  realm-name: AD.COMPANY.LOCAL
  domain-name: ad.company.local
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common

I record SRV pertinenti memorizzati nel servizio DNS di Active Directory consentiranno la scoperta.

Unirsi

Una volta individuata con successo l'installazione di Active Directory dall'host Linux, si dovrebbe essere in grado di usare realmd per unirsi al dominio, che orchestrerà la configurazione di Samba usando adcli e altri strumenti simili.

[user@host ~]$ sudo realm join -v --membership-software=samba --client-software=winbind ad.company.local

Verrà richiesto di inserire la password di amministratore del dominio, quindi inserirla.

Se questo processo si lamenta della crittografia con KDC has no support for encryption type, provare ad aggiornare la politica globale di crittografia per consentire algoritmi di crittografia più vecchi:

[user@host ~]$ sudo update-crypto-policies --set DEFAULT:AD-SUPPORT

Se il processo ha successo, si dovrebbe essere in grado di estrarre le informazioni passwd per un utente di Active Directory.

[user@host ~]$ sudo getent passwd administrator@ad.company.local
AD\administrator:*:1450400500:1450400513:Administrator:/home/administrator@ad.company.local:/bin/bash

Note

`getent` ottiene le voci dalle librerie Name Service Switch (NSS). Ciò significa che, al contrario di `passwd` o `dig` per esempio, interrogherà diversi database, tra cui `/etc/hosts` per `getent hosts` o da `samba` nel caso di `getent passwd`.

realm fornisce alcune opzioni interessanti che si possono utilizzare:

OpzioneOsservazione
--computer-ou='OU=LINUX,OU=SERVERS,dc=ad,dc=company.local'L'OU in cui memorizzare l'account del server
--os-name='rocky'Specificare il nome del sistema operativo memorizzato in AD
--os-version='8'Specificare la versione del sistema operativo memorizzata nell'AD
-U admin_usernameSpecificare un account di amministratore

Tentativo di autenticazione

Ora gli utenti dovrebbero essere in grado di autenticarsi all'host Linux tramite Active Directory.

Su Windows 10: (che fornisce la propria copia di OpenSSH)

C:\Users\John.Doe> ssh -l john.doe@ad.company.local linux.host
Password for john.doe@ad.company.local:

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Wed Sep 15 17:37:03 2021 from 10.0.10.241
[john.doe@ad.company.local@host ~]$

Se l'operazione ha successo, si è configurato Linux per utilizzare Active Directory come fonte di autenticazione.

Eliminazione del nome di dominio nei nomi utente

In una configurazione completamente predefinita, è necessario accedere con il proprio account AD specificando il dominio nel nome utente (ad esempio, john.doe@ad.company.local). Se questo non è il comportamento desiderato e si vuole invece essere in grado di omettere il nome di dominio predefinito al momento dell'autenticazione, è possibile configurare Samba in modo che sia predefinito un dominio specifico.

Si tratta di un processo relativamente semplice, che richiede una modifica al file di configurazione smb.conf.

[user@host ~]$ sudo vi /etc/samba/smb.conf
[global]
...
winbind use default domain = yes

Aggiungendo l'opzione winbind use default domain, si indica a Samba di dedurre che l'utente sta cercando di autenticarsi come utente del dominio ad.company.local. Ciò consente di autenticarsi come john.doe invece di john.doe@ad.company.local.

Per rendere effettiva questa modifica della configurazione, è necessario riavviare i servizi smb e winbind con systemctl.

[user@host ~]$ sudo systemctl restart smb winbind

Allo stesso modo, se non si vuole che le directory home abbiano il suffisso del nome di dominio, è possibile aggiungere queste opzioni nel file di configurazione /etc/samba/smb.conf:

[global]
template homedir = /home/%U

Non dimenticare di riavviare i servizi smb e winbind.

Author: Neel Chauhan

Contributors: Steven Spencer, Ganna Zhyrnova