Samba DC als tweede domeincontroller in een Active Directory-domein Windows 2012R2 en roamingmappen voor clients op Windows и Linux

Samba DC als tweede domeincontroller in een Active Directory-domein Windows 2012R2 en roamingmappen voor clients op Windows и Linux
Het besef dat ik in een importpuinhoop zat, kwam niet meteen. Pas toen er gestaag nieuwe leveringen van pc's arriveerden van een hogere organisatie met de Alt Linux-distributie aan boord, vermoedde ik dat er iets mis was.

Maar toen ik de fasen van het accepteren van het onvermijdelijke doorliep, raakte ik erbij betrokken en begon ik zelfs een beetje van het proces te genieten. En op een gegeven moment dacht ik dat ik in dit tempo vroeg of laat afstand zou moeten doen van de oplossingen voor het organiseren van directoryservices van Microsoft en naar iets exotischer zou moeten gaan. Om zich vooraf voor te bereiden op het onvermijdelijke en, indien mogelijk, zoveel mogelijk valkuilen te vangen, werd daarom besloten een testbank in te zetten, waaronder:

  • DC1 — Windows Server 2012R2
  • DC2 - Viola-server 8.2
  • Bestandsserver — Windows Server 2012R2
  • PC1 — Windows 7
  • PC2 - Viola-werkstation 8.2

Standdoelstellingen:

  1. Implementeer een domein gebaseerd op Windows Server 2012 R2. Maak een minimale set groepsbeleidsregels aan (vergelijkbaar met die in de productieomgeving), inclusief een beleid voor het migreren van de werkmappen van gebruikers (Downloads/Documenten/Bureaublad). Uiteindelijk wil ik ervoor zorgen dat wanneer een gebruiker van werkstation wisselt, Windows op Linux En zo had hij weer gemakkelijk toegang tot zijn werkdocumenten.
  2. Samba DC-ingang door de tweede controller. Directoryservice en DNS-replicatie controleren
  3. Klanten instellen Linux om met het verplaatsen van mappen te werken

