Samba DC come secondo controller nel dominio AD Windows 2012R2 e cartelle spostabili per i client su Windows e Linux

Samba DC come secondo controller nel dominio AD Windows 2012R2 e cartelle spostabili per i client su Windows e Linux
La consapevolezza di essere finito in un'importazione sostitutiva non è arrivata subito. Solo quando le nuove forniture di PC dalla mia organizzazione superiore hanno iniziato a arrivare regolarmente con il sistema operativo 'Alt Linux' a bordo, ho cominciato a sospettare qualcosa di strano.

Tuttavia, durante il processo di accettazione dell'inevitabile, mi sono lasciato coinvolgere e ho persino iniziato a provare un certo piacere nel processo. A un certo punto, ho pensato che, a questo ritmo, prima o poi avrei dovuto separarmi dalle soluzioni di gestione del servizio directory di Microsoft e dirigermi verso qualcosa di più esotico. Pertanto, per prepararmi all'inevitabile in anticipo e cercare di evitare il maggior numero possibile di insidie, è stato deciso di allestire un banco di prova, includendo:

  • DC1 — Windows Server 2012R2
  • DC2 — Alt Server 8.2
  • File Server — Windows Server 2012R2
  • PC1 — Windows 7
  • PC2 — Alt Workstation 8.2

