File Server
This commit is contained in:
@@ -6,9 +6,9 @@
|
|||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
||||||
#region KONFIGURATION
|
#region KONFIGURATION
|
||||||
$Domain = "byte.trail"
|
$Domain = "bytetrail.local"
|
||||||
$DomainDN = "DC=byte,DC=trail"
|
$DomainDN = "DC=bytetrail,DC=local"
|
||||||
$MailDomain = "byte.trail"
|
$MailDomain = "bytetrail.at"
|
||||||
$DefaultPW = ConvertTo-SecureString "ByteTrail2026!" -AsPlainText -Force
|
$DefaultPW = ConvertTo-SecureString "ByteTrail2026!" -AsPlainText -Force
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -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 ""
|
||||||
@@ -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.
|
||||||
Reference in New Issue
Block a user