Implementatie:

  1. Installatie en inbedrijfstelling van een nieuwe controllerMet MS-installatie Windows 2012R2 is eenvoudig en min of meer duidelijk. Er zijn duizenden handleidingen op internet te vinden voor het implementeren van een domein op Windows Server 1001. Windows Ik heb zowel de grafische gebruikersinterface als PowerShell gebruikt, dus ik zal het niet herhalen, ik laat het hierbij. link aan uit. documentatie voor nieuwsgierigen en voor degenen die hun geheugen willen opfrissen.

    Er is echter nog een belangrijk punt op dit punt. Momenteel kan Samba niet werken met mapschema's hoger dan 2008R2.

    Spoilertitel Nauwkeuriger gezegd, gaven de ontwikkelaars aan dat deze ondersteuning experimenteel was. Maar in de praktijk bleek een poging om Samba als tweede domeincontroller in een bestaand domein te introduceren, een experimentele aanpak. Windows Bij schema 69 krijgt u de volgende foutmelding te zien.

    DsAddEntry mislukt met status WERR_ACCESS_DENIED info (8567, 'WERR_DS_INCOMPATIBLE_VERSION')

    Het probleem is dat Windows Samba 2012 en 2012R2 gebruiken WMI-tools om met domeinen en forests te werken. Stabiele ondersteuning hiervoor is pas aangekondigd voor versie Samba 4.11, die naar verwachting vóór het einde van dit jaar uitkomt.
    Hieruit volgt dat de enige optie voor het introduceren van samba in een AD-domein dat op een 2012R2-server is geïmplementeerd, het downgraden van het schema is van 69 naar 47. Dit mag uiteraard niet zonder goede reden worden gedaan op een productie-infrastructuur, maar we hebben een testbank hier, dus waarom eigenlijk niet.

    Installeer Alt Server 8.2. Selecteer tijdens de installatie het profiel “Samba-DC Server (AD Controller)”. Op de geïmplementeerde server voeren we een volledige systeemupdate uit en installeren we het task-samba-dc-pakket, dat alles ophaalt wat je nodig hebt

    # apt-get install task-samba-dc

    Als plotseling task-samba-dc, in tegenstelling tot de garanties van de documentatie, weigert Alta al het noodzakelijke zelf te installeren.

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

    Vervolgens gaan we verder met het instellen van Kerberos en het ontvangen van een ticket. Open het bestand krb5.conf, ga naar de sectie [libdefaults] en breng het naar het volgende formulier:

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

    Een kaartje aanvragen

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    Het controleren van de lijst met ontvangen Kerberos-tickets

    # 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

    Nu verwijderen of hernoemen we de bestaande samba-configuratie.

    # mv smb.conf smb.conf.bak1

    En tenslotte betreden we het AD-domein met de tweede controller:

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

    Succesvolle invoer gaat vergezeld van het volgende logboek

    Finding a writeable DC for domain 'test.local'
    Found DC DC1.TEST.LOCAL
    Password for [TESTadministrator]:
    Reconnecting to naming master e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.                           LOCAL
    DNS name of new naming master is DC1.TEST.LOCAL
    workgroup is TEST
    realm is TEST.LOCAL
    Adding CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Adding CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC                           =TEST,DC=LOCAL
    Adding CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN                           =Configuration,DC=TEST,DC=LOCAL
    Adding SPNs to CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Setting account password for DC2$
    Enabling account
    Calling bare provision
    Looking up IPv4 addresses
    Looking up IPv6 addresses
    No IPv6 address will be assigned
    Setting up share.ldb
    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
    A Kerberos configuration suitable for Samba AD has been generated at /var/lib/sa                           mba/private/krb5.conf
    Provision OK for domain DN DC=TEST,DC=LOCAL
    Starting replication
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[402/1426] linked                           _values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[804/1426] linked                           _values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1206/1426] linke                           d_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1608/1426] linke                           d_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1743/1426] linke                           d_values[0/0]
    Analyze and apply schema objects
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[402/2240] linked_values[0/                           24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[804/2240] linked_values[0/                           24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1206/2240] linked_values[0                           /24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1608/2240] linked_values[0                           /24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1772/2240] linked_values[2                           4/24]
    Replicating critical objects from the base DN of the domain
    Partition[DC=TEST,DC=LOCAL] objects[109/110] linked_values[26/29]
    Partition[DC=TEST,DC=LOCAL] objects[394/5008] linked_values[29/29]
    Done with always replicated NC (base, config, schema)
    Replicating DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objects[42/42] linked_values[0/0]
    Replicating DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objects[20/20] linked_values[0/0]
    Exop on[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objects[3] linked_values[0]
    Committing SAM database
    Adding 1 remote DNS records for DC2.TEST.LOCAL
    Adding DNS A record DC2.TEST.LOCAL for IPv4 IP: 192.168.90.201
    Adding DNS CNAME record 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL                            for DC2.TEST.LOCAL
    All other DNS records (like _ldap SRV records) will be created samba_dnsupdate o                           n first startup
    Replicating new DNS records in DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objects[1/42] linked_values[0/0]
    Replicating new DNS records in DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objects[1/20] linked_values[0/0]
    Sending DsReplicaUpdateRefs for all the replicated partitions
    Setting isSynchronized and dsServiceName
    Setting up secrets database
    Joined domain TEST (SID S-1-5-21-3959064270-1572045903-2556826204) as a DC

    In de ADUC-module moet er een record zijn voor de nieuwe DC in het TEST.LOCAL-domein, en in de DNS-manager moet er een nieuw A-record zijn dat overeenkomt met DC2.

  2. Replicatie tussen controllersLaten we eerst de werking van de Directory Replication Service (DRS) controleren
    # samba-tool drs showrepl

    Alle replicatiepogingen in de uitvoer zouden succesvol moeten zijn. Onze DC1 zou binnen 15 minuten na invoer in de KCC-objectlijst moeten verschijnen. Windows

    Default-First-Site-NameDC2
    	DSA Options: 0x00000001
    	DSA object GUID: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
    	DSA invocationId: 017997b5-d718-41d7-a3f3-e57ab5151b5c
    
    	==== INBOUND NEIGHBORS ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:31 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:31 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:32 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:32 2019 MSK
    
    	DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:32 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:33 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:33 2019 MSK
    
    	==== OUTBOUND NEIGHBORS ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:03 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:03 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:03 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:03 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:08 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:08 2019 MSK
    
    	DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:08 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:08 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:12:17 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:12:17 2019 MSK
    
    	==== KCC CONNECTION OBJECTS ====
    
    	Connection --
    	        Connection name: 6d2652b3-e723-4af7-a19f-1ee48915753c
    	        Enabled        : TRUE
    	        Server DNS name : DC1.test.local
    	        Server DN name  : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=local
    	                TransportType: RPC
    	                options: 0x00000001
    	Warning: No NC replicated for Connection!

    Waarschuwing “Geen NC gerepliceerd voor verbinding!” kan veilig worden genegeerd. Het lijkt erop dat Samba bij het registreren van een nieuwe DC een aantal replicatievlaggen verkeerd instelt.

    Het zou ook een goed idee zijn om de LDAP-replicatie te controleren.

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

    De bovenstaande opdracht vergelijkt de attribuutwaarden van de volledige directoryobjecten op DC1 en DC2.

    Voorbeeld van succesvolle replicatie

    * Comparing [DOMAIN] context...
    
    	* Objects to be compared: 249
    
    	* Result for [DOMAIN]: SUCCESS
    
    	* Comparing [CONFIGURATION] context...
    
    	* Objects to be compared: 1750
    
    	* Result for [CONFIGURATION]: SUCCESS
    
    	* Comparing [SCHEMA] context...
    
    	* Objects to be compared: 1739
    
    	* Result for [SCHEMA]: SUCCESS
    
    	* Comparing [DNSDOMAIN] context...
    
    	* Objects to be compared: 42
    
    	* Result for [DNSDOMAIN]: SUCCESS
    
    	* Comparing [DNSFOREST] context...
    
    	* Objects to be compared: 20
    
    	* Result for [DNSFOREST]: SUCCESS

    In sommige gevallen kunnen de attributen van objecten op verschillende controllers verschillen, en de opdrachtuitvoer zal u hiervan op de hoogte stellen. Maar niet in alle gevallen zal dit een teken zijn van een replicatieprobleem.

    De volgende stap is het handmatig configureren van stabiele replicatie van de SysVol-map.
    Het probleem is dat Samba DFS-R nog niet ondersteunt, net zoals het eerder FRS niet ondersteunde. Daarom is Samba voor replicatie tussen domeincontrollers afhankelijk van... Windows De enige werkende oplossing tot nu toe is eenrichtingsreplicatie met behulp van het hulpprogramma. Robocopy spoor compleet Windows Server Hulpmiddelenpakket 2003.

    Om compatibiliteitsproblemen te voorkomen, raden de Samba-ontwikkelaars aan om eerst het hulpprogrammapakket op een gewoon werkstation te installeren en Robocopy vervolgens naar de controller te kopiëren in de map "C:\Program Files (x86)".Windows Hulpmiddelenpakketten»

    Na de installatie kunt u in de taakplanner op de controller met Windows We maken een taak aan om replicatie uit te voeren met de volgende parameters:

    — Uitvoeren voor alle gebruikers
    — Trigger om overdag elke 5 minuten dagelijks uit te voeren
    — In de acties specificeren we het pad naar het robocopy-hulpprogramma, waarbij we als argumenten opgeven:

    DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec

    In dit specifieke geval kopiëren we de inhoud van de SysVol-directory van DC1 naar DC2.

  3. Draagbare gebruikersmappen met pam_mount-configuratieDoor ervaring heb ik twee haalbare opties gevonden om dit probleem met behulp ervan op te lossen.
    1. Een profielmap volledig vanuit het netwerk koppelen aan de /home-partitie. Een eenvoudige optie. Werkt prima als de namen van de mappen Mijn documenten, Downloads en Bureaublad in beide besturingssystemen hetzelfde zijn. Dit gaat ervan uit dat de pc op Linux is al aan het domein toegevoegd en gebruikers loggen in met hun domeinaccounts via sssd als authenticatie- en autorisatiemechanisme.
      # 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"/>
      

      waar:

      • uid="100000000-2000000000" — UID-bereik toegewezen aan domeingebruikers vanuit SSSD
      • server = "dfs" - bestandsservernaam
      • path="Profiel_Gebruikers/%(USER)" — een bron op een bestandsserver met een gehost gebruikersprofiel
      • koppelpunt=”~” — koppelpad naar de thuismap van de gebruiker

      De gebruikersaanmelding wordt doorgegeven aan de macrovariabele “%(USER)” die door pam_mount wordt gebruikt om verbinding te maken met onze netwerkbron, zoals ingevoerd in de displaymanager. Daarom is het belangrijk dat de login in DM wordt ingevoerd zonder expliciet de domeinnaam op te geven.

      In sssd.conf wordt dit opgelost door commentaar te geven of de optie op False te zetten gebruik_volledig_gekwalificeerde_namen, waarmee een volledig gekwalificeerde naammodus (inclusief domein) voor gebruikers en groepen mogelijk wordt gemaakt.

    2. De tweede methode is minder eenvoudig en onhandig, en naar mijn mening handiger en verdient de voorkeur. Het verschil met de eerste zit alleen in de pam_mount-configuratie
      # vim /etc/security/pam_mount.conf.xml
      <volume uid="100000000-2000200000" 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"/>
      <volume uid="100000000-2000200000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)/Downloads" mountpoint="~/Загрузки" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>
      <volume uid="100000000-2000200000" 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"/>

      Dat wil zeggen, we koppelen eenvoudigweg elk van onze mappen afzonderlijk in de overeenkomstige map

Bevindingen

Gedurende een halve maand testen op de testbank heeft dit pakket met succes verschillende afwisselende langdurige en kortdurende uitschakelingen van beide controllers doorstaan, vrijwel zonder gevolgen voor de klanten (eenmaal een klant op Windows7. Verloren vertrouwensrelaties.

Over het algemeen had ik een redelijk prettige ervaring met het werken met dit product, ondanks alle nuances waarmee ik zowel in het artikel als ‘achter de schermen’ te maken kreeg.

Er zijn valkuilen, heel veel zelfs, en naarmate je met Samba werkt, zul je er een groot aantal tegenkomen. Er zijn echter momenteel geen andere oplossingen waarmee je een hybride omgeving kunt opzetten, zowel met als zonder een directoryservice. Windows.

Bron: www.habr.com

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster