Samba 4 as Active Directory Domain Controller

In questo articolo configureremo samba 4 come domain controller. Da precisare che tale configurazione potrà prevedere samba 4 come unico gestore del dominio oppure come domain controller aggiunto ad un dominio Active Directory Windows preesistente.
La documentazione di riferimento è quella ufficiale:Samba_AD_DC_HOWTO per la prima soluzione e Join_a_domain_as_a_DC per la seconda. Aggiungerei anche questa tagliata su Ubuntu 14.04 e personalmente testata con successo.

1. Preparazione

Partiamo da una installazione di Ubuntu 14.04 server senza interfaccia grafica. Durante l’installazione sceglieremo solamente di aggiungere il server ssh (Openssh-server).  Per semplicità io generalmente opto per abilitare l’utente root e poter lavorare senza dover ogni volta ulitizzare il sudo. Quindi:

$ sudo passwd root
 [sudo] password for luca:
 Inserire nuova password UNIX:
 Reinserire la nuova password UNIX:
 passwd: password aggiornata correttamente
 $ su -
 Password:
 #

In tal modo lavoreremo come root. Aggiorniamo il sistema:

# apt-get update && apt-get upgrade

2. Installazione e configurazione di samba

2.1 Installazione prerequisiti di samba come DC

# apt-get install attr build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev libpam0g-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl ntp

Durante l’installazione di Kerberos verranno richiesti alcuni parametri. Sostanzialmente quelli relativi alla mia configurazione sono:

Realm=DOMINIOSAMBA.IT / Server=samba4 (o anche samba4.dominiosamba.it)

2.2 Configurazione di rete e ntp

Settare un ip statico in /etc/network/interfaces ed aggiungerci come dns server l’ip del server stesso + l’ip di un server dns esterno (generalmente quello del nostro provider) + l’indicazione del dominio:

# vim /etc/network/interfaces

# The primary network interface
auto eth0
iface eth0 inet static
     address 192.168.201.136
     netmask 255.255.255.0
     gateway 192.168.201.20
     dns-nameservers 192.168.201.136 8.8.8.8
     dns-search dominiosamba.it

Ovviamente i dati relativi agli indirizzi dovranno essere adattati alla vostra rete.

Settare l’hostname (in /etc/hostname) in modo congruente, nel mio caso “samba4″.

Visto che samba fa uso di attributi di filesystem che generalmente ext3/4 non supportano, occorre indicarli in /etc/fstab. Qualcosa del tipo:

#questa è la partizione dove risiede samba:
UUID=xyzxyzxy-xyzx-xyzx-x    /    ext4     errors=remount-ro 0 1
#Occorre aggiungere qualche parametro:
UUID=xyzxyzxy-xyzx-xyzx /    ext4     user_xattr,acl,barrier=1,errors=remount-ro 0 1

Ora settare /etc/hosts con qualcosa del tipo:

# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 samba4.dominiosamba.it samba4
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

2.3 Configurazione ntp

# service ntp stop

In /etc/ntp.conf aggiungere il proprio server ntp (nel mio caso 192.168.17.22), altrimenti lasciare quelli di default (ntp server di ubuntu.pool.ntp.org):

# vim /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 192.168.17.22         ## <--   questo è il mio server ntp
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org 

Poi testare la sincronizzazione

# ntpdate -B 192.168.17.22

e riavviare il servizio:

# service ntp start

Riavviamo il server

2.4 Installazione, configurazione e provisioning del dominio samba

# sudo apt-get install samba smbclient

Prendiamo un po’ di  dimestichezza con i parametri e le opzioni di samba-tool. Vediamo:

# samba-tool domain provision --help

In particolare se il server ha più interfacce, dovremo usare:
–option=”interfaces=lo eth0″ –option=”bind interfaces only=yes”

Salvare il vecchio smb.conf rinominandolo com ORIG:

# mv /etc/samba/smb.conf /etc/samba/smb.conf.orig

Avviare la procedura interattiva di provisioning del nuovo dominio:

# sudo samba-tool domain provision --use-rfc2307 --interactive

I parametri saranno praticamente tutti quelli di default, nel mio caso questo è il contenuto che, grazie alla procedura interattiva, popolerà il mio smb.conf:

# Global parameters
[global]
 workgroup = DOMINIOSAMBA
 realm = DOMINIOSAMBA.IT
 netbios name = SAMBA4
 server role = active directory domain controller
 dns forwarder = 8.8.8.8
 idmap_ldb:use rfc2307 = yes
[netlogon]
 path = /var/lib/samba/sysvol/dominiosamba.it/scripts
 read only = No