Compiti del banco di prova:

  1. Eseguire un dominio basato su w2k12r2. Creare un insieme minimo di criteri di gruppo (analoghi a quelli utilizzati nell'infrastruttura di lavoro), inclusa la politica per lo spostamento delle cartelle utente (Download / Documenti / Scrivania). Alla fine, vorremmo che, cambiando il posto di lavoro da Windows a Linux e viceversa, l'utente avesse un accesso comodo ai propri documenti di lavoro.
  2. Introduzione di Samba DC come secondo controller. Verifica della replica dei servizi di directory e DNS.
  3. Configurazione dei client Linux per lavorare con le cartelle spostabili.

Attuazione:

  1. Installazione e introduzione di un nuovo controller.Con l'installazione di MS Windows 2012R2 è tutto semplice e piuttosto chiaro. Ci sono mille e uno manuali online su come eseguire il dominio su Windows sia tramite GUI che con strumenti PowerShell, quindi non ripeterò ancora una volta, lascerò solo il link la documentazione ufficiale, per i curiosi e coloro che vogliono rinfrescare la memoria.

    Tuttavia, c'è un aspetto importante in questo punto. Al giorno d'oggi, Samba non riesce a lavorare con schemi di directory superiori a 2008R2.

    Titolo del riquadro collapsible In realtà, gli sviluppatori hanno dichiarato questo supporto come sperimentale. Ma nella pratica, il tentativo di utilizzare Samba come secondo DC in un dominio Windows con schema 69 incontrerà il seguente errore.

    DsAddEntry failed con stato WERR_ACCESS_DENIED info (8567, ‘WERR_DS_INCOMPATIBLE_VERSION’).

    Il problema è che Windows 2012 e 2012R2 utilizzano strumenti WMI per gestire domini e foreste, il cui supporto stabile è stato annunciato solo per la versione Samba 4.11, prevista per la fine di quest'anno.
    Ne deriva che l'unica opzione per inserire Samba in un dominio AD, distribuito su un server 2012R2, è la riduzione dello schema da 69 a 47. Naturalmente, su un'infrastruttura operativa, non è necessario farlo senza motivi validi, ma qui abbiamo un ambiente di test, quindi perché no?

    Installiamo Alt Server 8.2. Durante l'installazione, selezioniamo il profilo «Server Samba-DC (controllore AD)». Sul server distribuito, eseguiamo un aggiornamento completo del sistema e installiamo il pacchetto task-samba-dc, che porterà tutto il necessario.

    # apt-get install task-samba-dc

    Se per caso task-samba-dc, contrariamente a quanto garantito dalla documentazione di Alta, si rifiuta di installare tutto il necessario.

    # apt-get install python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-common-libs libpytalloc-devel

    Passiamo ora alla configurazione di Kerberos e all'ottenimento del biglietto. Apriamo il file krb5.conf, andiamo alla sezione [libdefaults] e portiamola nella seguente forma:

    # vim /etc/krb5.conf
     dns_lookup_kdc = true
     dns_lookup_realm = true
     default_realm = TEST.LOCAL

    Richiediamo un biglietto

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    Controlliamo l'elenco dei biglietti Kerberos ottenuti

    # klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: administrator@TEST.LOCAL
    
    Valid starting       Expires              Service principal
    16.05.2019 11:51:38  16.05.2019 21:51:38  krbtgt/TEST.LOCAL@TEST.LOCAL
            renew until 23.05.2019 11:51:35

    Ora rimuoviamo o rinominiamo la configurazione esistente di Samba.

    # mv smb.conf smb.conf.bak1

    E infine inseriamo nel dominio AD come secondo controller:

    # samba-tool domain join test.local DC -U"TESTadministrator"

    L'inserimento avrà successo e sarà accompagnato dal seguente log

    Trova un DC scrivibile per il dominio 'test.local'
    DC trovato: DC1.TEST.LOCAL
    Password per [TESTadministrator]:
    Riconnettendosi al master di denominazione e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL
    Il nome DNS del nuovo master di denominazione è DC1.TEST.LOCAL
    Gruppo di lavoro: TEST
    Reame: TEST.LOCAL
    Aggiungendo CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Aggiungendo CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Aggiungendo CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Aggiungendo SPN a CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Impostando la password dell'account per DC2$
    Abilitando l'account
    Chiamando bare provision
    Ricerca degli indirizzi IPv4
    Ricerca degli indirizzi IPv6
    Nessun indirizzo IPv6 verrà assegnato
    Configurando share.ldb
    Configurando secrets.ldb
    Configurando il registro
    Configurando il database dei privilegi
    Configurando il database idmap
    Configurando il database SAM
    Configurando le partizioni e impostazioni di sam.ldb
    Configurando rootDSE di sam.ldb
    Pre-caricamento dello schema Samba 4 e AD
    È stata generata una configurazione Kerberos adatta per Samba AD in /var/lib/samba/private/krb5.conf
    Provision OK per il DN di dominio DC=TEST,DC=LOCAL
    Inizio della replica
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[402/1426] collegati_valori[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[804/1426] collegati_valori[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1206/1426] collegati_valori[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1608/1426] collegati_valori[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1743/1426] collegati_valori[0/0]
    Analizza e applica oggetti dello schema
    Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[402/2240] collegati_valori[0/24]
    Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[804/2240] collegati_valori[0/24]
    Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1206/2240] collegati_valori[0/24]
    Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1608/2240] collegati_valori[0/24]
    Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1772/2240] collegati_valori[24/24]
    Replicazione di oggetti critici dal DN base del dominio
    Partizione[DC=TEST,DC=LOCAL] oggetti[109/110] collegati_valori[26/29]
    Partizione[DC=TEST,DC=LOCAL] oggetti[394/5008] collegati_valori[29/29]
    Fatta con NC sempre replicato (base, config, schema)
    Replicazione di DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partizione[DC=DomainDnsZones,DC=TEST,DC=LOCAL] oggetti[42/42] collegati_valori[0/0]
    Replicazione di DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partizione[DC=ForestDnsZones,DC=TEST,DC=LOCAL] oggetti[20/20] collegati_valori[0/0]
    Exop su[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] oggetti[3] collegati_valori[0]
    Impegno del database SAM
    Aggiungendo 1 record DNS remoto per DC2.TEST.LOCAL
    Aggiungendo record A DNS DC2.TEST.LOCAL per l'IP IPv4: 192.168.90.201
    Aggiungendo record CNAME DNS 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL per DC2.TEST.LOCAL
    Tutti gli altri record DNS (come i record SRV _ldap) verranno creati con samba_dnsupdate al primo avvio
    Replicazione dei nuovi record DNS in DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partizione[DC=DomainDnsZones,DC=TEST,DC=LOCAL] oggetti[1/42] collegati_valori[0/0]
    Replicazione dei nuovi record DNS in DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partizione[DC=ForestDnsZones,DC=TEST,DC=LOCAL] oggetti[1/20] collegati_valori[0/0]
    Invio di DsReplicaUpdateRefs per tutte le partizioni replicate
    Impostazione di isSynchronized e dsServiceName
    Configurazione del database segreti
    Entrato nel dominio TEST (SID S-1-5-21-3959064270-1572045903-2556826204) come un DC

    Nell'ADUC dovrebbe apparire una voce per il nuovo DC nel dominio TEST.LOCAL, e nel gestore DNS una nuova registrazione A corrispondente a DC2.

  2. Replica tra i controllerIniziamo a controllare il funzionamento del servizio di replica dei cataloghi (DRS)
    # samba-tool drs showrepl

    Tutti i tentativi di replica nell'output devono risultare riusciti. Nella lista degli oggetti KCC, entro 15 minuti dall'immissione, deve apparire il nostro DC1 su Windows.

    Default-First-Site-NameDC2
    	Opzioni DSA: 0x00000001
    	GUID oggetto DSA: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
    	ID invocazione DSA: 017997b5-d718-41d7-a3f3-e57ab5151b5c
    
    	==== VETTORI INBOUND ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Lun May 27 12:56:31 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Lun May 27 12:56:31 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Lun May 27 12:56:32 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Lun May 27 12:56:32 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Lun May 27 12:56:32 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Lun May 27 12:56:32 2019 MSK
    
    	DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Lun May 27 12:56:32 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Lun May 27 12:56:32 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Lun May 27 12:56:33 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Lun May 27 12:56:33 2019 MSK
    
    	==== VETTORI OUTBOUND ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Gio May 23 16:40:03 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Gio May 23 16:40:03 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Gio May 23 16:40:03 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Gio May 23 16:40:03 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Gio May 23 16:40:08 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Gio May 23 16:40:08 2019 MSK
    
    	DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Gio May 23 16:40:08 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Gio May 23 16:40:08 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Ultimo tentativo @ Lun May 27 12:12:17 2019 MSK è stato un successo
    	                0 fallimenti consecutivi.
    	                Ultimo successo @ Lun May 27 12:12:17 2019 MSK
    
    	==== OGGETTI DI CONNESSIONE KCC ====
    
    	Connessione --
    	        Nome connessione: 6d2652b3-e723-4af7-a19f-1ee48915753c
    	        Abilitato        : TRUE
    	        Nome DNS server : DC1.test.local
    	        Nome DN server  : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=local
    	                TipoTrasporto: RPC
    	                opzioni: 0x00000001
    	Attenzione: Nessun NC replicato per la connessione!

    Avviso «Nessuna replica NC per la connessione!» può essere ignorato tranquillamente. Si presenta perché durante la registrazione di un nuovo DC, Samba imposta erroneamente alcuni flag di replica.

    È anche consigliabile controllare la replica LDAP.

    # samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -Uadministrator

    Il comando sopra riportato confronterà i valori degli attributi degli oggetti in tutto il catalogo su DC1 e DC2.

    Esempio di replica riuscita

    * Confronto del contesto [DOMAIN]...
    
    	* Oggetti da confrontare: 249
    
    	* Risultato per [DOMAIN]: SUCCESSO
    
    	* Confronto del contesto [CONFIGURATION]...
    
    	* Oggetti da confrontare: 1750
    
    	* Risultato per [CONFIGURATION]: SUCCESSO
    
    	* Confronto del contesto [SCHEMA]...
    
    	* Oggetti da confrontare: 1739
    
    	* Risultato per [SCHEMA]: SUCCESSO
    
    	* Confronto del contesto [DNSDOMAIN]...
    
    	* Oggetti da confrontare: 42
    
    	* Risultato per [DNSDOMAIN]: SUCCESSO
    
    	* Confronto del contesto [DNSFOREST]...
    
    	* Oggetti da confrontare: 20
    
    	* Risultato per [DNSFOREST]: SUCCESSO

    In alcuni casi, gli attributi degli oggetti sui diversi controller possono differire, e l'output del comando lo segnalerà. Ma non in tutti i casi questo sarà un segnale di un problema di replica.

    Il passaggio successivo consiste nel configurare manualmente una replica stabile del catalogo SysVol.
    Il fatto è che Samba attualmente non supporta DFS-R, proprio come non ha supportato il precedente FRS. Pertanto, l'unica soluzione funzionante per la replica tra un DC Samba e Windows è al momento la replica unidirezionale tramite l'utilità. Robocopy del pacchetto Windows Server 2003 Resource Kit Tools.

    Gli sviluppatori di Samba, per evitare problemi di compatibilità, raccomandano prima di installare il pacchetto di utilità su una normale workstation e solo dopo di copiare Robocopy sul controller nella cartella «C:Program Files (x86)Windows Resource KitsTools».

    Dopo l'installazione, nel pianificatore delle attività sul controller Windows creiamo un'attività per eseguire la replica con i seguenti parametri:

    — Esegui per tutti gli utenti
    — Trigger per eseguire Ogni giorno ogni 5 minuti durante il giorno
    — Negli azioni scriviamo il percorso dell'utilità robocopy, specificando come argomenti:

    DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec

    Nel caso specifico copiamo il contenuto della directory SysVol da DC1 a DC2.

  3. Cartelle utenti trasferibili utilizzando la configurazione pam_mount.Dopo vari tentativi, ho identificato due opzioni praticabili per risolvere questo problema con il suo aiuto.
    1. Montaggio completo della cartella profilo dalla rete nella directory /home. Una soluzione semplice che funziona bene se i nomi delle cartelle Documenti, Download e Desktop coincidono in entrambi i sistemi operativi. Si presuppone che il PC Linux sia già stato inserito nel dominio e che gli utenti accedano con i propri account di dominio, utilizzando sssd come meccanismo di autenticazione e autorizzazione.
      # vim /etc/security/pam_mount.conf.xml
      <volume uid="100000000-2000000000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)" mountpoint="~" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>
      

      dove:

      • uid="100000000-2000000000" — intervallo UID assegnato agli utenti di dominio da SSSD
      • server="dfs" — nome del file server
      • path="Profile_Users/%(USER)" — risorsa sul file server con il profilo utente
      • mountpoint="~" — percorso di montaggio nella home directory dell'utente

      Il login dell'utente viene passato nella variabile macro "%(USER)", utilizzata da pam_mount, per connettere la nostra risorsa di rete esattamente come è stata inserita nel gestore di display. Pertanto, è importante che nel gestore di display il login venga inserito senza specificare esplicitamente il nome del dominio.

      In sssd.conf si risolve commentando o impostando il valore False nell'opzione use_fully_qualified_names, che include la modalità di nomi completi (incluso il dominio) per utenti e gruppi.

    2. Il secondo metodo è meno diretto e un po' più rozzo, ma a mio avviso è più comodo e preferibile. L'unica differenza dal primo è nella configurazione di pam_mount.
      # vim /etc/security/pam_mount.conf.xml

      Cioè, montiamo semplicemente separatamente ogni nostra cartella nella sua directory corrispondente.

Conclusioni

Nel corso di un mese di lavoro su un banco di prova, questa configurazione ha superato con successo diverse disconnessioni temporanee e prolungate di entrambi i controller, praticamente senza conseguenze per i clienti (una volta un cliente su Windows7 ha perso la fiducia).

Nel complesso, ho avuto impressioni piuttosto positive lavorando con questo prodotto, nonostante tutte le sfide incontrate sia nell'articolo che "dietro le quinte".

Ci sono molte insidie, e durante il lavoro con Samba dovrò affrontarne un gran numero. Tuttavia, attualmente non ci sono altre soluzioni che consentano di organizzare un ambiente ibrido, utilizzando un servizio directory senza Windows.

Fonte: habr.com

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster