Microsoft Active Directory
Siehe auch
Samba Active Directory
Begriffe:
AD: Active Directory
DC: Domain Controller
PDC: Primary Domain Controller
ADDC: Active Directory Domain Controller
Installation
Manchmal braucht sogar ein Linux-Systemadministrator ein Windows Active Directory um gewisse Themen zu testen. Dazu ist hier die Installation eines AD-Test-Setups unter Windows beschrieben.
Falls schon eine Windows Server Installation vorhanden ist, kann dieser Schritt übersprungen werden. Ansonsten lohnt es sich, das VDH von https://www.microsoft.com/en-us/evalcenter/download-windows-server-2022 herunterzuladen, in ein QCOW2-Image umzuwandeln und dann via KVM laufenzulassen:
wget https://software-static.download.prss.microsoft.com/pr/download/20348.169.amd64fre.fe_release_svc_refresh.210806-2348_server_serverdatacentereval_en-us.vhd
qemu-img convert -p -f vpc -O qcow2 20348.169.amd64fre.fe_release_svc_refresh.210806-2348_server_serverdatacentereval_en-us.vhd 20348.169.amd64fre.fe_release_svc_refresh.210806-2348_server_serverdatacentereval_en-us.qcow2
sudo cp 20348.169.amd64fre.fe_release_svc_refresh.210806-2348_server_serverdatacentereval_en-us.qcow2 /var/lib/libvirt/images/WIN-AD01.qcow2
sudo chown qemu:qemu /var/lib/libvirt/images/WIN-AD01.qcow2
Nachdem im KVM eine VM erstellt wurde (Empfehlung: 2 CPUs & 4 GB RAM), müssen nach dem Boot nur noch die Spracheinstellungen vorgenommen und ein Passwort für den Administrator vergeben werden.
Als nächstes muss sichergestellt werden, dass der Windows Server eine statische IP hat. Dazu rechts in der Taskbar das Netzwerk-Icon rechtsklicken > Open Network & Internet Settings > Change Adapter Options > Ethernet > Properties:
IPv6: deaktivieren
IPv4 > Properties: Fixe IP vergeben
Hostname setzen und RDP aktivieren:
Server Manager > Local Server:
Computer name > Change > Computer name: WIN-AD01
Remote Desktop: Allow remote connections to this computer
NTP-Server aktivieren:
net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org"
w32tm /config /reliable:yes
net start w32time
w32tm /query /configuration
AD-Rolle aktivieren:
Server Manager > Dashboard > Add roles and features > Next
Role-based or feature-based installation > Next
Select a server from the server pool: WIN-AD01 > Next
Server Roles: „Active Directory Domain Services“ anwählen > Add Features > Next > Next > Next > Install
Und den Server zum DC promoten:
Server Manager > Dashboard > Warnungsymbol oben rechts > Promote this server to domain controller
Add new forest > Root domain name: example.loc > Next
DSRM password: setzen > Next
DNS Options > Next
Additional Options > Next
Paths > Next
Review Options > Next > Install
Nun kann den ersten User anlegen:
Server Manager > Tools > Active Directory Users and Computers > Domain auswählen > Users rechtsklicken > New > User
File-Server konfigurieren
In einer produktiven Umgebung sollte der File-Server nicht auf dem gleichen Host wie der Domain Controller laufen. Bei einer Test-Umgebung ist dies kein Problem.
Server-Rolle installieren:
Server Manager > Dashboard > Add roles and features > Next
Role-based or feature-based installation > Next
Select a server from the server pool: WIN-AD01 > Next
Server Roles: „File and Storage Services“ > „File and iSCSI Services“ > „File Server“ anwählen > Add Features > Next > Next > Next > Install
Share einrichten:
Server Manager > File and Storage Services > Shares > TASKS > New Share:
SMB Share - Quick > Next
Type a custom path: New Folder,
C:\shares\share1
> NextShare name:
share1
> Next > Next > Next > Create
Die Rechte des Shares können im File Explorer via Rechtsklick > Properties bearbeitet werden:
Sharing > Advanced Sharing > Permissions: hier wird reguliert, wer auf den Share zugreifen darf
Security: hier werden die Rechte der Benutzer geregelt, analog zu Linux File Permissions
Zum Beispiel, um den Zugriff auf einen Unterordner auf einen einzigen Benutzer zu beschränken:
Security > Advanced > Disable inheritance > Remove all inherited permissions from this object
Security: Explizit dem Benutzer die gewünschten Rechte vergeben
AD-Join (RHEL 8)
update-crypto-policies --set DEFAULT:AD-SUPPORT
# hostname needs to be fully qualified and end with the AD domain
hostnamectl set-hostname linux01.example.loc
# use ADDC as DNS server
nmcli connection edit Wired\ connection\ 1
systemctl restart NetworkManager
# double check and test
cat /etc/resolv.conf
dig +short SRV _ldap._tcp.example.loc
# 0 100 389 win-ad01.example.loc.
dig +short SRV _kerberos._tcp.example.loc
# 0 100 88 win-ad01.example.loc.
dig +short SRV _kerberos._udp.example.loc
# 0 100 88 win-ad01.example.loc.
# use ADDC as NTP server
vim /etc/chrony.conf
# server win-ad01.example.loc iburst
systemctl restart chronyd.service
chronyc sources
chronyc tracking
reboot
dnf install -y samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
realm discover example.loc
# example.loc
# type: kerberos
# realm-name: EXAMPLE.LOC
# domain-name: example.loc
# configured: no
# server-software: active-directory
# client-software: sssd
# required-package: oddjob
# required-package: oddjob-mkhomedir
# required-package: sssd
# required-package: adcli
# required-package: samba-common-tools
realm join --user Administrator example.loc
# check
realm list
getent passwd administrator@example.loc
# administrator@example.loc:*:647200500:647200513:Administrator:/home/administrator@example.loc:/bin/bash
Damit die User sich ohne @example.loc
anmelden können muss default_domain_suffix = example.loc
gesetzt werden:
[sssd]
domains = example.loc
config_file_version = 2
services = nss, pam
default_domain_suffix = example.loc
...
systemctl restart sssd
Nun kann der Zugang via SSH getestet werden:
ssh Administrator@IP
AD-Join (Debian 12)
# hostname needs to be fully qualified and end with the AD domain
hostnamectl set-hostname debian12-20.example.loc
# use ADDC as DNS server
vim /etc/resolv.conf
echo 'prepend domain-name-servers IP-OF-ADDC;' >> /etc/dhcp/dhclient.conf
systemctl restart networking
# double check and test
cat /etc/resolv.conf
dig +short SRV _ldap._tcp.example.loc
# 0 100 389 win-ad01.example.loc.
dig +short SRV _kerberos._tcp.example.loc
# 0 100 88 win-ad01.example.loc.
dig +short SRV _kerberos._udp.example.loc
# 0 100 88 win-ad01.example.loc.
# use ADDC as NTP server
echo 'NTP=IP-OF-ADDC' >> /etc/systemd/timesyncd.conf
systemctl restart systemd-timedated.service
reboot
apt install adcli libnss-sss libpam-sss oddjob oddjob-mkhomedir packagekit realmd samba-common-bin sssd sssd-tools krb5-user
realm discover example.loc
# example.loc
# type: kerberos
# realm-name: EXAMPLE.LOC
# domain-name: example.loc
# configured: no
# server-software: active-directory
# client-software: sssd
# required-package: oddjob
# required-package: oddjob-mkhomedir
# required-package: sssd
# required-package: adcli
# required-package: samba-common-tools
realm join --user Administrator example.loc
# check
realm list
getent passwd administrator@example.loc
# administrator@example.loc:*:647200500:647200513:Administrator:/home/administrator@example.loc:/bin/bash
# enable mkhomedir
pam-auth-update --enable mkhomedir
Damit die User sich ohne @example.loc
anmelden können muss default_domain_suffix = example.loc
gesetzt werden:
[sssd]
domains = example.loc
config_file_version = 2
services = nss, pam
default_domain_suffix = example.loc
...
systemctl restart sssd
Nun kann der Zugang via SSH getestet werden:
ssh Administrator@IP
SSH-Keys im AD hinterlegen
Sollen SSH-Schlüssel im AD abgelegt werden, kann entweder ein FreeIPA-Server zwischen die Linux-Clients und das Windows Active Directory geschaltet werden, oder der SSH-Schlüssel kann als zusätzliches Attribut im AD abgelegt werden.
SSH-Key hinterlegen:
Server Manager > Tools > Active Directory Users and Computers:
View > „Advanced Features“ aktivieren
User auswählen und bearbeiten > Attribute Editor > altSecurityIdentities > Edit: SSH-Key eintragen und hinzufügen
SSSD-Konfiguration anpassen:
[sssd]
...
services = nss, pam, ssh
...
[domain/example.loc]
...
ldap_user_extra_attrs = altSecurityIdentities
ldap_user_ssh_public_key = altSecurityIdentities
systemctl stop sssd; rm -rf /var/lib/sss/{db,mc}/*; systemctl start sssd
SSH-Konfiguration anpassen:
...
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
...
sshd -t && systemctl restart sshd
SSH-Zugang testen:
ssh myuser@IP
SSH-Keys auf dem Linux-Client anzeigen lassen:
sss_ssh_authorizedkeys myuser@example.loc
Remote Server Administration Tools (RSAT) installieren
Die RSAT werden benötigt wenn man ein entferntes Windows Active Directory administrieren will. Die Tools werden auch verwendet um ein Samba Active Directory zu verwalten. Damit dies funktioniert muss man sich mit einem AD-Administrator Account bei dem Windows-Rechner anmelden, das heisst der Rechner muss im AD sein.
Install-WindowsFeature -Name RSAT
Install-WindowsFeature -Name RSAT-DNS-Server
Get-WindowsFeature | Where-Object { $_.Installed -eq $true -and $_.Name -like "RSAT*" }
Install-WindowsFeature -Name GPMC
Alternativ kann RSAT über „Manage Optional Features“ installiert werden.
Nun können die Tools in der mmc.exe
via File > Add/Remove Snap-in eingerichtet werden: