Kindersicheren DNS-Server auf Intune einrichten

DNS4EU for Public ist ein EU-finanzierter DNS-Resolver für Privatnutzer, der sichere und datenschutzkonforme Namensauflösung mit Servern ausschließlich in Europa bietet. Besonders relevant für Schulen ist das Profil „Protective + Child Protection“ (IPv4: 86.54.11.12), das bösartige Inhalte blockiert und zusätzlich Kategorien wie sexuelle Inhalte, Gewalt, Drogen oder Glücksspiel filtert.​ Wenn zusätzlich auch Werbung blockiert werden soll geht das mittels IPv4: 86.54.11.11

Auf Schülergeräten schützt es zentral über die WLAN- oder LAN-Konfiguartion, ohne zusätzliche Software – ideal für Windows-PCs in der Schule, aber auch für alle mit dem Internet verbundenen Geräte. Die Anonymisierung von IP-Adressen gewährleistet DSGVO-Konformität, während Echtzeit-Bedrohungsintelligenz und optionales Ad-Blocking den Jugendschutz verstärken, sodass Schüler sensible Seiten gar nicht erreichen - weder in der Schule noch privat!

DNS4EU

Um den DNS-Server für alle möglichen Geräte manuell einzurichten gibt es Beschreibungen unter DNS4EU Guidelines. Für die Einrichtung auf allen Schülergeräten, die mit Windows laufen, empfiehlt es sich natürlich, das mittels eines PowerShell-Skripts und über Intune zu machen.

Überraschenderweise gibt es in Intune keine native Möglichkeit, DNS-Server zu konfigurieren, aber beide folgenden PowerShell-Skripte erledigen das recht einfach.

Im folgenden Beispiel habe ich die erwähnten DNS4EU-Anti-Malware-Kinderschutz-DNS-Server verwendet.

Einfaches Skript

foreach ($c in Get-NetAdapter) {
  Set-DnsClientServerAddress -InterfaceIndex $c.interfaceindex -ServerAddresses ('86.54.11.11', '86.54.11.211')
}

In Intune habe ich das PowerShell-Skript wie folgt konfiguriert:

Verbessertes Skript:

mit Fehlerbehandlung, Logging und verbesserter Adapterauswahl

# Start logging for Intune troubleshooting
$LogPath = "$env:ProgramData\Microsoft\IntuneManagementExtension\Logs"
if (-not (Test-Path -Path $LogPath)) {
    New-Item -Path $LogPath -ItemType Directory -Force | Out-Null
}
$LogFile = Join-Path -Path $LogPath -ChildPath "Set-SchuelerDNSClient.log"
Start-Transcript -Path $LogFile -Force

Write-Host "Starte Skript zur Konfiguration der DNS-Server."

try {
    # Definieren der gewünschten DNS-Server
    $DnsServers = @('86.54.11.11', '86.54.11.211')

    # Nur physische, aktive Netzwerkadapter abrufen.
    # Dies verhindert Änderungen an virtuellen (VPN, Hyper-V) oder getrennten Adaptern.
    $TargetAdapters = Get-NetAdapter | Where-Object {
        $_.Status -eq 'Up' -and $_.Virtual -eq $false
    }
    if ($TargetAdapters) {
        foreach ($Adapter in $TargetAdapters) {
            Write-Host "Verarbeite Adapter: $($Adapter.Name) (InterfaceIndex: $($Adapter.InterfaceIndex))"
            Set-DnsClientServerAddress -InterfaceIndex $Adapter.InterfaceIndex -ServerAddresses $DnsServers
            Write-Host "DNS-Server für Adapter '$($Adapter.Name)' erfolgreich gesetzt."
        }
    } else {
        Write-Warning "Keine aktiven, physischen Netzwerkadapter gefunden."
    }
} catch {
    Write-Error "Ein unerwarteter Fehler ist aufgetreten: $_"
} finally {
    Write-Host "Skript zur Konfiguration der DNS-Server beendet."
    Stop-Transcript
}

Zusätzliche Maßnahme

Siehe auch: Kinderschutz mittels Hosts-Datei