dnssec_check: DNSSEC-Status-Pruefung fuer Bash und PowerShell
Neue Skripte dnssec_check (Bash, dig) und dnssec_check.ps1 (PowerShell, Resolve-DnsName): pruefen fuer hinterlegbare Domains den DNSSEC-Status (aktiv/inaktiv/fail) inkl. Resolver-Selbsttest. README erweitert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -121,3 +121,64 @@ powershell -ExecutionPolicy Bypass -File C:\Tools\dig.ps1 example.com MX
|
||||
- Das Skript benötigt das Modul `DnsClient` (`Resolve-DnsName`), das unter Windows standardmäßig vorhanden ist.
|
||||
- Die Standardausgabe orientiert sich am `dig`-Format mit `QUESTION`- und `ANSWER SECTION`.
|
||||
- Mit `+short` werden nur die reinen Antwortwerte ausgegeben (eine pro Zeile).
|
||||
|
||||
---
|
||||
|
||||
# dnssec_check — DNSSEC-Status prüfen
|
||||
|
||||
Prüft für eine hinterlegbare Liste von Domains, ob **DNSSEC aktiviert und gültig
|
||||
signiert** ist, und testet vorab, ob der abgefragte Resolver überhaupt validiert.
|
||||
Es gibt zwei funktionsgleiche Varianten:
|
||||
|
||||
| Datei | Plattform | Werkzeug |
|
||||
|-------|-----------|----------|
|
||||
| `dnssec_check` | Linux/macOS (Bash) | `dig` (Paket `bind9-dnsutils`) |
|
||||
| `dnssec_check.ps1` | Windows (PowerShell 5.1+) | `Resolve-DnsName` (Modul `DnsClient`) |
|
||||
|
||||
## Status-Werte
|
||||
|
||||
| Status | Bedeutung |
|
||||
|--------|-----------|
|
||||
| `aktiv` | Domain ist DNSSEC-signiert und wird vom validierenden Resolver korrekt ausgeliefert |
|
||||
| `inaktiv` | Domain ist **nicht** signiert (kein DNSSEC) |
|
||||
| `fail` | DNSSEC vorhanden, aber Validierung schlägt fehl (SERVFAIL) |
|
||||
|
||||
Der Test ist nur aussagekräftig gegen einen **validierenden** Resolver (z. B. der
|
||||
interne BIND mit `dnssec-validation auto;`). Beide Skripte führen daher zuerst
|
||||
einen **Selbsttest** aus: `dnssec-failed.org` muss scheitern, `isc.org` muss
|
||||
signiert auflösen. Schlägt der Selbsttest fehl, wird gewarnt.
|
||||
|
||||
## Bash (Linux/macOS)
|
||||
|
||||
```bash
|
||||
sudo apt install bind9-dnsutils # falls dig fehlt
|
||||
chmod +x dnssec_check
|
||||
./dnssec_check # hinterlegte Liste, Resolver 127.0.0.1
|
||||
./dnssec_check -r 192.168.1.10 # anderer Resolver
|
||||
./dnssec_check --self-check # nur Resolver-Validierung prüfen
|
||||
./dnssec_check isc.org citeq.de # nur diese Domains
|
||||
```
|
||||
|
||||
## PowerShell (Windows)
|
||||
|
||||
```powershell
|
||||
.\dnssec_check.ps1 # hinterlegte Liste, Resolver 127.0.0.1
|
||||
.\dnssec_check.ps1 -Resolver 192.168.1.10
|
||||
.\dnssec_check.ps1 -SelfCheck # nur Resolver-Validierung prüfen
|
||||
.\dnssec_check.ps1 isc.org citeq.de # nur diese Domains
|
||||
```
|
||||
|
||||
> Hinweis: `Resolve-DnsName` liefert das AD-Header-Flag nicht zurück. Die
|
||||
> PowerShell-Variante wertet daher das Vorhandensein von **RRSIG-Records** aus.
|
||||
> Ob der Resolver wirklich validiert, klärt der Selbsttest.
|
||||
|
||||
## Domains hinterlegen
|
||||
|
||||
Die zu prüfenden Domains stehen direkt im Skript:
|
||||
- Bash: Array `DOMAINS=( … )` im Kopf
|
||||
- PowerShell: `$DefaultDomains = @( … )` im Kopf
|
||||
|
||||
## Exit-Code (für Monitoring / cron / Scheduled Task)
|
||||
|
||||
`0` = kein `fail`, `1` = mindestens eine Domain `fail`. Der reine Selbsttest gibt
|
||||
`0` (validiert), `1` (validiert nicht) bzw. `2` (Resolver nicht erreichbar) zurück.
|
||||
|
||||
Reference in New Issue
Block a user