What Is DNSSEC? DNS Security Extensions Explained

· Unified DNS Team · 10 min read

What Is DNSSEC?

DNSSEC (Domain Name System Security Extensions) is a suite of specifications that adds cryptographic authentication to DNS responses. It allows DNS resolvers to verify that the DNS data they receive is authentic and hasn't been tampered with in transit.

The Basics

What DNSSEC Protects Against

AttackWithout DNSSECWith DNSSEC
**Cache poisoning**Attacker injects fake recordsFake records rejected (signature fails)
**Man-in-the-middle**Responses can be modifiedModifications detected
**DNS spoofing**Fake DNS responses acceptedOnly signed responses accepted

What DNSSEC Doesn't Do

Why DNSSEC Exists

The Problem: DNS Has No Built-in Security

Traditional DNS was designed in the 1980s without authentication:

> User: "What's the IP for bank.com?"

> DNS: "It's 192.0.2.1"

> User: "Okay, I trust you" (connects to 192.0.2.1)

The vulnerability: Anyone in the path can give a fake answer, and the user has no way to verify it.

DNS Cache Poisoning Attack

Without DNSSEC, attackers can inject fake DNS records:

  1. Attacker sends spoofed DNS responses to resolver
  2. Resolver caches the fake IP address for bank.com
  3. Users querying that resolver get the fake IP
  4. Users connect to attacker's server instead of real bank
  5. Attacker captures credentials, serves malware, etc.

Real-World Attacks

2008 Kaminsky Bug:

2018 Sea Turtle Campaign:

How DNSSEC Works

The Chain of Trust

DNSSEC creates a cryptographic chain from the root zone down:

Zone LevelSigns
**Root Zone (.)**.com zone's public key (DS record)
**.com Zone**example.com's public key (DS record)
**example.com Zone**All DNS records for example.com
**Result**Verified DNS Response

The Signing Process

Zone administrator (you) does:

  1. Generate key pair (public + private key)
  2. Sign all DNS records with private key
  3. Publish public key in DNSKEY record
  4. Send hash of public key (DS record) to parent zone

Resolver (verifying) does:

  1. Request DNS record for example.com
  2. Receive record + signature (RRSIG)
  3. Request DNSKEY for example.com
  4. Verify signature using public key
  5. Verify DNSKEY is authorized by checking DS record at parent
  6. Continue chain up to trusted root

Simplified Example

Query: A record for www.example.com

Response includes:

RecordTypeValue
www.example.comA192.0.2.1
www.example.comRRSIG[signature of A record]
example.comDNSKEY[public key]
example.comRRSIG[signature of DNSKEY]

Verification steps:

  1. Use DNSKEY to verify RRSIG of A record
  2. Use parent's DS record to verify DNSKEY
  3. Chain continues to root (pre-trusted)
  4. Response is AUTHENTICATED

DNSSEC Record Types

DNSKEY Record

Contains the zone's public key used for verification:

example.com.    3600    IN    DNSKEY    257 3 13 (
    mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjj
    dnopqCmL4BEzMKVt3JvqDlhJR8Rf84pHHqNQ
    RkRgrpFXzMM= )
FieldValueMeaning
**Flags**257Key Signing Key (KSK)
**Protocol**3Always 3
**Algorithm**13ECDSA P-256
**Public Key**(base64)The actual public key

Key types:

DS Record

Hash of child zone's DNSKEY, published in parent zone:

; In the .com zone
example.com.    86400    IN    DS    12345 13 2 (
    49FD46E6C4B45C55D4AC69CBD3CD34AC
    1AFE51DE0496571B1582E5E5F3D9E5A8 )
FieldValueMeaning
**Key Tag**12345Identifier for the DNSKEY
**Algorithm**13DNSSEC algorithm
**Digest Type**2SHA-256
**Digest**(hex)Hash of the DNSKEY

RRSIG Record

Digital signature for a set of records:

www.example.com.    3600    IN    RRSIG    A 13 3 3600 (
    20260315000000 20260301000000 12345 example.com.
    FHpFMB3gLgJ8KLrq...signature... )
FieldValueMeaning
**Type Covered**ASigns A records
**Algorithm**13ECDSA P-256
**Labels**3Number of labels in name
**Original TTL**3600TTL when signed
**Signature Expiration**20260315...When signature expires
**Signature Inception**20260301...When signature became valid
**Key Tag**12345Which key signed this
**Signer's Name**example.comZone that signed
**Signature**(base64)The actual signature

NSEC/NSEC3 Records

Prove that a record does NOT exist (authenticated denial):

; NSEC: "Nothing exists between alpha.example.com and beta.example.com"
alpha.example.com.    3600    IN    NSEC    beta.example.com. A RRSIG NSEC

; NSEC3: Same concept but hashed (prevents zone enumeration)
1AVVQN74SG75UKFVF25DGCETHGQ638EK.example.com.    NSEC3    1 0 10 AABBCCDD (
    75B9554YFHEPG4QG0DP5QH0H8BKPG3H9 A RRSIG )

Implementing DNSSEC

Prerequisites

Before implementing DNSSEC:

  1. DNS provider must support DNSSEC — Not all do
  2. Registrar must accept DS records — Required for chain of trust
  3. Understand the commitment — Key management is ongoing

Implementation Steps

Step 1: Enable DNSSEC at DNS provider

Most providers handle signing automatically:

Step 2: Get DS record values

Provider generates and displays:

Key Tag: 12345
Algorithm: 13 (ECDSAP256SHA256)
Digest Type: 2 (SHA-256)
Digest: 49FD46E6C4B45C55D4AC69CBD3CD34AC1AFE51DE...

Step 3: Add DS record at registrar

Submit DS record values to your registrar:

Step 4: Verify DNSSEC

# Check if DNSSEC is working
dig +dnssec example.com

# Look for "ad" flag (Authenticated Data)
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2

# Use online validators
# - dnsviz.net
# - dnssec-analyzer.verisignlabs.com

Example: Cloudflare DNSSEC Setup

Step 1: Enable in Cloudflare

Dashboard → Select domain → DNS → DNSSEC → Enable

Step 2: Cloudflare displays DS record:

FieldValue
**Key Tag**2371
**Algorithm**13 (ECDSAP256SHA256)
**Digest Type**2 (SHA-256)
**Digest**4E087683391CF2F5A77CD970D9C9F4CC...

Step 3: Add DS at registrar (e.g., Namecheap):

  1. Domain List → Manage → Advanced DNS → DNSSEC → Add New DS Record
  2. Enter values from Cloudflare
  3. Save

Step 4: Wait and verify (24-48 hours for full propagation)

Pros and Cons

Advantages

Security benefits:

Business benefits:

Disadvantages

Complexity:

Risks:

Performance:

Should You Implement DNSSEC?

Good candidates:

May not be necessary:

Best Practices for MSPs

1. Evaluate Before Enabling

Not every client domain needs DNSSEC:

2. Use Managed DNSSEC

Let your DNS provider handle key management:

Avoid self-managed DNSSEC unless you have expertise.

3. Test in Staging First

Before enabling on production domains:

  1. Test on a non-critical domain
  2. Verify signing works
  3. Practice adding DS records
  4. Understand the troubleshooting process

4. Monitor DNSSEC Health

Set up monitoring for:

5. Document DNSSEC Status

Track for each client:

6. Have a Rollback Plan

If DNSSEC causes issues:

Quick rollback process:

  1. Remove DS record from registrar (breaks chain of trust)
  2. Wait for DS record TTL to expire
  3. Turn off signing at DNS provider

Note: During rollback, validating resolvers may see failures.

Troubleshooting DNSSEC

Domain Unreachable After Enabling DNSSEC

# Check if DNSSEC is causing the issue
dig +dnssec +cd example.com  # +cd bypasses validation

# If this works but normal query doesn't, DNSSEC is the problem
dig example.com  # Fails

Common causes:

Signature Expired

# Check signature expiration
dig +dnssec example.com RRSIG

# Look for expiration date in RRSIG record
# If expired, signatures won't validate

Fix: Contact DNS provider — automatic re-signing should occur.

DS Record Mismatch

# Compare DS at registrar vs DNSKEY at DNS provider
dig DS example.com @g.gtld-servers.net  # DS at TLD
dig DNSKEY example.com                   # DNSKEY at your DNS

# They should correspond (DS is hash of DNSKEY)

Fix: Update DS record at registrar with correct values from DNS provider.

Validating Resolvers

Test with validating resolver:

# Google DNS (validates DNSSEC)
dig @8.8.8.8 example.com

# Cloudflare DNS (validates DNSSEC)
dig @1.1.1.1 example.com

If these fail but non-validating resolvers work, DNSSEC is misconfigured.

Online Diagnostic Tools

Frequently Asked Questions

Does DNSSEC encrypt my DNS traffic?

No. DNSSEC authenticates DNS responses but doesn't encrypt them. For encryption, use DNS over HTTPS (DoH) or DNS over TLS (DoT).

Will DNSSEC break my website?

Not if implemented correctly. However, misconfigurations can cause validating resolvers to reject your DNS, making your domain unreachable.

Is DNSSEC required?

Not generally required, but some compliance frameworks and security standards recommend or require it. Check your specific requirements.

How do I know if DNSSEC is working?

dig +dnssec example.com
# Look for "ad" flag (authenticated data) in response

Or use online validators like dnsviz.net.

What happens if DNSSEC validation fails?

Validating resolvers (like 8.8.8.8, 1.1.1.1) return SERVFAIL and the domain appears unreachable. Non-validating resolvers may still return results.

Can I turn off DNSSEC after enabling?

Yes, but carefully:

  1. Remove DS record from registrar
  2. Wait for DS TTL to expire (up to 48 hours)
  3. Then turn off signing at DNS provider

Removing in the wrong order causes validation failures.

Does my registrar need to support DNSSEC?

Your registrar needs to accept DS records to publish them in the parent zone. Most major registrars support this.


Get Started with Unified DNS

DNSSEC implementation requires careful attention to detail. Unified DNS lets you view, modify, audit, and backup all DNS records including DNSSEC status — with automated backups protecting your configurations and documentation syncing to Hudu.

Unified DNS is live — try it free for a month with code FREETRIAL2026 at billing setup. No commitment. Or request a demo for a walkthrough.