SAMBA è un'implementazione open source del protocollo di condivisione file SMB che fornisce servizi di file e stampa ai client SMB/CIFS. Aiuta a collegare in rete con successo il tuo sistema Ubuntu con i client Windows, fornendo e integrando così servizi comuni agli ambienti Windows. Questi servizi aiutano la condivisione di dati e informazioni sui computer e sugli utenti coinvolti nella rete e possono essere classificati in tre grandi categorie in termini di funzionalità
Servizi di condivisione di file e stampanti: Utilizza il protocollo Server Message Block (SMB) per facilitare la condivisione di file, cartelle, volumi e stampanti in tutta la rete.
Servizi di directory: Condivide informazioni vitali sui computer e sugli utenti della rete con l'aiuto di LDAP (Lightweight Directory Access Protocol) e Microsoft Active Directory.
Autenticazione e accesso: Stabilisce l'identità di un computer o di un utente della rete e determina le informazioni a cui il computer o l'utente è autorizzato ad accedere utilizzando i permessi dei file, i criteri di gruppo e il servizio di autenticazione Kerberos.
In questo tutorial impariamo come configurare un controller di dominio Linux usando samba su Ubuntu 16.04.
Samba come controller di dominio Active Directory richiede almeno la versione 4.0.0. Consiglio vivamente di utilizzare l'ultima versione stabile di Samba in quanto conterrà correzioni di bug delle versioni precedenti e molta compatibilità migliorata con Microsoft Active Directory e funzionalità aggiuntive.
Il principale vantaggio dell'utilizzo di questo è che non è necessario installare Kerberos KDC separati. Samba include un KDC compatibile con AD e fornisce la propria implementazione LDAP per back-end AD.
Prerequisiti
- Assicurati che il tuo server sia configurato per utilizzare l'indirizzo IP statico. Il DHCP può causare problemi se l'indirizzo cambia.
- Aggiorna il tuo resolv.conf con i server dei nomi appropriati.
- Aggiorna il tuo file /etc/hosts con le voci corrette. Il tuo nome host dovrebbe risolversi nell'IP del server.
Cominciamo con i prerequisiti. Ti mostrerò come ho modificato le impostazioni del mio server per soddisfare le nostre condizioni preliminari.
1) È necessario configurare l'interfaccia di rete per l'IP statico. Modifica il file /etc/network/interfaces con l'IP del tuo server "96.126.107.141", il nome del controller di dominio "nodenixbox.com" e altri dettagli come di seguito:
root@ubuntu:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 96.126.107.141
netmask 255.255.255.0
network 96.126.107.0
broadcast 96.126.107.255
gateway 96.126.107.1
dns-nameservers 96.126.107.141 8.8.8.8
dns-search nodenixbox.com
# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto
Ho cambiato iface eth0 inet dhcp in iface eth0 inet static e ho aggiunto queste parti evidenziate alla mia configurazione di rete.
2) Modifica il file resolv.conf per aggiungere il nome del controller di dominio.
root@ubuntu:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 96.126.107.141
nameserver 8.8.8.8
nameserver 207.192.69.4
search nodenixbox.com
3) Ultimo ma non meno importante, modifica il nostro file /etc/hosts e imposta "ubuntu.nodenixbox.com" come nome host come di seguito:
root@ubuntu:~# cat /etc/hosts
127.0.0.1 localhost
#127.0.1.1 ubuntu.members.linode.com ubuntu
96.126.107.141 ubuntu.nodenixbox.com ubuntu
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
root@ubuntu:~# echo ubuntu.nodenixbox.com > /etc/hostname
root@ubuntu:~# /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.
Riavvia la rete dopo queste modifiche.
Quindi, siamo pronti per iniziare con l'installazione dei pacchetti.
Installazione dei pacchetti
Prima di tutto, dobbiamo installare tutti i pacchetti necessari per configurare la nostra directory attiva del controller di dominio. Eseguo questo comando per aggiornare tutti i pacchetti software del mio server e installare i software richiesti.
root@ubuntu:~# apt-get update && apt-get upgrade -y
root@ubuntu:~# apt-get install git 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 ntpdate winbind
Durante l'installazione di questi pacchetti, ti verranno chieste informazioni su kerberos. È necessario fornire le informazioni sul dominio predefinito di Kerberos e sul server dell'amministratore. Puoi inserire il tuo dominio predefinito come nodenixbox.com e il nome del server dell'amministratore come nome host.
Come installare e configurare SAMBA
Devi scaricare gli ultimi pacchetti Samba usando i repository git nella cartella "samba4".
root@ubuntu:~# git clone -b v4-1-stable git://git.samba.org/samba.git samba4
Cloning into 'samba4'...
remote: Counting objects: 1276826, done.
remote: Compressing objects: 100% (280630/280630), done.
remote: Total 1276826 (delta 992350), reused 1267276 (delta 984263)
Receiving objects: 100% (1276826/1276826), 249.03 MiB | 10.51 MiB/s, done.
Resolving deltas: 100% (992350/992350), done.
Checking connectivity... done.
Una volta scaricato puoi entrare nella cartella "samba4" e configurare il tuo pacchetto Samba.
root@ubuntu:~#cd samba4
root@ubuntu:~#./configure --enable-debug --enable-selftest
root@ubuntu:~#make
root@ubuntu:~/samba4# make
WAF_MAKE=1 python ./buildtools/bin/waf build
Waf: Entering directory `/root/samba4/bin'
Selected embedded Heimdal build
Waf: Leaving directory `/root/samba4/bin'
'build' finished successfully (6.288s)
root@ubuntu:~#make install
Il completamento della compilazione SAMBA potrebbe richiedere del tempo. Al termine, conferma con la versione del client SAMBA e SMB. Entrambe queste versioni dovrebbero corrispondere.
root@ubuntu:~# /usr/local/samba/sbin/samba -V
Version 4.1.23
root@ubuntu:~# /usr/local/samba/bin/smbclient -V
Version 4.1.23
Fornitura di Samba Active Directory
Il prossimo passo è eseguire il provisioning del tuo dominio. Puoi semplicemente eseguire questo comando per effettuare il provisioning del tuo dominio.
root@ubuntu:~/samba4# /usr/local/samba/bin/samba-tool domain provision --realm=nodenixbox.com --domain=nodenixbox --adminpass="password" --server-role=dc --dns-backend=SAMBA_INTERNAL
Looking up IPv4 addresses
Looking up IPv6 addresses
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=nodenixbox,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=nodenixbox,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: ubuntu
NetBIOS Domain: NODENIXBOX
DNS Domain: nodenixbox.com
DOMAIN SID: S-1-5-21-4019752003-3807572232-1148719748
Alcuni usano Bind9 come DNS di back-end, ma SAMBA contiene il proprio server DNS completamente funzionante. Qui sto usando SAMBA_INTERNAL. È necessario avviare il servizio SAMBA dopo aver impostato questo dominio. Puoi eseguire questo comando per avviare SAMBA.
root@ubuntu:~# /usr/local/samba/sbin/samba
root@ubuntu:~#
Test del controller di dominio Samba
Possiamo eseguire "smbclient", per verificare se Samba fornisce le condivisioni predefinite di AD DC "netlogon" e "sysvol", che sono state create in "smb.conf" durante il provisioning.
root@ubuntu:~# /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
IPC$ IPC IPC Service (ubuntu server (Samba, Ubuntu))
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]
Server Comment
--------- -------
UBUNTU ubuntu server (Samba, Ubuntu)
Workgroup Master
--------- -------
WORKGROUP UBUNTU
Per verificare se l'autenticazione funziona, dovresti provare a connetterti alla condivisione "netlogon", utilizzando l'account di amministratore di dominio creato durante il provisioning.
root@ubuntu:~/samba4# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password:
Domain=[NODENIXBOX] OS=[Unix] Server=[Samba 4.1.23]
. D 0 Sun Oct 16 09:30:02 2016
.. D 0 Sun Oct 16 09:31:09 2016
47431 blocks of size 524288. 40274 blocks available
Configura DNS SAMBA_INTERNAL
Un DNS funzionante è essenziale per il corretto funzionamento di una Active Directory. Senza le voci DNS corrette, Kerberos non funzionerà, il che a sua volta significa che molte delle funzionalità di base non funzioneranno. Vale sempre la pena dedicare un po' di tempo in più per assicurarsi che la configurazione del DNS sia eseguita correttamente.
Abbiamo bisogno di modificare il nostro /etc/resolv.conf con il nostro nome di dominio come di seguito:
root@ubuntu:~#echo domain nodenixbox.com >> /etc/resolv.conf
Il controller di dominio richiede un server dei nomi in grado di risolvere le query nelle zone di Active Directory. Perché questo è il tuo primo controller di dominio nella foresta di Active Directory.
Devi anche modificare il tuo file di configurazione di samba "/usr/local/samba/etc/smb.conf" e aggiungere google nameserver a dns_forwarder.
root@ubuntu:~# cat /usr/local/samba/etc/smb.conf
# Global parameters
[globale]
gruppo di lavoro =NODENIXBOXrealm =NODENIXBOX.COMnetbios nome =UBUNTUserver ruolo =controller di dominio Active Directory dns forwarder =8.8.8.8
Test del tuo DNS
Per confermare che il DNS funzioni correttamente, esegui i seguenti comandi e confronta l'output
root@ubuntu:~# host -t SRV _ldap._tcp.nodenixbox.com
_ldap._tcp.nodenixbox.com has SRV record 0 100 389 ubuntu.nodenixbox.com
root@ubuntu:~# host -t SRV _kerberos._udp.nodenixbox.com.
_kerberos._udp.nodenixbox.com has SRV record 0 100 88 ubuntu.nodenixbox.com.
root@ubuntu:~# host -t A ubuntu.nodenixbox.com
ubuntu.nodenixbox.com has address 96.126.107.141
Configura Kerberos
Kerberos è una parte importante di Active Directory. Tipicamente la configurazione viene eseguita in /etc/krb5.conf. Durante il provisioning, verrà creata una configurazione di esempio funzionante in /usr/local/samba/share/setup/krb5.conf . Puoi sostituire il tuo file krb5.conf con l'esempio copiando o creando un collegamento simbolico.
root@ubuntu:~# ln -s /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf
Dovrai modificare questo file e modificare default_realm con il nome del controller di dominio come di seguito:
root@ubuntu:~# cat //etc/krb5.conf
[libdefault]
default_realm =NODENIXBOX.COMdns_lookup_realm =falsedns_lookup_kdc =vero
Il nome del reame dovrebbe essere in MAIUSCOLO.
Test di Kerberos
Puoi usare kinit per testare la tua configurazione Kerberos. Esegui questo comando come di seguito per il test:
root@ubuntu:~# kinit [email protected]
Password for [email protected]:
Warning: Your password will expire in 41 days on Sun 27 Nov 2016 09:31:07 AM UTC
È necessario disabilitare la scadenza della password per l'utente amministratore di Active Directory eseguendo questo comando per evitare futuri problemi di autenticazione.
root@ubuntu:~# /usr/local/samba/bin/samba-tool user setexpiry administrator --noexpiry
Expiry for user 'administrator' disabled.
Nota:devi sempre specificare il tuo regno in lettere maiuscole. Per verificare il funzionamento di Kerberos, puoi eseguire questo.
root@ubuntu:~# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting Expires Service principal
10/17/2016 04:19:31 10/17/2016 14:19:31 krbtgt/[email protected]
renew until 10/18/2016 04:19:19, Etype (skey, tkt): arcfour-hmac, arcfour-hmac
Creazione della cartella home utente
Ora puoi creare le tue cartelle home utente e impostare le autorizzazioni e le proprietà appropriate.
root@ubuntu:~# mkdir -m 770 /Users
root@ubuntu:~# chmod g+s /Users
root@ubuntu:~# chown root:users /Users
Successivamente, è necessario modificare il file di configurazione SMB "/usr/local/samba/etc/smb.conf" come di seguito:
[Users]
directory_mode: parameter = 0700
read only = no
path = /Users
csc policy = documents
Configura NTP
Active Directory richiede una stretta sincronizzazione dell'ora tra tutti i computer partecipanti affinché Kerberos funzioni correttamente. Si consiglia vivamente di utilizzare NTP sul controller di dominio per la sincronizzazione dell'ora. Questa documentazione ti fornirà tutte le informazioni necessarie per configurare NTP su un controller di dominio AD.
Conclusione
Infine, abbiamo creato il nostro controller di dominio Active Directory su un server Ubuntu 16.04. È possibile creare la propria directory DC Active e condividerla in rete. Uno dei principali vantaggi di questa configurazione è la possibilità di centralizzare le credenziali dell'utente e della macchina. Ha molti altri vantaggi. Alcuni dei principali vantaggi sono i seguenti:
- Mantiene un elenco di utenti che possono accedere alla rete in una directory attiva e determina a quali file gli utenti possono accedere e cosa possono fare con questi file.
- Oltre alla sicurezza e alla praticità, i controller di dominio forniscono velocità liberando le singole risorse del PC dall'esecuzione di funzioni server, il che in definitiva migliora le prestazioni della macchina client.
- Fornisce inoltre un registro di sicurezza completo, necessario per la sicurezza e l'audit del sistema.