Innhold
1 Sette opp Active Directory Domain Controller
Dette dokumentet beskriver oppsett av en Active Directory Domain Controller for test-bruk i Cerebrum. For oppsett av produksjon, se ./sync/setup-windows.html.
1.1 Testmaskiner og domener
Per i dag har vi følgende maskiner satt opp for bruk med cere-utv04:
- ceretestad01.uio.no (domene: DC=ceretest-ad01,DC=local)
- ceretestad02.uio.no (domene: DC=ceretest-ad02,DC=local)
- ceretestad03.uio.no (domene: DC=ceretestad03,DC=local)
- ceretestad04.uio.no (domene: DC=ceretest-ad04,DC=local)
Du skal kunne bruke RDP og WinRM mot desse.
Dei ligg i kat 5, altså sandboks-nettet, så tilgang kan vere trøblete. Om WinRM ikke fungerer frå Cerebrum, kan du evt. køyre gjennom ein tunnell via td. ulrik:
cere-utv04 $ ssh -L 20110:ceretestad01.uio.no:5985 -N ulrik.uio.no
1.2 Oppsett av AD-domene
1.2.1 Opprett innloggingsbruker
Opprett en lokal bruker cereauth, og meld den inn i lokal sikkerhetsgruppe Administrators:
$dn = "cn=Users,dn=<domene>…" $a = New-ADUser -Name cereauth -AccountExpirationDate $null -PasswordNeverExpires $true -Enabled $true -AccountPassword (Read-Host -AsSecureString "AccountPassword") -Path "$dn" -PassThru $g = Get-ADGroup "cn=Administrators,$dn" Add-ADGroupMember $g -Member $a
TODO: Finn ut hvordan cereauth kan få påloggingstilgang uten å være administrator.
MERK: Husk å lage passordfil for brukeren på maskinen som AD-synken kjører fra!
1.2.2 Lag OU
Lag et nytt OU, «Cerebrum», som AD-integrasjonen kan administrere.
New-ADOrganizationalUnit -Name Cerebrum -Path "dc=<domene>…"
1.2.3 Opprett Domene-administrator
Opprett lokal gruppe cerebrum_administrators. Opprett en lokal bruker cerebrum_service, og meld denne inn i cerebrum_administrators:
$dn = "dn=<domene>,dn=<tld>" $a = New-ADUser -Name cerebrum_service -AccountExpirationDate $null -PasswordNeverExpires $true -Enabled $true -AccountPassword (Read-Host -AsSecureString "AccountPassword") -Path "cn=Users,$dn" -PassThru $g = New-ADGroup -Name cerebrum_administrators -GroupScope "DomainLocal" -Path "cn=Users,$dn" -PassThru Add-ADGroupMember $g -Member $a
MERK: Husk å lage passordfil for brukeren på maskinen som AD-synken kjører fra!
1.2.4 Gi tilgang til å administrere OU
Deleger tilgang til OU-en Cerebrum til lokal gruppe cerebrum_administrators.
- Åpne «Active Directory Users and Computers», velg OU-en «Cerebrum»
- [Høyreklikk] → «Delegate Control…»
- Legg til gruppen cerebrum_administrators
- Velg «Create a custom task to delegate»
- Velg «This folder…»
- Velg alt (huk av for «Full Control»)
- «Finish»
1.2.5 Sett opp GPO for Cerebrum
Lag en ny GPO for Cerebrum:
New-GPO -Name CerebrumPolicy -Domain <domene…> | New-GPLink -target "ou=Cerebrum,dc=<domene>,dc=<tld>"
Sett opp password policy-regler i GPO-en:
- Åpne «Group Policy Management», velg CerebrumPolicy under <domene>\Group Policy Object
- [Høyreklikk] → «Edit…»
- Computer Configuration\Windows Settings\Security Settings\Account Policies\Password Policy
- Enforce password history: 0
- Maximum password age: 0
- Minimum password age: 0
- Minimum password length: 0
- Password must meet complexity requirements: Disabled
- Store passwords using reversible encryption: Disabled
1.3 Sertifikater (self-signed)
- Installer Certificate Authority
- Server Manager → Add roles and services
- Active Directory Certificate Services
- Konfigurer CA
- Server Manager → Configure Active Directory Certificate Services on the destination server
- Velg rolle «Certification Authority»
- Velg «Standalone CA»
- Velg «Root CA»
- Velg «Create new private key»
- Velg «SHA512» og «Allow administrator…»
- Gi CA-sertifikatet lang varighet, 10 år burde holde
- Eksporter CA-sertifikat
- Start certlm
- Velg «Personal» → «Certificates» → <din CA>
- [Høyreklikk] → «All tasks» → «Export»
- IKKE ekporter private key!
- «Base-64 encoded X.509 (.CER)
- Lagre til fil
- Lag certificate request
- Start certlm
- [Høyreklikk] → «All tasks» -> «Advanced operations» -> «Create custom request»
- Velg «Proceed without enrollment»
- Velg «(no template CNG-key», «PKCS#10»
- «Certificate Information», velg «Custom request» -> «Details» -> «Properties»
- Fyll inn:
- General → Friendly name: <fqdn>
- Subject → Subject-name: Common Name – <fqdn>
- Extensions → Extended key usage: Server Authentication og Client Authentication
- Private key → Key options: Key Size – 4096
- Private key → Key options: «Make private key exportable»
- Private key → Key options: «Allow private key to be archived»
- Private key → Select Hash Algo: SHA512
- Lagre request-fil
- Signer request
- Start «Certification Authority» (certsrv), velg din CA.
- [Høyreklikk] → «All tasks» → «Submit new request»
- Finn frem til request-fil
- Velg «Pending request» → <din request> → [Høyreklikk] → «All tasks» → Issue
- Eksporter sertifikat
- I «Certification Authority» (certsrv), finn det signerte sertifikatet («Issued Certificates»)
- [Høyreklikk] → «Open»
- «Details» → «Copy to file…»
- «Base-64 encoded X.509 (.CER)
- Lagre til fil
- Importer signert sertifikat i certlm
- Åpne certlm
- Velg «Personal» → «Certificates»
- [Høyreklikk] → «All tasks» → «Import…»
- Velg det signerte sertifikatet du nettopp eksporterte
- Overfør de eksporterte sertifikatene til maskinen AD-synken kjører fra (DB_AUTH_DIR), og lag en PEM-fil som inneholder begge sertifikatene.
1.4 WinRM
1.4.1 Sett opp GPO for WinRM
Lag en ny GPO for WinRM-/RemoteShell-innstillinger:
New-GPO -Name CerebrumRemote -Domain <domene…> | New-GPLink -target "dc=<domene>…"
Sett opp inntillinger i GPO-en
- Åpne «Group Policy Management», velg CerebrumRemote under <domene>\Group Policy Object
- [Høyreklikk] → «Edit…»
- Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management\WinRM Server
- Allow remote server management through WinRM: Enabled (IPv4/IPv6 filter: *)
- Allow Basic authenticaton: Enabled
- Allow unencrypted traffic: Disabled
- Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Shell
- Allow Remote Shell Access: Enabled
- Specify idle Timeout: Enabled (10800000)
- MaxConcurrentUsers: Enabled (100)
- Specify maximum amount of memory in MB per Shell: Enabled (500)
- Specify maximum number of processes per Shell: Enabled (1000)
- Specify maximum number of remote shells per user: Enabled (1000)
- I Powershell, kjør gpupdate.exe for å la endringene ta effekt
1.4.2 Sett opp HTTPS-listener
Merk: bruk cmd.exe, og ikke powershell for å utføre kommandoene
Hent SHA-fingerprint fra sertifikatet vi lagde
Kjør:
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{CertificateThumbprint="<thumbprint>"})
I «Server Manager» → «All Servers» → «Services», finn og velg «WinRm»
[Høyreklikk] → Restart
1.4.3 Firewall
- Åpne «Windows Firewall with Advanced Security»
- Fjern «Incoming» → «Windows Remote Management (HTTP-In)»
- I «Incoming» → «New Rule…»
- Velg «Port»
- Velg «TCP» «5986»
- Velg «Allow»
- Gi et furnuftig navn («WinRM (HTTPS-In)»)
1.5 Teste
Lag en adconf.py som inneholder:
SYNCS = { 'test': { 'server': <fqdn til AD-domenekontroller>, 'domain': <domene>, 'auth_user': 'cereauth', 'domain_admin': r'<domene>\cerebrum_service', 'encrypted': True, 'ca': os.path.join(cereconf.DB_AUTH_DIR, '<sertifikat-fil>'), }, }
Kjør:
python powershell --type test echo 'Foo'