Dargslan.WinDNSSec.psm1
|
<# .SYNOPSIS Windows DNS security audit toolkit — DNSSEC validation, DNS-over-HTTPS, DNS cache poisoning defense, and resolver hardening .DESCRIPTION 2026 Edition — Dargslan Windows Admin Toolkit. https://dargslan.com | https://dargslan.com/cheat-sheets .LINK https://dargslan.com #> function Get-DNSSecurityAudit { <# .SYNOPSIS Audit DNS security configuration and DNSSEC .DESCRIPTION Part of Dargslan.WinDNSSec (2026 Edition) — https://dargslan.com #> [CmdletBinding()] param([switch]$Json) $report = [ordered]@{ DNSServers = Get-DnsClientServerAddress -AddressFamily IPv4 -ErrorAction SilentlyContinue | Where-Object ServerAddresses | Select-Object InterfaceAlias, ServerAddresses DoHSettings = Get-DnsClientDohServerAddress -ErrorAction SilentlyContinue | Select-Object ServerAddress, DohTemplate, AllowFallbackToUdp, AutoUpgrade DNSCache = Get-DnsClientCache -ErrorAction SilentlyContinue | Group-Object Type | Select-Object Name, Count | Sort-Object Count -Descending | Select-Object -First 10 DNSSECValidation = (Get-DnsClientNrptRule -ErrorAction SilentlyContinue | Where-Object DnssecValidationRequired | Measure-Object).Count GlobalSettings = Get-DnsClient -ErrorAction SilentlyContinue | Select-Object InterfaceAlias, ConnectionSpecificSuffix, RegisterThisConnectionsAddress | Select-Object -First 5 Summary = [PSCustomObject]@{ DoHEnabled = $false; DNSSECRules = 0; CacheEntries = 0; DNSServers = 0 } } $report.Summary.DoHEnabled = ($report.DoHSettings | Measure-Object).Count -gt 0 $report.Summary.DNSSECRules = $report.DNSSECValidation $report.Summary.CacheEntries = ($report.DNSCache | Measure-Object -Property Count -Sum).Sum $report.Summary.DNSServers = ($report.DNSServers | Measure-Object).Count if ($Json) { return $report | ConvertTo-Json -Depth 3 } Write-Host "`n [DNS Security - 2026]" -ForegroundColor Cyan $report.Summary | Format-List $report.DNSServers | Format-Table -AutoSize if ($report.DoHSettings) { Write-Host " DNS-over-HTTPS:" -ForegroundColor Green; $report.DoHSettings | Format-Table -AutoSize } return $report } Export-ModuleMember -Function * |