Hướng dẫn DNSSEC (DNS Security Extension) Full – Windows Server 2012 R2
Phần 1
1) DNS
DNS là một giao thức cho phép phân giải từ host name sang địa chỉ IP và ngược lại. Hoat động trên port 53, cấu trúc của DNS là cơ sở dữ liệu dạng cây thư mục. Bao gồm từ Top Level Domain (TLDs), Second Level Domain (SLDs), Sub Domain (Host).
DNS có 3 zone chính primary zone, secondary zone và stub zone. Dữ liệu của các zone được lưu trong một file gọi là zone file. Trong zone file chứa dữ liệu DNS, được thể hiện qua các record như SOA, A, CNAME, MX, NS, SRV.
2) DNSSEC
Giao thức DNS thiếu hụt tính bảo mật do không có công cụ xác thực nguồn dữ liệu được trao đổi giữa máy chủ (DNS Server) và máy trạm (Client), hoặc quá trình chuyển tiếp (Forwarder) giữa máy chủ này đến máy chủ khác trong Domain. Trước nguy cơ dữ liệu DNS có thể bị giả mạo và làm sai lệch, DNSSEC ra đời để giải quyết vấn đề này.
DNSSEC (Domain Name System Security Extensions), là một giao thức mở rộng trên nền DNS, cung cấp khả năng chứng thực (Authentication) và đảm bảo dữ liệu được toàn vẹn (Integrity) cho hệ thống DNS.
Gồm 3 mục tiêu chính :
- Sender Authentication : chứng thực dữ liệu cho quá trình gửi đi
- Data Integrity: bảo vệ toàn vẹn dữ liệu trong quá trình truyền, giúp người nhận được đảm bảo dữ liệu không bị thay đổi.
- Authenticated denial of existence: ngăn chặn kẻ tấn công, chúng phá hoại bằng cách tự động gửi xác nhận là không tồn tại dữ liệu mà Client truy vấn.
3) Ưu và nhược điểm của DNS
Giao thức DNS chống lại các loại tấn công như :
- Cache Poisoning or cache pollution : ngăn chặn cố gắng tấn công và đầu độc Cache DNS Server.
- Interference with DNS data on Secondary server : ngăn chặn attacker giả mạo làm DNS Primary Server để gửi các gói Update DNS qua cho các máy DNS Secondary Server để cập nhật.
- Data interception : ngăn chặn kẻ tấn công can thiệp vào dữ liệu, khi dữ liệu đang được gửi đi. (Prevent Spoofing)
Sau đây là đoạn video mô tả về DNS Spoofing :
DNS spoofing (giả mạo) là 1 kiểu tấn nhằm mục đích giả mạo DNS server để dùng các thông tin giả mạo trả lời lại client. Tấn công giả mạo này, kẻ tấn công sẽ cố gắng đoán xem DNS client or DNS server có gửi 1 truy vấn DNS nào không hoặc ngồi đợi 1 DNS response. Từ đó, sau khi lắng nghe thì attacker sẽ insert 1 DNS response giả mạo vào DNS server’s cache, quá trình này được gọi là cache posoining (đầu độc cache DNS server). Việc giả mạo này làm cho các máy chủ DNS server thì không có cách nào chứng thực được DNS data là hợp pháp, và sẽ dùng các thông tin này trả lời (reply) lại cho các client. Một kẻ tấn công cũng có thể set Time-to-Live (TTL) trên dữ liệu DNS giả với 1 con số lớn, vì thế DNS server sẽ cache (lưu lại) đoạn DNS bị đầu độc này với khoảng thời gian dài (nhiều tiếng hoặc nhiều ngày).
Nhược điểm của DNS là chưa giải quyết được các vấn đề như : Packet Sniffing, DDoS Attack, Phishing and Pharming.
4) Cấu trúc của DNSSEC
Thay vì hệ thống DNS có 4 phần tử chính : Delegation, Zone file management, Zone file distribution, resolving. Thì giờ đây sẽ có thêm 2 phần tử đó là Zone File Signing và Verifying để trở thành DNSSEC.
a) Đối với quá trình Zone File Signing
Zone signing là nơi DNSSEC thực hiện ký (signing) cho các zone dữ liệu và các phần tử (record) trong zone dữ liệu đó. Bao gồm 4 loại bản ghi mới và mỗi bản ghi đều có thông số TTL (Time-To-Live) :
- DNS Public Key (DNSKEY) : bằng cách dùng Public Key tạo ra DNSKEY và sử dụng DNSKEY để ký (signed) cho zone.
- DNS Private Key (RRSIG) : sử dụng để ký (signed) cho các record trong zone, bằng cách chúng sẽ dùng private key để tạo ra một chữ ký số (RRSIG) và RRSIG này sẽ được thêm vào mỗi record trong zone.
- NSEC (Next-Secure) : Authenticated denial of existence . Nếu client truy vấn 1 record trong DNS mà nó không có thì DNS server gửi trả lại là không tìm thấy record, nhưng việc này cũng cần phải được xác minh. NSEC record sẽ thực hiện nhiệm vụ này bằng cách tạo ra 1 chuỗi liên kết giữa các tài nguyên record lại với nhau. NSEC record sẽ được tạo ra và trong mỗi NSEC record đều có 1 Pointer chỉ tới NSEC record kế tiếp. NSEC record cuối cùng sẽ được trỏ tới NSEC record đầu tiên. (Như hình trên)
- DS (Delegation Signer) : mỗi child domain (child zone – tphcm.huypd.com) sẽ tạo ra một DS để gửi lên Parent Zone (Forest zone – huypd.com). DS này chứa DNSKEY của child zone đó. Dùng để thiết lập chứng thực giữa các zone trong Forest, thường dùng cho việc forwarder hoặc transfer zone.
b) Đối với quá trình Verifying
1) Khi client gửi truy vấn tìm kiếm địa chỉ www.tphcm.huypd.com tới Local DNS Server.
2) Local Server sẽ đi đến các Root Server để hỏi domain huypd.com và Root Server sẽ hướng dẫn Local Server đi đến trực tiếp Authoritative DNS Server của domain huypd.comcần tìm.
3) Sau đó Local DNS Server sẽ đến Authoritative DNS Server huypd.com để hỏi DNS Server tphcm.huypd.com, DNS Server huypd.com sẽ hướng dẫn Local DNS Server đi đến thẳng Authoritative DNS Server chịu trách nhiệm domain tphcm.huypd.com
4) Local DNS Server abc.com tiếp tục đến DNS Server tphcm.huypd.com để hỏi địa chỉwww.tphcm.huypd.com
5) Lúc này DNS Server sẽ kiểm tra trong zone và thấy có record www, DNS Server sẽ trả lời lại Local DNS Server abc.com bằng gói tin DNS Response bao gồm địa chỉ IP, DNSKEY, RRSIG.
6) Sau khi Local DNS Server nhận được gói DNS Response, lúc này nó cần phải kiểm tra xem dữ liệu DNS Response có phải đúng DNS Server tphcm.huypd.com gửi hay không ? Bằng cách đi lên Parent zone (tức DNS Server huypd.com) để xin số Delegation Signer (DS).
7) DNS Server huypd.com sẽ gửi số DS về cho Local DNS Server abc.com.
8) Sau khi nhận được DS, Local DNS Server abc.com lấy số DNSKEY trong gói tin DNS Response đem đi Hash với DS. Và ra một giá trị Hash 1.
9) Tiếp tục, Local DNS Server lấy DNSKEY và RRSIG đem đi Hash và ra một giá trị Hash 2
10) Lấy HASH 1 so sánh với HASH 2 xem có bằng nhau không, nếu bằng nhau thì dữ liệu là chính xác. Sau đó Local DNS Server sẽ xét các thông tin trong RRSIG (bao gồm thời gian RRSIG, Time To Live).
11) Sau khi đã xác minh, lúc này dữ liệu đã hoàn toàn chính xác, Local DNS Server trả về cho Client truy vấn.
Tham khảo video Verifying :
5) Các thành phần khác của DNSSEC
- Trust anchor : Trust anchor là DNSKEY và DS được cấu hình bằng tay và được ép vào 1 zone cụ thể nào đó. Nếu DNS server đang chạy trên Domain controller, trust anchors sẽ được lưu ở partition trong Active Directory Domain Services (AD DS) và có thể được replicate (nhân) sang tất cả các DC/ADC (Authoritative DNS Server) khác trong domain. Còn nếu trên một máy chủ DNS độc lập, trust anchor sẽ được lưu và đặt tên file là TrustAnchor.dns . Một DNS server chạy trên Windows Server 2012 sẽ cho phép người quản trị cấu hình trust anchor trong DNS Manager (phần Trust Point). Lưu ý : các máy DNS Server nào là Non-authoritative DNS Server thì lúc Re-sign hoặc Re-new DNSKEY (DS), bạn phải update bằng tay lại cho chúng.
- Key rollover : tạo key, lưu trữ key,gia hạn key, làm mới key được Key rollover quản lý. Trong Windows Server 2012, Active Directory sẽ được lưu trữ và làm nhiệm vụ replicate, và tự động rollover.
- DNS Aware : để có thể dùng tính năng DNSSEC, Client và Server phải kích hoạt tính năng truy vấn DNS bằng giao thức DNSSEC. Thường các Client hỗ trợ DNSSEC (Windows 7/8/8.1), đối với Windows Server là WS 2008 R2/2012/2012 R2.
- Key Master : Public Key Và Private Key là do Key Master tạo ra dựa trên các thuật toán Cryptographic Algorithm. Mỗi một zone sẽ được một Key Master quản lý. Key master có thể nằm bất kỳ máy DC/ADC (Authoritative DNS Server) trong domain.
Phần 2
A) Giới thiệu
Lab “Cấu hình và kiểm tra DNSSEC”. Bài lab bao gồm các bước cấu hình và kiểm tra tính năng DNSSEC, thực hiện sign – unsign zone, kiểm tra Trust Anchors, cấu hình DNSKEY, RRSIG và thiết lập Key Master cho zone.
Mô tả :
- Máy DC (172.1.1.1/24) : Nâng cấp DC với domain “huypd.com”. Cấu hình DNSSEC, tạo một zone có tên là “dnssec.huypd.com”, tạo một record A cho host “dc.dnssec.huypd.com”
- Máy ADC (172.1.1.2/24) : Join domain, nâng cấp lên thành Additional DC. Cấu hình địa chỉ IP và DNS như trong hình.
- Máy DNS (172.1.1.3/24) : Join domain, cài đặt role DNS, đặt địa chỉ IP và DNS như trong hình, cấu hình forwarder cho DNS.
- Máy Client (172.1.1.4/24) : Join domain, đặt địa chỉ IP + DNS như hình trên.
B) Thực hiện
1) Prepare and configure requirement
- Máy DC : đặt IP, DNS trỏ về chính mình. Thực hiện nâng cấp domain tại bài viết này, sau đó tạo zone “dnssec.huypd.com”, vào zone dnssec.huypd.com tạo một record A “dc.dnssec.huypd.com”
- Máy ADC : đặt IP, DNS. Thực hiện nâng cấp Additional Domain Controller
- Máy DNS : đặt IP, DNS (trong hình). Cài đặt role DNS và cấu hình Forwarder
- Máy Client Computer : join domain, đặt IP + DNS như trong hình
2) Query an unsigned zone without DNSSEC validation required (thực hiện truy vấn zone dnssec.huypd.com ở cơ chế DNS thông thường)
- Máy Client : mở Windows Powershell –> gõ “ resolve-dnsname dc.dnssec.huypd.com –server dns –dnssecok”. Ta thấy lúc này không có thông tin gì về RRSIG, TTL, thời gian signed và expiration….
3) Sign zone dnssec.huypd.com on DC and distribute trust anchors (Thực hiện ký zone dnssec.huypd.com và phân phối Trust anchors – DNSKEY cho máy DNS và ADC)
- Máy DC vào DNS –> Chuột phải zone “dnssec.huypd.com” và chọn DNSSEC –> Sign the zone
- Chọn “Use default settings to sign the zone” : theo tùy chọn mặc định của hệ thống
- Tiếp theo ta phân phối trust anchor cho máy DNS. Bằng cách trên máy DC, vào đường dẫn “C:WindowsSystem32”. Tìm thư mục “dns”
- Thực hiện share thư mục này với quyền Full Control
- Qua máy DNS, thực hiện Import DNSKEY vào –> Chuột phải Trust point, chọn Import –> DNSKEY
- Trỏ tới thư mục share –> chọn “ketset-dnssec.huypd.com”
- Lúc này ta đã import 2 DNSKEY vào, 1 key Active và 1 key Standby
- Máy DNS, mở PowerShell, thực hiện 2 lệnh “resolve-dnsname –namednssec.huypd.com.trustanchors –type dnskey-server dns” và lệnh “ get-dnsservertrustanchor dnssec.huypd.com” để kiểm tra xem key đã import chưa.
- Thực hiện distribute Trust Anchors (tức phân phối DNSKEY) cho máy ADC. Trên máy DC, chuột phải vào zone và chọn DNSSEC –> Properties
- Qua thẻ “Trust Anchor” : check vào ô đầu tiên, để thực hiện phân phối cho tất cả các máy DC/ADC (Authoritative DNS Server) trong domain
- Kiểm tra và ta thấy lúc này đã replicate qua cho máy ADC
4) Query a signed zone without DNSSEC validation required (Client chưa cấu hình tính năng DNSSEC, kiểm tra DNSSEC bằng cách dùng lệnh truy vấn thửdnssec.huypd.com)
- Máy Client gõ “resolve-dnsname dc.dnssec.huypd.com –server dns –dnssecok” . Lệnh này để test thử tính năng truy vấn bằng DNSSEC. Lúc này ta đã thấy các thông số của DNSSEC
- Lệnh “get-dnsclientnrptpolicy” là lệnh kiểm tra máy client có enable tính năng DNSSEC hay chưa.
5) Query a signed zone with DNSSEC validation required (Thực hiện enable tính năng DNSSEC cho các Client bằng Policy, sau đó kiểm tra lại việc truy vấn)
- Máy DC, vào Group Policy –> Cấu hình chính sách “Default Domain Policy” –> Chuột phải chọn “Edit”
- Chọn “Computer Configuration –> Policies –> Windows Settings –> Name Resolution Table” –> Stick vào 2 dấu “Enable DNSSEC in the rule” và “Require DNS clients to check that name and address data….”. Trên cùng chọn Suffix và khai báo zone DNSSEC vào “dnssec.huypd.com” –> Cuối cùng là chọn “Create” và “Apply”
- Máy DC, thực hiện “gpupdate /force” và “get-dnsclientnrptpolicy” để xem thông số cấu hình tính năng DNSSEC.
- Máy Client cũng thực hiện “gpupdate /force” và lệnh “get-dnsclientnrptpolicy”. Thông số “DNSSecValidationRequired” mà là True thì lúc này tất cả các client trong domain đều áp dụng tính năng truy vấn bằng DNSSEC.
6) Un-sign the zone and then re-sign the zone with custom parameters (Thực hiện Un-Sign và Re-sign lại zone)
- Chuột phải zone –> DNSSEC chọn Unsign the zone
- Re-sign lại zone
- Chọn “Customize zone signing parameters” để ta tiến hành cấu hình thông số cho việc Sign zone
- Chọn Key Master cho zone
- Tiếp theo ta sẽ cấu hình KSK, KSK là nơi quản lý và tạo ra các DNSKEY.
- Remove Key đang sẵn có, Add một key mới với thông số : thuật mã hóa RSA/SHA-512 và số bits là 2048. Nhấn OK
- Tiếp tục với ZKS, ZKS là nơi quản lý và tạo ra Private Key – RRSIG.
- Remove Key đang sẵn có, Add một key mới với thông số : thuật mã hóa RSA/SHA-512 và số bits là 1024. Nhấn OK
- Cấu hình NSEC, có thể để mặc định
- Enable tính năng tự động distribute trust anchor cho các máy AD/ADC khác trong domain
- Lúc này ta đã có các Record DNSSEC
- Key lúc này là RSA/SHA-512
- Thực hiện “get-dnsservertrustanchor –name dnssec.huypd.com –computer dns” . Ta thấy máy DNS vẫn dùng Trust Anchor cũ.
- Do ta Re-sign lại nên máy DNS sẽ không tự động cập nhật Trust Anchor mới được, và lúc này nó vẫn dùng Trust Anchor cũ. Ta cần phải cấu hình bằng tay lại. Ta thực hiện 2 lệnh bên dưới để xóa Trust Anchor cũ, “remove-dnsservertrustanchor” và “remove-dnsserverzone”
- Thực hiện import key mới vào
- Lúc này ta đã có Trust Anchor mới nhất
7) Transfer the Key Master role for dnssec.huypd.com to ADC (Thực hiện chuyển Key Master của zone sang máy ADC)
- Trên máy DC, chuột phải zone dnssec.huypd.com –> DNSSEC –> Properties
- Chọn thẻ Key Master –> Sau đó chọn “Use the following DNS Server as the Key Master”, chọn máy ADC.