diff --git a/Setup-ByteTrail-AD.ps1 b/1_AD_Setup.ps1 similarity index 99% rename from Setup-ByteTrail-AD.ps1 rename to 1_AD_Setup.ps1 index dc72569..5eea8d0 100644 --- a/Setup-ByteTrail-AD.ps1 +++ b/1_AD_Setup.ps1 @@ -6,9 +6,9 @@ # ============================================================ #region KONFIGURATION -$Domain = "byte.trail" -$DomainDN = "DC=byte,DC=trail" -$MailDomain = "byte.trail" +$Domain = "bytetrail.local" +$DomainDN = "DC=bytetrail,DC=local" +$MailDomain = "bytetrail.at" $DefaultPW = ConvertTo-SecureString "ByteTrail2026!" -AsPlainText -Force #endregion diff --git a/2_GPO_und_Fileserver_Setup.ps1 b/2_GPO_und_Fileserver_Setup.ps1 new file mode 100644 index 0000000..9adb840 --- /dev/null +++ b/2_GPO_und_Fileserver_Setup.ps1 @@ -0,0 +1,153 @@ +# ============================================================ +# ByteTrail GmbH – GPO & File Server Setup Script +# Domäne: bytetrail.local +# Ausführen auf: SRV-DC01 (bzw. Fileserver) als Domain Admin +# ============================================================ + +Import-Module GroupPolicy -ErrorAction Stop + +#region KONFIGURATION +$Domain = "bytetrail.local" +$NetBIOSDom = "BYTE" # NetBIOS Name für Rechtevergabe +$DomainDN = "DC=bytetrail,DC=local" +$FreigabePfad = "D:\Freigabe" +#endregion + +Write-Host "`n=== ByteTrail GPO & Fileserver Setup gestartet ===" -ForegroundColor Cyan + +# ============================================================ +# TEIL 1: GRUPPENRICHTLINIEN (GPOs) +# ============================================================ +Write-Host "`n[1/2] Konfiguriere Gruppenrichtlinien (GPOs)..." -ForegroundColor Yellow + +$GpoSecurityName = "ByteTrail_Base_Security" +$GpoDrivesName = "ByteTrail_Mapped_Drives" + +# 1.1 Basis-Sicherheit (Domänenweit) +if (!(Get-GPO -Name $GpoSecurityName -ErrorAction SilentlyContinue)) { + try { + $gpoSec = New-GPO -Name $GpoSecurityName -Comment "Basis-Sicherheitsrichtlinien (Bildschirmsperre etc.)" + New-GPLink -Name $GpoSecurityName -Target $DomainDN -LinkEnabled Yes | Out-Null + + # ECHTE RICHTLINIEN SETZEN: Automatische Bildschirmsperre nach 15 Minuten (900 Sekunden) erzwingen + Set-GPRegistryValue -Name $GpoSecurityName -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName "ScreenSaveActive" -Type String -Value "1" | Out-Null + Set-GPRegistryValue -Name $GpoSecurityName -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName "ScreenSaverIsSecure" -Type String -Value "1" | Out-Null + Set-GPRegistryValue -Name $GpoSecurityName -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName "ScreenSaveTimeOut" -Type String -Value "900" | Out-Null + + Write-Host " [+] GPO '$GpoSecurityName' erstellt, konfiguriert und mit Domäne verknüpft." -ForegroundColor Green + } catch { + Write-Host " [!] Fehler bei GPO '$GpoSecurityName': $($_.Exception.Message)" -ForegroundColor Red + } +} else { + Write-Host " [~] GPO '$GpoSecurityName' existiert bereits." -ForegroundColor Gray +} + +# 1.2 Netzlaufwerke GPO-Hülle (Verknüpft mit allen relevanten OUs) +if (!(Get-GPO -Name $GpoDrivesName -ErrorAction SilentlyContinue)) { + try { + New-GPO -Name $GpoDrivesName -Comment "Automatische Netzlaufwerk-Zuweisungen fuer Fachabteilungen" | Out-Null + + # Mit den OUs aus Skript 1 verknüpfen + New-GPLink -Name $GpoDrivesName -Target "OU=Geschaeftsfuehrung,$DomainDN" -LinkEnabled Yes | Out-Null + New-GPLink -Name $GpoDrivesName -Target "OU=Sales,$DomainDN" -LinkEnabled Yes | Out-Null + New-GPLink -Name $GpoDrivesName -Target "OU=Marketing,$DomainDN" -LinkEnabled Yes | Out-Null + New-GPLink -Name $GpoDrivesName -Target "OU=Service,$DomainDN" -LinkEnabled Yes | Out-Null + + Write-Host " [+] GPO '$GpoDrivesName' erstellt und mit OUs verknüpft." -ForegroundColor Green + } catch { + Write-Host " [!] Fehler bei GPO '$GpoDrivesName': $($_.Exception.Message)" -ForegroundColor Red + } +} else { + Write-Host " [~] GPO '$GpoDrivesName' existiert bereits." -ForegroundColor Gray +} + +# ============================================================ +# TEIL 2: FILESERVER ORDNER & BERECHTIGUNGEN (NTFS) +# ============================================================ +Write-Host "`n[2/2] Konfiguriere Ordnerstruktur & NTFS-Berechtigungen auf $FreigabePfad..." -ForegroundColor Yellow + +# 2.1 Hauptordner erstellen und Freigabe (SMB) einrichten +if (!(Test-Path $FreigabePfad)) { + New-Item -Path $FreigabePfad -ItemType Directory -Force | Out-Null +} + +try { + Get-SmbShare -Name "Freigabe" -ErrorAction Stop | Out-Null + Write-Host " [~] SMB-Freigabe 'Freigabe' existiert bereits." -ForegroundColor Gray +} catch { + New-SmbShare -Name "Freigabe" -Path $FreigabePfad -FullAccess "$NetBIOSDom\Domain Admins" -ChangeAccess "$NetBIOSDom\Domain Users" | Out-Null + Write-Host " [+] SMB-Freigabe 'Freigabe' erstellt." -ForegroundColor Green +} + +# Vererbung am Hauptordner deaktivieren +$AclBase = Get-Acl $FreigabePfad +$AclBase.SetAccessRuleProtection($true, $true) +Set-Acl -Path $FreigabePfad -AclObject $AclBase + +# 2.2 Definition der Unterordner und zugehöriger Gruppen +$Folders = @( + @{ Name = "Geschaeftsfuehrung"; Group = "GRP-GF-VOLLZUGRIFF" } + @{ Name = "Sales"; Group = "GRP-SALES-FILES" } + @{ Name = "Marketing"; Group = "GRP-MKT-FILES" } + @{ Name = "Service"; Group = "GRP-SVC-FILES" } +) + +$RightsModify = [System.Security.AccessControl.FileSystemRights]::Modify +$RightsRead = [System.Security.AccessControl.FileSystemRights]::ReadAndExecute +$RightsFull = [System.Security.AccessControl.FileSystemRights]::FullControl +$Inheritance = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit, [System.Security.AccessControl.InheritanceFlags]::ObjectInherit +$Propagation = [System.Security.AccessControl.PropagationFlags]::None +$Allow = [System.Security.AccessControl.AccessControlType]::Allow + +$RuleAdmin = New-Object System.Security.AccessControl.FileSystemAccessRule("$NetBIOSDom\GRP-ADMINS", $RightsFull, $Inheritance, $Propagation, $Allow) +$RuleGFRead = New-Object System.Security.AccessControl.FileSystemAccessRule("$NetBIOSDom\GRP-GF-VOLLZUGRIFF", $RightsRead, $Inheritance, $Propagation, $Allow) + +# 2.3 Abteilungsordner anlegen und Rechte setzen +foreach ($Folder in $Folders) { + $FolderPath = "$FreigabePfad\$($Folder.Name)" + if (!(Test-Path $FolderPath)) { New-Item -Path $FolderPath -ItemType Directory -Force | Out-Null } + + $Acl = Get-Acl -Path $FolderPath + $Acl.SetAccessRuleProtection($true, $false) # Entfernt alte vererbte Rechte + + # Admins bekommen Vollzugriff + $Acl.AddAccessRule($RuleAdmin) + + # Fachabteilung bekommt Ändern-Rechte + $RuleDept = New-Object System.Security.AccessControl.FileSystemAccessRule("$NetBIOSDom\$($Folder.Group)", $RightsModify, $Inheritance, $Propagation, $Allow) + $Acl.AddAccessRule($RuleDept) + + # GF bekommt Leserechte (außer in ihrem eigenen Ordner) + if ($Folder.Name -ne "Geschaeftsfuehrung") { + $Acl.AddAccessRule($RuleGFRead) + } + + Set-Acl -Path $FolderPath -AclObject $Acl + Write-Host " [+] Rechte für Ordner '$($Folder.Name)' erfolgreich gesetzt." -ForegroundColor Green +} + +# 2.4 Öffentlicher Austausch-Ordner (Alle dürfen lesen/schreiben) +$AustauschPath = "$FreigabePfad\Austausch" +if (!(Test-Path $AustauschPath)) { New-Item -Path $AustauschPath -ItemType Directory -Force | Out-Null } +$AclAustausch = Get-Acl -Path $AustauschPath +$AclAustausch.SetAccessRuleProtection($true, $false) + +$RuleAll = New-Object System.Security.AccessControl.FileSystemAccessRule("$NetBIOSDom\Domain Users", $RightsModify, $Inheritance, $Propagation, $Allow) +$AclAustausch.AddAccessRule($RuleAll) +$AclAustausch.AddAccessRule($RuleAdmin) +Set-Acl -Path $AustauschPath -AclObject $AclAustausch +Write-Host " [+] Rechte für Ordner 'Austausch' erfolgreich gesetzt." -ForegroundColor Green + +# ============================================================ +# ZUSAMMENFASSUNG +# ============================================================ +Write-Host "`n=== Setup abgeschlossen ===" -ForegroundColor Cyan +Write-Host "GPOs:" -ForegroundColor White +Write-Host "- Base_Security (mit aktivem Screenlock nach 15min) wurde auf die Domäne angewendet." +Write-Host "- Mapped_Drives wurde erstellt und mit den OUs verknüpft." +Write-Host "`nFileserver:" -ForegroundColor White +Write-Host "- Ordnerstruktur unter $FreigabePfad wurde angelegt und SMB-Freigabe aktiviert." +Write-Host "- NTFS-Berechtigungen (Sicherheit) wurden strikt nach dem AGDLP-Prinzip gesetzt." +Write-Host "`nHINWEIS ZU NETZLAUFWERKEN:" -ForegroundColor Yellow +Write-Host "Um die Laufwerke (z.B. Laufwerk S: für Sales) tatsächlich bei den Nutzern einzublenden, öffne nun 'gpmc.msc' (Gruppenrichtlinienverwaltung), bearbeite die GPO 'ByteTrail_Mapped_Drives' und füge unter Benutzerkonfiguration -> Einstellungen -> Windows-Einstellungen -> Laufwerkzuordnungen die Pfade (z.B. \\SRV-DC01\Freigabe\Sales) hinzu." +Write-Host "" \ No newline at end of file diff --git a/DOKU-Fileserver-Setup.md b/DOKU-Fileserver-Setup.md new file mode 100644 index 0000000..a14a850 --- /dev/null +++ b/DOKU-Fileserver-Setup.md @@ -0,0 +1,39 @@ +# Betriebshandbuch: Installation und Setup des File Servers +**Projekt:** Aufbau einer ausfallsicheren IT-Infrastruktur (ByteTrail GmbH) +**Dokument:** DOKU-Fileserver-Setup.md +**Stand:** SS 2026 + +Diese Dokumentation fasst die grundlegenden Schritte zur Installation und Konfiguration des redundanten Fileservers zusammen. + +--- + +## Schritt 1: Server-Rollen installieren +Auf den vorgesehenen Fileservern in der Zentrale (`SRV-HQ-FS01`) und der Niederlassung (`SRV-BR-FS01`) müssen über den Server-Manager (oder PowerShell) folgende Windows-Rollen installiert werden: +* **Dateiserver** (File Server) +* **DFS-Namespaces** (DFS-N) – für den domänenweiten Namensraum (z.B. `\\bytetrail.local\Daten`) +* **DFS-Replikation** (DFS-R) – für die Synchronisation der Daten zwischen Zentrale und Niederlassung + +## Schritt 2: Grundverzeichnis & SMB-Freigabe einrichten +1. Eine separate Daten-Partition (z.B. Laufwerk `D:\`) bereitstellen. +2. Das Basisverzeichnis erstellen: `D:\Freigabe`. +3. Den Ordner als SMB-Netzwerkfreigabe (Share) freigeben: + * **Share-Name:** `Freigabe` (oder `Daten`) + * **Share-Berechtigungen:** `Domänen-Admins` (Vollzugriff) und `Domänen-Benutzer` (Ändern). + * *Hinweis: Die eigentliche Restriktion der Zugriffe erfolgt nicht hier, sondern über NTFS im nächsten Schritt.* + +## Schritt 3: Ordnerstruktur anlegen & Vererbung deaktivieren +1. Im Basisverzeichnis die Abteilungsordner anlegen (`Geschaeftsfuehrung`, `Sales`, `Marketing`, `Service`, `Austausch`). +2. Auf dem Basisordner (`D:\Freigabe`) in den Erweiterten Sicherheitseinstellungen die **Vererbung deaktivieren** ("Alle vererbten Berechtigungen in explizite Berechtigungen umwandeln" bzw. entfernen). + +## Schritt 4: NTFS-Berechtigungen setzen (AGDLP-Prinzip) +Für jeden Abteilungsordner werden nun die spezifischen Rechte über die Active Directory Sicherheitsgruppen vergeben: +1. **IT-Admins** (`GRP-ADMINS`) erhalten überall **Vollzugriff** (wichtig für Backups). +2. Die jeweilige **Fachabteilung** (z.B. `GRP-SALES-FILES` für den Sales-Ordner) erhält das Recht **Ändern** (Modify). +3. Die **Geschäftsführung** (`GRP-GF-VOLLZUGRIFF`) erhält auf alle Fremd-Ordner das Recht **Lesen & Ausführen** (Read & Execute). +4. Der Ordner **Austausch** bekommt für alle `Domänen-Benutzer` das Recht **Ändern**. + +## Schritt 5: DFS (Distributed File System) konfigurieren +Um die geforderte Ausfallsicherheit zu gewährleisten: +1. **Namespace erstellen:** Im DFS-Management einen domänenbasierten Namespace (z.B. `\\bytetrail.local\Freigabe`) erstellen. +2. **Ordnerziele hinzufügen:** Die SMB-Shares der Zentrale und der Niederlassung als Ziele (Folder Targets) hinzufügen. +3. **Replikationsgruppe erstellen:** Eine DFS-Replikationsgruppe (Full Mesh / bidirektional) zwischen beiden Servern einrichten, damit neue Dateien automatisch synchronisiert werden. \ No newline at end of file diff --git a/DOKU-Mailserver-Setup.txt b/DOKU-Mailserver-Setup.md similarity index 100% rename from DOKU-Mailserver-Setup.txt rename to DOKU-Mailserver-Setup.md