[sysvol]
 path = /var/lib/samba/sysvol
 read only = No

NNBB: è bene che la password amministrativa di dominio abbia caratteri alfa numerici + maiusc e minusc + almeno un carattere speciale. Fate attenzione quando ridigitate la password per conferma: se sbagliate apparirà un errore mal gestito da samba, costringendovi a cancellare il file /etc/samba/smb.conf e riavviare la procedura interattiva di provisioning.

Ora rimuoviamo da /etc/network/interfaces il server dns esterno e lasciamo solo samba locale:

iface eth0 inet static
address 192.168.201.136
netmask 255.255.255.0
gateway 192.168.201.20
dns-nameservers 192.168.201.136
# dns-nameservers 192.168.201.136 8.8.8.8
dns-search dominiosamba.it

Riavviamo il server

E’ fondamentale che il DNS funzioni correttamente, altrimenti samba darà dei grossi problemi.
Facciamo 3 test che assicurano la presenza di record A che risolvano correttamente:

Test del SRV record per ldap su TCP:

# host -t SRV _ldap._tcp.dominiosamba.it
_ldap._tcp.dominiosamba.it has SRV record 0 100 389 samba4.dominiosamba.it.

Test del SRV record per kerberos su UDP

# host -t SRV _kerberos._udp.dominiosamba.it
_kerberos._udp.dominiosamba.it has SRV record 0 100 88 samba4.dominiosamba.it.

Test della risoluzione del nome del proprio server

# host -t A samba4.dominiosamba.it
samba4.dominiosamba.it has address 192.168.201.136

Se doveste ricevere errori non proseguite ma fate troubleshooting fino alla risoluzione. Lo dico per esperienza..

2.5 Configurazione e test di Kerberos

Samba genera un suo file di configurazione di kerberos in /var/lib/samba/private/krb5.conf. Anche kerberos stesso genera un file di configurazione in /etc/krb5.conf. Salviamo questo secondo file a scopo di backup e al suo posto creiamo un link simbolico in modo tale che se samba cambia qualche parametro nel suo file kerberos, non occorre variarlo manualmente anche su /etc/krb5.conf:

# mv /etc/krb5.conf /etc/krb5.conf.orig
# ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf

Assicuriamoci che kerberos gestisca l’autenticazione:

# kinit administrator@DOMINIOSAMBA.IT
Password for administrator@DOMINIOSAMBA.IT: 
Warning: Your password will expire in 41 days on gio 11 dic 2014 18:11:52 CET

digitando poi:

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DOMINIOSAMBA.IT
Valid starting Expires Service principal
31/10/2014 08:16:19 31/10/2014 18:16:19 krbtgt/DOMINIOSAMBA.IT@DOMINIOSAMBA.IT
 renew until 01/11/2014 08:16:08

vediamo un ticket krbtgt valido

Ora ci connettiamo al server tramite smbclient:

Domain=[DOMINIOSAMBA] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
Sharename Type Comment
 --------- ---- -------
 netlogon Disk 
 sysvol Disk 
 IPC$ IPC IPC Service (Samba 4.1.6-Ubuntu)
Domain=[DOMINIOSAMBA] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
Server Comment
 --------- -------
Workgroup Master
 --------- -------
 WORKGROUP SEGRETER-0DC328

Vedremo così gli share netlogon e sysvol, creati di default da samba (vedi /etc/samba/smb.conf)

Verifichiamo ora l’autenticazione con smbclient:

# smbclient //localhost/netlogon -U 'administrator'
Enter administrator's password: 
Domain=[DOMINIOSAMBA] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
smb: \>

Ok: siamo entrati in netlogon ed abbiamo a disposizione la shell interattiva di smbclient

A questo punto la configurazione è completa e samba4 funziona perfettamente come domain controller del dominio Active Directory “dominiosamba.it”.

3. Gestione del dominio

La documentazione ufficiale samba a questo punto consiglia l’utilizzo dell’applicativo RSAT (Remote Server Administration Tools) da installare su macchina Windows per il management del dominio AD. Questo permette di avere una interfaccia grafica dalla quale facilmente si può interagire con il dominio e configurare tutte le features previste. La documentazione alla quale abbiamo attinto è https://wiki.samba.org/index.php/Installing_RSAT_on_Windows_for_AD_Management

3.1 Inserimento in dominio di Windows 7

Se utilizziamo Windows 7 (cambia ben poco se utilizziamo Windows XP o Windows 8/8.1):
Sulle impostazioni della scheda di rete impostare il DNS manuale, settando l’ip del nostro server samba4 (nel mio caso 192.168.201.136). Salvare le impostazioni.
Il fatto che da Windows 7 ora si riesca a navigare in internet significa che il nostro samba4 funziona correttamente come server DNS. Ora vediamo le funzionalità di dominio.

Inserire Windows 7 in dominio:
Start -> click destro su “Computer” -> click su “Properties”
Cliccare su Advanced system settings
Selezionare la scheda “Computer Name” e poi click su “Change”
Lasciare invariato il Computer name e selezionare “Domain” inserendo poi il nome del nostro dominio samba4 (nel mio caso sarà “DOMINIOSAMBA.IT”).
Dare “OK”.
Verranno richieste le credenziali amministrative del nostro dominio. Inserirle e poi dare OK per confermare.
Apparirà una finestra di benvenuto al nuovo dominio e successivamente il sistema chiederà di essere riavviato.
Riavviamo e poi accediamo a Windows 7 con le credenziali amministrative di dominio:
al login clicchiamo su “Switch User” e poi scegliamo “Other User”; come username inseriamo:
DOMINIOSAMBA.IT\Administrator
e come password la password amministrativa del dominio.

Bene, a questo punto se non abbiamo incontrato problemi e ci siamo loggati come DOMINIOSAMBA.IT\Administrator, abbiamo testato il funzionamento del nostro server samba4 come server DNS e come Domain Controller del dominio DOMINIOSAMBA.IT.

3.2 Installazione e configurazione RSAT in Windows 7

Ora, sempre in Windows 7, scarichiamo l’applicativo RSAT:
procediamo col download da:

http://www.microsoft.com/en-us/download/details.aspx?id=7887

Selezionare il pacchetto a 32 o 64 bit, a seconda della propria piattaforma.
Ci vorrà un po’ di tempo per scaricare i 240 MB di programma
Procediamo con l’installazione.

Al termine, andiamo sul pannello di controllo -> Programs and Features” -> “Turn Windows features on or off”.
Attivare almeno le seguenti funzionalità:

features

Dare OK e attendere che Windows attivi le features richieste. Al termine saranno disponibili dal menu “Administrative Tools” (raggiungibile direttamente da “Start”)

3.3 Gestione del dominio

Da “Administrative Tools” andare su “DNS”, digitare l’ip del nostro server samba4. Da qui sarà possibile gestire il server DNS in samba4.
Andare ora su “Active Directory Domains and Trust”.
Visualizzeremo sulla sinistra il nostro dominio. Cliccandoci col destro e selezionando “Manage” entreremo nella schermata “Active Directory Users and Computers”.
Qui possiamo gestire il dominio in toto. Proviamo ad esempio a creare un nuovo utente: “pippo” con password “pippo123!”:
clicchiamo col destro su “Users” -> New -> User.
Seguiamo le indicazioni a schermo e togliamo il flag da “User must change password at next logon” (utile quando resettiamo la password di un utente per fare in modo che l’utente sia forzato a cambiarla al primo login).

Ora testiamo che l’utente sia stato creato correttamente nel dominio. Possiamo sloggarci da Windows 7 come Administrator e riloggarci come utente “pippo” con password “pippo111!” oppure provare l’autenticazione Kerberos direttamente sul server samba4:

# kinit pippo@DOMINIOSAMBA.IT
Password for pippo@DOMINIOSAMBA.IT:

Se è tutto ok la shell non restituisce nulla. Se però vogliamo vedere il “ticket” vedremo le informazioni che provano la validità delle credenziali utente:

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: pippo@DOMINIOSAMBA.IT
Valid starting Expires Service principal
03/11/2014 17:51:37 04/11/2014 03:51:37 krbtgt/DOMINIOSAMBA.IT@DOMINIOSAMBA.IT
 renew until 04/11/2014 17:51:33

Possiamo anche provare ad utilizzare smbclient per testare il nuovo utente:

# smbclient //localhost/netlogon -U 'pippo'
Enter pippo's password: 
Domain=[DOMINIOSAMBA] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
smb: \>

Se desiderate sapere come aggiungere un server radius che autentichi gli utenti di dominio (ad esempio per l’accesso telnet agli apparati di rete), potete proseguire con questo articolo.

4 thoughts on Samba 4 as Active Directory Domain Controller

  1. ciao guarda la tua giuda e formidabile e ci sono riuscito.
    ti volevo chiedere se potevi farne una usando bind9_dlz in samba-tool, e un po che ci provo ma non ci riesco.
    volevo chiederti se facevi una guida apposta grazie in anticipo.

    Reply
  2. Quanto prima farò dei test. Questa è la ciliegina sulla torta che mi manca… Mi sambra spettacolare poter gestire l’ad direttamente da windows7… Bel lavoro.

    Reply

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>