
La consapevolezza di essere entrato nel regime di sostituzione delle importazioni non è arrivata subito. Solo quando le nuove forniture di PC dalla mia organizzazione superiore hanno iniziato ad arrivare regolarmente con il pacchetto "Alt Linux" a bordo, ho iniziato a sospettare qualcosa.
Tuttavia, durante il processo di accettazione dell'inevitabile, mi sono lasciato coinvolgere e ho addirittura iniziato a provare un po' di piacere nel processo. A un certo punto, ho pensato che, a questo ritmo, prima o poi avrei dovuto separarmi dalle soluzioni Microsoft per l'organizzazione dei servizi di directory e muovermi verso qualcosa di più esotico. Pertanto, per prepararmi in anticipo all'inevitabile e cercare di scoprire più insidie possibili, è stata presa la decisione di allestire un banco di prova, comprendente:
- DC1 — Windows Server 2012R2
- DC2 — Alt Server 8.2
- File Server — Windows Server 2012R2
- PC1 — Windows 7
- PC2 — Alt Workstation 8.2
Obiettivi del banco di prova:
- Allestire un dominio basato su w2k12r2. Creare il set minimo di politiche di gruppo (simile a quelle utilizzate nell'infrastruttura lavorativa), inclusa la politica di migrazione delle cartelle degli utenti (Download / Documenti / Desktop). L'idea è che, quando un utente cambia postazione da Windows a Linux e viceversa, abbia un accesso comodo ai propri documenti di lavoro.
- Introduzione di Samba DC come secondo controller. Verifica della replica del servizio directory e DNS
- Configurazione dei client Linux per lavorare con le cartelle migrabili
Implementazione:
- Installazione e introduzione del nuovo controllerCon l'installazione di MS Windows 2012R2 è tutto semplice e relativamente chiaro. Ci sono 1001 manuali su come allestire un dominio su Windows sia tramite GUI che tramite strumenti PowerShell, quindi non ripeterò inutilemente, lascerò solo alla documentazione ufficiale, per chi è curioso e per chi desidera rinfrescare la memoria.
Tuttavia, c'è un punto importante in questo passaggio. Attualmente, Samba non è in grado di lavorare con schemi di directory superiori a 2008R2.
Titolo dello spoiler In verità, gli sviluppatori hanno dichiarato che questo supporto è di natura sperimentale. Ma nella pratica, il tentativo di introdurre Samba come secondo DC in un dominio Windows esistente con schema 69 darà luogo al seguente errore
DsAddEntry failed with status WERR_ACCESS_DENIED info (8567, ‘WERR_DS_INCOMPATIBLE_VERSION’)
Il problema è che Windows 2012 e 2012R2 utilizzano strumenti WMI per lavorare con domini e foreste, il cui supporto stabile è stato annunciato solo per la versione Samba 4.11, che deve essere rilasciata entro la fine di quest'anno.
Ne consegue che l'unica opzione per l'introduzione di Samba in un dominio AD distribuito su un server 2012R2 è la retrocessione dello schema da 69 a 47. Ovviamente, su un'infrastruttura di lavoro senza validi motivi, non è necessario farlo, ma abbiamo un ambiente di test, quindi perché no.Installiamo Alt Server 8.2. Durante l'installazione scegliamo il profilo "Server Samba-DC (controller AD)". Sul server distribuito, eseguiamo un aggiornamento completo del sistema e installiamo il pacchetto task-samba-dc, che installerà tutto il necessario.
# apt-get install task-samba-dcSe per caso il task-samba-dc, contrariamente alle affermazioni della documentazione di Alta, si rifiuta di installare tutto il necessario da solo.
# apt-get install python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-common-libs libpytalloc-develSuccessivamente ci occupiamo della configurazione di Kerberos e dell'ottenimento del ticket. Apriamo il file krb5.conf, andiamo alla sezione [libdefaults] e lo modifichiamo nel seguente modo:
# vim /etc/krb5.confdns_lookup_kdc = true dns_lookup_realm = true default_realm = TEST.LOCALRichiediamo il ticket
# kinit administrator Password for administrator@TEST.LOCAL:Controlliamo l'elenco dei ticket 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:35Ora eliminiamo o rinominiamo il file di configurazione di Samba esistente.
# mv smb.conf smb.conf.bak1E infine introduciamo nel dominio AD come secondo controller:
# samba-tool domain join test.local DC -U"TESTadministrator"L'introduzione avrà successo e sarà accompagnata dai seguenti log.
Trovando un controller di dominio scrivibile per il dominio 'test.local' Trovato DC DC1.TEST.LOCAL Password per [TESTadministrator]: Riconnessione al master di denominazione e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL Il nome DNS del nuovo master di denominazione è DC1.TEST.LOCAL Il gruppo di lavoro è TEST Il dominio è TEST.LOCAL Aggiunta CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL Aggiunta CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL Aggiunta CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL Aggiunta SPN a CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL Impostazione della password dell'account per DC2$ Abilitazione dell'account Chiamata di provisioning semplice Ricerca indirizzi IPv4 Ricerca indirizzi IPv6 Nessun indirizzo IPv6 sarà assegnato Impostazione di share.ldb Impostazione di secrets.ldb Impostazione del registro di sistema Impostazione del database dei privilegi Impostazione del database idmap Impostazione del database SAM Impostazione delle partizioni e impostazioni di sam.ldb Impostazione di sam.ldb rootDSE Caricamento preliminare dello schema Samba 4 e AD Una configurazione Kerberos adatta per Samba AD è stata generata in /var/lib/samba/private/krb5.conf Provisionamento riuscito per il dominio DN DC=TEST,DC=LOCAL Avvio della replica Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[402/1426] Linked_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[804/1426] Linked_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1206/1426] Linked_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1608/1426] Linked_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1743/1426] Linked_values[0/0] Analizzare e applicare oggetti di schema Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[402/2240] Linked_values[0/24] Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[804/2240] Linked_values[0/24] Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1206/2240] Linked_values[0/24] Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1608/2240] Linked_values[0/24] Partizione[CN=Configuration,DC=TEST,DC=LOCAL] oggetti[1772/2240] Linked_values[24/24] Replicazione di oggetti critici dalla base DN del dominio Partizione[DC=TEST,DC=LOCAL] oggetti[109/110] Linked_values[26/29] Partizione[DC=TEST,DC=LOCAL] oggetti[394/5008] Linked_values[29/29] Fatto con NC sempre replicati (base, config, schema) Replicazione DC=DomainDnsZones,DC=TEST,DC=LOCAL Partizione[DC=DomainDnsZones,DC=TEST,DC=LOCAL] oggetti[42/42] Linked_values[0/0] Replicazione DC=ForestDnsZones,DC=TEST,DC=LOCAL Partizione[DC=ForestDnsZones,DC=TEST,DC=LOCAL] oggetti[20/20] Linked_values[0/0] Exop su[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] oggetti[3] Linked_values[0] Impegno del database SAM Aggiunta di 1 record DNS remoto per DC2.TEST.LOCAL Aggiunta del record DNS A DC2.TEST.LOCAL per IPv4 IP: 192.168.90.201 Aggiunta del record DNS CNAME 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL per DC2.TEST.LOCAL Tutti gli altri record DNS (come i record SRV _ldap) saranno creati 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] Linked_values[0/0] Replicazione dei nuovi record DNS in DC=ForestDnsZones,DC=TEST,DC=LOCAL Partizione[DC=ForestDnsZones,DC=TEST,DC=LOCAL] oggetti[1/20] Linked_values[0/0] Invio di DsReplicaUpdateRefs per tutte le partizioni replicate Impostazione di isSynchronized e dsServiceName Impostazione del database di segreti Unito al dominio TEST (SID S-1-5-21-3959064270-1572045903-2556826204) come DCNell'attrezzatura ADUC dovrebbe apparire una registrazione del nuovo DC nel dominio TEST.LOCAL, e nel gestore DNS una nuova registrazione A corrispondente a DC2.
- Replica tra i controllerPer prima cosa, verifichiamo il funzionamento del servizio di replica dei cataloghi (DRS)
# samba-tool drs showreplTutti i tentativi di replica nell'output devono essere andati a buon fine. Nella lista degli oggetti KCC, entro 15 minuti dall'inserimento, dovrebbe apparire il nostro DC1 su Windows
Nome del sito predefinito-Default-First-Site-NameDC2 Opzioni DSA: 0x00000001 GUID oggetto DSA: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf ID invocazione DSA: 017997b5-d718-41d7-a3f3-e57ab5151b5c ==== VICINI IN INGRESSO ==== DC=ForestDnsZones,DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Lun May 27 12:56:31 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Lun May 27 12:56:31 2019 MSK DC=DomainDnsZones,DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Lun May 27 12:56:32 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Lun May 27 12:56:32 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Lun May 27 12:56:32 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Lun May 27 12:56:32 2019 MSK DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Lun May 27 12:56:32 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Lun May 27 12:56:32 2019 MSK CN=Configuration,DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Lun May 27 12:56:33 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Lun May 27 12:56:33 2019 MSK ==== VICINI IN USCITA ==== DC=ForestDnsZones,DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Gio May 23 16:40:03 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Gio May 23 16:40:03 2019 MSK DC=DomainDnsZones,DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Gio May 23 16:40:03 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Gio May 23 16:40:03 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Gio May 23 16:40:08 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Gio May 23 16:40:08 2019 MSK DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Gio May 23 16:40:08 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Gio May 23 16:40:08 2019 MSK CN=Configuration,DC=test,DC=local Nome del sito predefinito-Default-First-Site-NameDC1 tramite RPC GUID oggetto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Ultimo tentativo @ Lun May 27 12:12:17 2019 MSK è stato positivo 0 errore/i consecutivo/i. Ultimo successo @ Lun May 27 12:12:17 2019 MSK ==== OGGETTI DI COLLEGAMENTO KCC ==== Collegamento -- Nome collegamento: 6d2652b3-e723-4af7-a19f-1ee48915753c Abilitato : TRUE Nome DNS del server : DC1.test.local Nome DN del server : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=local Tipo trasporto: RPC opzioni: 0x00000001 Attenzione: Nessun NC replicato per il collegamento!Attenzione «Nessun NC replicato per il collegamento!» può essere tranquillamente ignorato. Compare perché durante la registrazione di un nuovo DC Samba imposta erroneamente alcuni flag di replica.
Sarebbe anche utile controllare la replica LDAP.
# samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -UadministratorIl comando sopra indicato confronterà i valori degli attributi degli oggetti dell'intero 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]: SUCCESSOIn alcuni casi, gli attributi degli oggetti sui diversi controller possono differire, e l'output del comando lo indicherà. Ma non in tutti i casi questo sarà un segno di problemi di replica.
Il passaggio successivo consiste nel configurare manualmente una replica stabile della cartella SysVol.
Il problema è che Samba non supporta ancora DFS-R, proprio come non supportava la precedente FRS. Pertanto, l'unica soluzione funzionante fino ad oggi per la replica tra DC Samba e Windows è la replica unidirezionale tramite l'utilità Robocopy del pacchetto .Gli sviluppatori di Samba, per evitare problemi di compatibilità, consigliano prima di installare il pacchetto di utilità su una normale workstation e poi copiare Robocopy sul controller nella cartella «C:Program Files (x86)Windows Resource KitsTools»
Dopo l'installazione, nel pianificatore attività sul controller Windows creiamo un'attività per eseguire la replica con i seguenti parametri:
— Esegui per tutti gli utenti
— Attivazione giornaliera ogni 5 minuti durante il giorno
— Nelle azioni scriviamo il percorso dell'utilità robocopy, specificando come argomenti:DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /secNel caso specifico copiamo il contenuto della cartella SysVol da DC1 a DC2.
- Cartelle utente trasferibili tramite configurazione pam_mountAttraverso tentativi e errori ho trovato due soluzioni praticabili per affrontare questo compito.
- Montaggio completo della cartella profilo dalla rete nella sezione /home. Opzione semplice. Funziona ottimamente, se i nomi delle cartelle Documenti, Download e Desktop coincidono in entrambi i sistemi operativi. Si presume che il PC su Linux sia già stato inserito nel dominio e gli utenti accedano con i propri account di dominio, utilizzando come meccanismo di autenticazione e autorizzazione sssd.
# 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 server file
- path=«Profile_Users/%(USER)» — risorsa sul server file, con il profilo utente allocato
- mountpoint=»~» — percorso di montaggio nella cartella principale dell'utente
Il login dell'utente viene passato alla variabile macro «%(USER)», utilizzata da pam_mount, per collegare la nostra risorsa di rete, così come è inserita nel gestore delle visualizzazioni. Pertanto, è importante che nel DM il login venga inserito senza esplicita indicazione del nome di dominio.
Nel sssd.conf questo problema si risolve commentando oppure impostando il valore False nell'opzione use_fully_qualified_names, che attiva la modalità dei nomi completi (incluso il dominio) per utenti e gruppi.
- Il secondo metodo è meno diretto e più grossolano, e a mio parere più comodo e preferibile. L'unica differenza rispetto al primo è nella configurazione di pam_mount
# vim /etc/security/pam_mount.conf.xmlDunque montiamo semplicemente separatamente ogni cartella nel relativo catalogo
- Montaggio completo della cartella profilo dalla rete nella sezione /home. Opzione semplice. Funziona ottimamente, se i nomi delle cartelle Documenti, Download e Desktop coincidono in entrambi i sistemi operativi. Si presume che il PC su Linux sia già stato inserito nel dominio e gli utenti accedano con i propri account di dominio, utilizzando come meccanismo di autenticazione e autorizzazione sssd.
Conclusioni
In un mese di lavoro su un banco di prova, questa combinazione ha resistito con successo a diverse disconnessioni sia a lungo che a breve termine di entrambi i controller, praticamente senza conseguenze per i clienti (una volta un cliente su Windows 7 ha perso la fiducia).
In generale, ho avuto un'esperienza abbastanza piacevole lavorando con questo prodotto, anche considerando tutte le sfide che ho dovuto affrontare sia in articolo che 'dietro le quinte'.
Ci sono molte insidie, e mentre si lavora con Samba, sarà necessario affrontarle in gran numero. Tuttavia, al giorno d'oggi non esistono altre soluzioni che permettano di organizzare un ambiente ibrido, utilizzando il servizio directory e senza utilizzare Windows.
Fonte: habr.com
