DNSSEC là gì? Cơ chế bảo vệ DNS khỏi giả mạo phản hồi
DNS là một trong những dịch vụ nền tảng quan trọng nhất của hạ tầng CNTT. Mỗi khi người dùng truy cập một website, kết nối ứng dụng nội bộ, hay xác thực với dịch vụ cloud, hệ thống thường phải thực hiện truy vấn DNS để phân giải tên miền thành địa chỉ IP.
Nhưng DNS truyền thống được thiết kế từ thời Internet còn đơn giản, gần như không có cơ chế xác thực mạnh. Điều này tạo ra một vấn đề lớn: làm sao client biết phản hồi DNS nhận được là thật, chứ không phải phản hồi giả mạo từ attacker?
Đây chính là lý do DNSSEC ra đời. DNSSEC là gì?
DNSSEC (Domain Name System Security Extensions) là tập hợp các phần mở rộng bảo mật cho DNS, được thiết kế để bảo vệ tính toàn vẹn và tính xác thực của phản hồi DNS bằng chữ ký số (digital signatures).
Nói đơn giản:
DNS truyền thống chỉ trả lời:
DNSSEC cho phép client kiểm tra thêm:
Điểm quan trọng là DNSSEC không mã hóa lưu lượng DNS.
DNSSEC chỉ tập trung vào:
Vấn đề của DNS truyền thống
Trong DNS thông thường, client gửi query:
www.company.local ?
DNS server trả lời:
10.10.10.25
Client tin ngay phản hồi này.
Nếu attacker thực hiện:
thì client có thể bị chuyển hướng sang:
10.10.10.250
là một máy giả mạo.
Ví dụ thực tế:
Người dùng truy cập:
bank.example.com
Nhưng DNS giả mạo trả về IP của phishing server.
Người dùng nhìn URL vẫn đúng nhưng thực chất đang kết nối sai đích.
DNSSEC hoạt động như thế nào?
DNSSEC thêm cơ chế digital signature vào dữ liệu DNS.
Khi DNS server gửi phản hồi, nó không chỉ gửi record thông thường mà còn gửi chữ ký số.
Client sẽ dùng public key để xác minh:
Luồng đơn giản:
Client → DNS Query
DNS Server → DNS Response + Digital Signature
Client → Verify Signature
Nếu chữ ký hợp lệ:
Accept response
Nếu không:
Reject response
Các bước triển khai DNSSEC
Theo quy trình chuẩn, triển khai DNSSEC thường gồm 3 bước chính. 1. Ký DNS Zone
Zone DNS phải được ký số.
Ví dụ:
company.local
sẽ được DNS server ký bằng private key.
Quá trình này tạo ra các bản ghi DNSSEC bổ sung.
Không còn chỉ có:
A
AAAA
MX
CNAME
PTR
mà sẽ có thêm các record bảo mật.
2. Phân phối Trust Anchor
Client cần biết public key nào đáng tin cậy.
Điểm neo tin cậy này gọi là:
Trust Anchor
Nếu không có trust anchor, client không thể xác minh chữ ký.
Trong môi trường Windows enterprise, trust anchor thường được phân phối qua:
3. Cấu hình NRPT trên client
Windows dùng:
NRPT (Name Resolution Policy Table)
để định nghĩa policy cho DNS resolution.
NRPT cho phép:
Trong môi trường domain, admin thường deploy qua:
Group Policy
Các DNSSEC Resource Record quan trọng
RRSIG
Resource Record Signature
Đây là chữ ký số của một tập DNS record.
Ví dụ:
www.company.com A 10.1.1.10
DNSSEC sẽ có:
RRSIG
để chứng minh bản ghi này hợp lệ.
Hiểu đơn giản:
RRSIG = digital signature cho DNS data
DNSKEY
Chứa public key của zone.
Client dùng key này để verify chữ ký.
Ví dụ:
company.com DNSKEY
record này công bố public key.
Lưu ý:
Private key giữ bí mật trên DNS server.
NSEC
Dùng để xác thực trường hợp "không tồn tại".
Ví dụ user query:
abc.company.com
nhưng record không có.
DNS server không chỉ nói:
NXDOMAIN
mà còn phải chứng minh:
NSEC đảm nhiệm việc này.
NSEC3
Là phiên bản cải tiến của NSEC.
Thay vì lộ trực tiếp cấu trúc zone, NSEC3 dùng hashing.
Điều này giúp giảm nguy cơ:
zone enumeration
tức attacker dò toàn bộ DNS entries.
DS Record
Delegation Signer
Dùng khi có mô hình parent-child zone.
Ví dụ:
company.com
sales.company.com
Parent zone cần tin child zone.
DS record giúp xây dựng chuỗi tin cậy:
Root
→ Parent
→ Child
Đây gọi là:
Chain of Trust
DNSSEC không làm gì?
Điểm này rất hay bị hiểu nhầm.
DNSSEC KHÔNG:
Nếu muốn mã hóa DNS traffic:
DNSSEC chỉ xác minh tính xác thực.
Ví dụ dễ hiểu
Không có DNSSEC:
Bạn nhận một lá thư và chỉ nhìn nội dung.
Bạn không biết:
Có DNSSEC:
Lá thư có chữ ký số.
Bạn kiểm tra:
Nếu chữ ký sai → loại bỏ.
Góc nhìn dành cho System Engineer
DNSSEC đặc biệt quan trọng trong:
Vì DNS là nền móng cho:
Nếu DNS bị giả mạo, toàn bộ trust model của hệ thống có thể sụp đổ.
Kết luận
DNSSEC giải quyết một lỗ hổng lớn của DNS truyền thống: thiếu khả năng xác thực phản hồi.
Những điểm cần nhớ:
DNSSEC dùng:
Các record quan trọng:
Một câu tóm tắt:
DNSSEC không giấu DNS, DNSSEC xác thực DNS.
DNS là một trong những dịch vụ nền tảng quan trọng nhất của hạ tầng CNTT. Mỗi khi người dùng truy cập một website, kết nối ứng dụng nội bộ, hay xác thực với dịch vụ cloud, hệ thống thường phải thực hiện truy vấn DNS để phân giải tên miền thành địa chỉ IP.
Nhưng DNS truyền thống được thiết kế từ thời Internet còn đơn giản, gần như không có cơ chế xác thực mạnh. Điều này tạo ra một vấn đề lớn: làm sao client biết phản hồi DNS nhận được là thật, chứ không phải phản hồi giả mạo từ attacker?
Đây chính là lý do DNSSEC ra đời. DNSSEC là gì?
DNSSEC (Domain Name System Security Extensions) là tập hợp các phần mở rộng bảo mật cho DNS, được thiết kế để bảo vệ tính toàn vẹn và tính xác thực của phản hồi DNS bằng chữ ký số (digital signatures).
Nói đơn giản:
DNS truyền thống chỉ trả lời:
"IP của vnpro.vn là X.X.X.X"
DNSSEC cho phép client kiểm tra thêm:
"Thông tin này thực sự được DNS server hợp lệ ký xác nhận."
Điểm quan trọng là DNSSEC không mã hóa lưu lượng DNS.
DNSSEC chỉ tập trung vào:
- Xác thực dữ liệu DNS là hợp lệ
- Đảm bảo phản hồi không bị chỉnh sửa
- Ngăn chặn giả mạo DNS response
Vấn đề của DNS truyền thống
Trong DNS thông thường, client gửi query:
www.company.local ?
DNS server trả lời:
10.10.10.25
Client tin ngay phản hồi này.
Nếu attacker thực hiện:
- DNS spoofing
- DNS cache poisoning
- Man-in-the-middle attack
thì client có thể bị chuyển hướng sang:
10.10.10.250
là một máy giả mạo.
Ví dụ thực tế:
Người dùng truy cập:
bank.example.com
Nhưng DNS giả mạo trả về IP của phishing server.
Người dùng nhìn URL vẫn đúng nhưng thực chất đang kết nối sai đích.
DNSSEC hoạt động như thế nào?
DNSSEC thêm cơ chế digital signature vào dữ liệu DNS.
Khi DNS server gửi phản hồi, nó không chỉ gửi record thông thường mà còn gửi chữ ký số.
Client sẽ dùng public key để xác minh:
- dữ liệu có bị sửa không
- chữ ký có hợp lệ không
- dữ liệu có thực sự đến từ nguồn tin cậy không
Luồng đơn giản:
Client → DNS Query
DNS Server → DNS Response + Digital Signature
Client → Verify Signature
Nếu chữ ký hợp lệ:
Accept response
Nếu không:
Reject response
Các bước triển khai DNSSEC
Theo quy trình chuẩn, triển khai DNSSEC thường gồm 3 bước chính. 1. Ký DNS Zone
Zone DNS phải được ký số.
Ví dụ:
company.local
sẽ được DNS server ký bằng private key.
Quá trình này tạo ra các bản ghi DNSSEC bổ sung.
Không còn chỉ có:
A
AAAA
MX
CNAME
PTR
mà sẽ có thêm các record bảo mật.
2. Phân phối Trust Anchor
Client cần biết public key nào đáng tin cậy.
Điểm neo tin cậy này gọi là:
Trust Anchor
Nếu không có trust anchor, client không thể xác minh chữ ký.
Trong môi trường Windows enterprise, trust anchor thường được phân phối qua:
- Active Directory
- Group Policy
3. Cấu hình NRPT trên client
Windows dùng:
NRPT (Name Resolution Policy Table)
để định nghĩa policy cho DNS resolution.
NRPT cho phép:
- áp chính sách DNSSEC
- xác định zone nào phải xác minh
- chỉ định trust settings
Trong môi trường domain, admin thường deploy qua:
Group Policy
Các DNSSEC Resource Record quan trọng
RRSIG
Resource Record Signature
Đây là chữ ký số của một tập DNS record.
Ví dụ:
www.company.com A 10.1.1.10
DNSSEC sẽ có:
RRSIG
để chứng minh bản ghi này hợp lệ.
Hiểu đơn giản:
RRSIG = digital signature cho DNS data
DNSKEY
Chứa public key của zone.
Client dùng key này để verify chữ ký.
Ví dụ:
company.com DNSKEY
record này công bố public key.
Lưu ý:
Private key giữ bí mật trên DNS server.
NSEC
Dùng để xác thực trường hợp "không tồn tại".
Ví dụ user query:
abc.company.com
nhưng record không có.
DNS server không chỉ nói:
NXDOMAIN
mà còn phải chứng minh:
"Tên này thực sự không tồn tại."
NSEC đảm nhiệm việc này.
NSEC3
Là phiên bản cải tiến của NSEC.
Thay vì lộ trực tiếp cấu trúc zone, NSEC3 dùng hashing.
Điều này giúp giảm nguy cơ:
zone enumeration
tức attacker dò toàn bộ DNS entries.
DS Record
Delegation Signer
Dùng khi có mô hình parent-child zone.
Ví dụ:
company.com
sales.company.com
Parent zone cần tin child zone.
DS record giúp xây dựng chuỗi tin cậy:
Root
→ Parent
→ Child
Đây gọi là:
Chain of Trust
DNSSEC không làm gì?
Điểm này rất hay bị hiểu nhầm.
DNSSEC KHÔNG:
- mã hóa DNS traffic
- ẩn nội dung query
- bảo vệ privacy
- ngăn sniffing
Nếu muốn mã hóa DNS traffic:
- DNS over TLS (DoT)
- DNS over HTTPS (DoH)
DNSSEC chỉ xác minh tính xác thực.
Ví dụ dễ hiểu
Không có DNSSEC:
Bạn nhận một lá thư và chỉ nhìn nội dung.
Bạn không biết:
- ai gửi
- có bị sửa không
Có DNSSEC:
Lá thư có chữ ký số.
Bạn kiểm tra:
- đúng người gửi
- nội dung nguyên vẹn
Nếu chữ ký sai → loại bỏ.
Góc nhìn dành cho System Engineer
DNSSEC đặc biệt quan trọng trong:
- enterprise internal DNS
- Active Directory environments
- public authoritative DNS
- hybrid cloud infrastructures
Vì DNS là nền móng cho:
- domain authentication
- Kerberos
- LDAP
- web applications
- email routing
- service discovery
Nếu DNS bị giả mạo, toàn bộ trust model của hệ thống có thể sụp đổ.
Kết luận
DNSSEC giải quyết một lỗ hổng lớn của DNS truyền thống: thiếu khả năng xác thực phản hồi.
Những điểm cần nhớ:
DNSSEC dùng:
- digital signatures
- trust anchors
- chain of trust
Các record quan trọng:
- RRSIG → chữ ký
- DNSKEY → public key
- NSEC → chứng minh record không tồn tại
- NSEC3 → chống enumeration
- DS → liên kết trust giữa parent/child zones
Một câu tóm tắt:
DNSSEC không giấu DNS, DNSSEC xác thực DNS.