Thứ năm, 25/09/2014 | 00:00 GMT+7

Cách thiết lập DNSSEC trên server tên NSD trên Ubuntu 14.04


Giới thiệu về DNSSEC

DNS Security Extensions (DNSSEC) là công nghệ được thiết kế để bảo vệ các ứng dụng và trình phân giải DNS sử dụng dữ liệu DNS giả mạo hoặc bị thao túng.

Vấn đề:
Kẻ tấn công có thể giả mạo phản hồi DNS hoặc đầu độc bộ nhớ cache DNS và đưa user đến một trang web độc hại với domain hợp lệ trên thanh địa chỉ của họ.

Giải pháp:
Server DNS có thẩm quyền được cấu hình DNSSEC ngăn chặn kiểu tấn công này bằng cách ký kỹ thuật số từng bản ghi tài nguyên bằng private key . Trình phân giải DNS xác minh tính toàn vẹn của bản ghi vùng bằng cách sử dụng public key và chữ ký số.

Về NSD

Name Server Daemon ( NSD ) là một phần mềm server DNS chỉ có thẩm quyền open-souce được phát triển bởi NLNet Labs . Nó sử dụng các file vùng kiểu BIND để dễ dàng cấu hình.

Server DNS chỉ có thẩm quyền cung cấp câu trả lời cho các truy vấn cho các vùng mà nó chịu trách nhiệm. Trong bài viết này, ta sẽ cài đặt server định danh NSD có thẩm quyền của riêng ta cho hai domain . Ta sẽ cấu hình NSD để cung cấp câu trả lời có chữ ký DNSSEC cho cả hai domain .

Yêu cầu

Bài viết này yêu cầu người đọc phải hiểu biết về các lĩnh vực sau:

Hai domain sẽ được sử dụng trong bài viết này:

Tên domain Server tên
example.com master.example.com
slave.example.com
foobar.org master.example.com
slave.example.com

Hai server sau sẽ chạy NSD:

Tên server Địa chỉ IP
master.example.com 1.1.1.1
slave.example.com 2.2.2.2

Bạn nên thay thế 1.1.1.1 bằng địa chỉ IP của server định danh chính trong suốt hướng dẫn và 2.2.2.2 bằng địa chỉ IP của server định danh phụ của bạn.

Mục tiêu của bài viết này là chỉ ra cách cài đặt server định danh, dù trạng thái DNSSEC của domain riêng của nó, có thể phục vụ các domain sử dụng DNSSEC. Tên domain example.com được sử dụng cho server tên để thuận tiện; không có yêu cầu cấu hình DNSSEC cho domain server định danh. Server định danh có thể dễ dàng được đặt thành master.my-soa.com và slave.my-soa.com.

Bạn cũng cần có địa chỉ IP mà bạn muốn các domain của bạn phân giải. Nếu bạn chưa cài đặt web server cho các domain này, bạn có thể tạo một Server thử nghiệm khác sẽ chạy một web server . Chọn hình ảnh LAMP trên Ubuntu 14.04 .

LAMP trên Ubuntu 14.04 hình ảnh

Địa chỉ IP của LAMP Server sẽ là 3.3.3.3 . IP này sẽ được sử dụng làm bản ghi A cho cả hai domain để kiểm tra xem chúng có phân giải được từ trình duyệt web hay không. Bạn nên thay thế 3.3.3.3 bằng (các) địa chỉ IP web server mong muốn của bạn trong suốt hướng dẫn.

Thuật ngữ DNSSEC

DNSSEC hoạt động dựa trên khái niệm mật mã public key và giới thiệu các loại bản ghi DNS mới. Trong phần này, ta sẽ thảo luận về một số thuật ngữ sẽ được sử dụng trong bài viết này.

Key

  • ZSK : Z one S igning K ey là một cặp private key / công khai. Khóa riêng tư tạo ra chữ ký số cho tất cả các bản ghi DNS trong khi public key được trình phân giải DNS sử dụng để xác minh.
  • KSK : K ey S igning K ey là một cặp private key / công khai. Khóa cá nhân ký ZSK trong khi public key xác minh nó.

Hồ sơ

  • DNSKEY : Chứa các public key của KSK và ZSK.
  • RRSIG : R esource R ecord Bản chất Sig tồn tại cho mỗi bản ghi và cung cấp chữ ký số của bản ghi đó. Bản ghi RRSIG dựa trên bản ghi chính nó và ZSK.
  • DS : Bản ghi D elegation S igner được sử dụng để xác minh tính toàn vẹn của các bản ghi DNSKEY. Bản ghi này được nhập vào console của công ty đăng ký domain và nằm trên server định danh có thẩm quyền của TLD.

Cài đặt DNSSEC cho một domain yêu cầu các bản ghi thích hợp với cả server định danh và công ty đăng ký.

Cách hoạt động của DNSSEC

Trước tiên, ta sẽ nói về DNSSEC từ quan điểm của chủ sở hữu domain (đó là bạn!). Bạn muốn đảm bảo tất cả các bản ghi DNS đến từ server định danh của bạn đã được ký. Bằng cách đó, nếu ai đó cố gắng giả mạo các bản ghi DNS của bạn, chúng sẽ được xác định là sai và khách truy cập của bạn có thể tránh truy cập vào một trang web độc hại.

Vì vậy, làm thế nào để bạn cài đặt điều đó? Đầu tiên, đối với mọi domain , bạn phải tạo hai cặp private key / công khai duy nhất trên server định danh. Khóa công khai cho domain được lưu trữ trong các bản ghi DNSKEY, được liệt kê trong file vùng cho domain đó. Hai loại bản ghi khác, bản ghi DS và bản ghi RRSIG, được tạo từ bản ghi DNSKEY. Ba loại bản ghi này đều được liên kết bằng mật mã. Tức là, khi bạn đã nhìn thấy một trong ba cái, bạn có thể biết liệu hai cái còn lại có hợp lệ hay không.

(Lưu ý: Để rõ ràng, mặc dù có nhiều loại bản ghi cho mỗi domain , ta sẽ đề cập đến chúng trong số ít cho phần còn lại của giải thích này.)

Tiếp theo, bạn tải bản ghi DS lên tổ chức đăng ký domain của bạn , công ty này sẽ xuất bản nó lên server định danh TLD cho domain của bạn. Vì cách duy nhất để xuất bản bản ghi DS là thông qua công ty đăng ký, điều này chứng minh rằng chủ sở hữu domain là người đã xuất bản bản ghi DS, điều này chứng minh tính hợp lệ của bản ghi DS đó. Mục đích của bản ghi DS là cài đặt một chuỗi xác thực giữa server định danh TLD và server định danh bạn đang chạy cho domain của bạn . Điều này hoạt động vì bản ghi DS dựa trên DNSKEY, vì vậy bất kỳ trình phân giải DNS nào cũng có thể kiểm tra xem DNSKEY của bạn có trùng với bản ghi DS hay không và do đó nó có phải là bản ghi chính xác cho domain hay không.

Bản ghi RRSIG là chữ ký đi kèm với các loại bản ghi DNS khác (như A, MX, v.v.) dựa trên chính giá trị bản ghi (chẳng hạn như địa chỉ IP) và DNSKEY.

Với các bản ghi DNSKEY, DS và RRSIG được cấu hình , DNSSEC hiện đã được cài đặt cho domain của bạn.

Tiếp theo, ta sẽ nói về nó từ góc độ user . Giả sử user muốn truy cập domain của bạn, vì vậy họ truy vấn trình phân giải DNS cho bản ghi A của domain của bạn. Trong ví dụ này, trình phân giải DNS đệ quy đã kiểm tra tính hợp lệ của DNSKEY cho domain này so với bản ghi DS trên server định danh TLD, mặc dù nó cũng có thể dễ dàng kiểm tra điều này lần đầu tiên.

Dưới đây là minh họa về cách hoạt động của truy vấn này:

  1. User gửi một truy vấn cho bản ghi A, bản ghi này sẽ đến server DNS đệ quy nhận biết DNSSEC.
  2. Server DNS phát hiện ra rằng domain được truy vấn hỗ trợ DNSSEC bằng cách khám phá các bản ghi DS của nó. Nó gửi một truy vấn cho bản ghi A với bit DO tới server định danh có thẩm quyền của bạn.
  3. Server định danh của bạn phản hồi với bản ghi A và bản ghi RRSIG tương ứng.
  4. Server DNS đệ quy tính toán giá trị của bản ghi A + bản ghi DNSKEY mà nó có trong file và kiểm tra nó với bản ghi RRSIG đã được giải mã. (Nó có thể kiểm tra bản ghi DS để xác thực bản ghi DNSKEY trước, nếu nó không có trong file .) Nếu hàm băm khớp, server DNS sẽ trả lại bản ghi A cho user , người hiện có thể truy cập trang web .

Xác thực DNSSEC

Để biết thêm về cách DNSSEC hoạt động, bạn có thể cần đọc bài viết này . Để có danh sách toàn diện hơn về thuật ngữ DNSSEC, hãy đọc phần này .

Bước Zero - Kiểm tra hỗ trợ domain và nhà đăng ký

Trước khi quyết định cài đặt DNSSEC trên server định danh NSD của bạn , hãy đảm bảo phần mở rộng domain của bạn (.com, .org, v.v.) và công ty đăng ký hỗ trợ DNSSEC.

Để kiểm tra xem tiện ích mở rộng domain đã sẵn sàng DNSSEC chưa, hãy truy vấn bản ghi DNSKEY của nó bằng lệnh sau:

dig DNSKEY com. +short 

Thao tác này sẽ trả về các public key như sau:

256 3 8 AQPbokupKUJ5LLAtDEs6R3nDOHxF2jQEFtJEFTiDcfbsZia4fg3EK9Wv D9ZIr+7t2n1ddqRGHnTTInHTjduaKFPqm2iKaDHdrc6095o1mzqojnd1 bTtI45XNu61QmT5IU4VPT7HDUSby+53gLAsjLPyNsNEMp7Cc52RVxCHD no9efw== 257 3 8 AQPDzldNmMvZFX4NcNJ0uEnKDg7tmv/F3MyQR0lpBmVcNcsIszxNFxsB fKNW9JYCYqpik8366LE7VbIcNRzfp2h9OO8HRl+H+E08zauK8k7evWEm u/6od+2boggPoiEfGNyvNPaSI7FOIroDsnw/taggzHRX1Z7SOiOiPWPN IwSUyWOZ79VmcQ1GLkC6NlYvG3HwYmynQv6oFwGv/KELSw7ZSdrbTQ0H XvZbqMUI7BaMskmvgm1G7oKZ1YiF7O9ioVNc0+7ASbqmZN7Z98EGU/Qh 2K/BgUe8Hs0XVcdPKrtyYnoQHd2ynKPcMMlTEih2/2HDHjRPJ2aywIpK Nnv4oPo/ 

Không có kết quả cho thấy thiếu hỗ trợ DNSSEC cho phần mở rộng domain đó.

Nó là không đủ nếu TLD của bạn hỗ trợ DNSSEC; công ty đăng ký domain cũng phải có tùy chọn để nhập các bản ghi DS vào console của họ. Điều này có thể được xác nhận bằng " tên công ty đăng ký dnssec" trên Google hoặc bằng cách hỏi trực tiếp công ty đăng ký. Sau đây là một số tổ chức đăng ký domain phổ biến hỗ trợ DNSSEC:

Khi bạn xác nhận cả TLD và công ty đăng ký domain đều hỗ trợ DNSSEC, bạn có thể bắt đầu cài đặt server định danh tùy chỉnh của bạn .

Bước một - Cài đặt và cài đặt NSD trên cả hai server

Trong bước này, ta sẽ cài đặt và cấu hình NSD trên cả server chính và server phụ. Ta cũng sẽ cài đặt các bản ghi DNS cho domain example.com . Phần này sẽ phục vụ như một cài đặt nhanh cho NSD. Đọc bài viết này để biết hướng dẫn chi tiết về cách cài đặt NSD.

Server chính

Ngoài gói server NSD, server chính yêu cầu các gói sau:

  • ldnsutils : Để tạo khóa DNSSEC và ký vùng.
  • hasged : Để tăng entropy . Việc cài đặt gói này sẽ diễn ra nhanh hơn quá trình tạo khóa.

Để tránh lỗi trong khi cài đặt, hãy tạo một user hệ thống có tên là nsd :

useradd -r nsd 

Tùy chọn -r tạo một user hệ thống. Cập nhật repository và cài đặt NSD, ldnsutils và hasged.

apt-get update apt-get install nsd ldnsutils haveged 

Việc chuyển vùng DNS từ server chính sang server phụ được bảo mật bằng bí mật chung. Sử dụng lệnh sau để tạo bí mật một cách ngẫu nhiên:

dd if=/dev/random count=1 bs=32 2> /dev/null | base64 

Ghi lại chuỗi kết quả . Ta sẽ sử dụng nó trong file cấu hình của cả server chính và server phụ.

sHi0avMk1bME89cnJdHkYzFBbvQmQ8YZ 

Tạo một folder riêng cho các file vùng:

mkdir /etc/nsd/zones 

Chỉnh sửa file cấu hình của NSD:

nano /etc/nsd/nsd.conf 

Đầu tiên là phần server chỉ định vị trí cho file vùng, log và file PID (Process ID):

server:     username: nsd     hide-version: yes     zonesdir: "/etc/nsd/zones"     logfile: "/var/log/nsd.log"     pidfile: "/run/nsd/nsd.pid" 

Lệnh ẩn version ngăn NSD trả về version của nó khi truy vấn lớp CHAOS được thực hiện.

Trong phần khóa , ta xác định một khóa có tên mykey và nhập bí mật đã tạo trước đó.

key:     name: "mykey"     algorithm: hmac-sha256     secret: "sHi0avMk1bME89cnJdHkYzFBbvQmQ8YZ" 

Mỗi phần vùng sẽ chứa domain , tên file vùng và thông tin chi tiết về server phụ của nó:

zone:     name: example.com     zonefile: example.com.zone     notify: 2.2.2.2 mykey     provide-xfr: 2.2.2.2 mykey zone:     name: foobar.org     zonefile: foobar.org.zone     notify: 2.2.2.2 mykey     provide-xfr: 2.2.2.2 mykey 

Các dòng thông báo:cung cấp-xfr: phải có địa chỉ IP của server phụ . Lưu file và tạo file vùng cho example.com .

nano /etc/nsd/zones/example.com.zone 

Ta sẽ thêm dữ liệu sau vào file vùng. Các biến không được đánh dấu, vì bạn cần phải tùy chỉnh tất cả các mục nhập:

$ORIGIN example.com. $TTL 1800 @       IN      SOA     master.example.com.    email.example.com. (                         2014080301                         3600                         900                         1209600                         1800                         ) @       IN      NS      master.example.com. @       IN      NS      slave.example.com. master  IN      A       1.1.1.1 slave   IN      A       2.2.2.2 @       IN      A       3.3.3.3 www     IN      CNAME   example.com. @       IN      MX      10 aspmx.l.google.com. @       IN      MX      20 alt1.aspmx.l.google.com. @       IN      MX      20 alt2.aspmx.l.google.com. @       IN      MX      30 aspmx2.googlemail.com. @       IN      MX      30 aspmx3.googlemail.com. 

Lưu file này và tạo file vùng cho foobar.org .

nano /etc/nsd/zones/foobar.org.zone 

Tệp vùng thứ hai:

$ORIGIN foobar.org. $TTL 1800 @       IN      SOA     master.example.com.    email.example.com. (                         2014080301                         3600                         900                         1209600                         1800                         ) @       IN      NS      master.example.com. @       IN      NS      slave.example.com. @       IN      A       3.3.3.3 www     IN      CNAME   foobar.org. @       IN      MX      0 mx.sendgrid.com. 

Lưu file và kiểm tra lỗi cấu hình bằng lệnh nsd-checkconf :

nsd-checkconf /etc/nsd/nsd.conf 

Một cấu hình hợp lệ sẽ không xuất ra bất cứ thứ gì. Khởi động lại server NSD:

service nsd restart 

Kiểm tra xem các bản ghi DNS có hiệu lực cho các domain hay không bằng cách sử dụng lệnh đào .

dig ANY example.com. @localhost +norec +short 

Một kết quả mẫu từ lệnh này:

master.example.com. email.example.com. 2014080301 3600 900 1209600 1800 master.example.com. slave.example.com. 3.3.3.3 10 aspmx.l.google.com. 20 alt1.aspmx.l.google.com. 20 alt2.aspmx.l.google.com. 30 aspmx2.googlemail.com. 30 aspmx3.googlemail.com. 

Lặp lại lệnh đào cho domain thứ hai:

dig ANY foobar.org. @localhost +norec +short 

Ta đã cài đặt và cấu hình thành công NSD trên server chính và cũng đã tạo hai vùng.

Server slaver

Server slaver chỉ yêu cầu gói NSD vì không có quá trình tạo hoặc ký khóa nào được thực hiện trên đó.

Tạo user hệ thống có tên là nsd :

useradd -r nsd 

Cập nhật repository và cài đặt NSD:

apt-get update apt-get install nsd 

Tạo một folder cho các file vùng:

mkdir /etc/nsd/zones 

Chỉnh sửa file cấu hình NSD:

nano /etc/nsd/nsd.conf 

Thêm chỉ thị cấu hình:

server:     username: nsd     hide-version: yes     zonesdir: "/etc/nsd/zones"     logfile: "/var/log/nsd.log"     pidfile: "/run/nsd/nsd.pid"  key:     name: "mykey"     algorithm: hmac-sha256     secret: "sHi0avMk1bME89cnJdHkYzFBbvQmQ8YZ"  zone:     name: example.com     zonefile: example.com.zone     allow-notify: 1.1.1.1 mykey     request-xfr: 1.1.1.1 mykey zone:     name: foobar.org     zonefile: foobar.org.zone     allow-notify: 1.1.1.1 mykey     request-xfr: 1.1.1.1 mykey 

Bí mật cho mykey phải giống hoàn toàn với bí mật được nhập trong server chính. Sử dụng địa chỉ IP của server chính trong các dòng allow-thông báorequest-xfr .

Kiểm tra lỗi cấu hình:

nsd-checkconf /etc/nsd/nsd.conf 

Khởi động lại dịch vụ NSD:

service nsd restart 

Buộc chuyển vùng cho cả hai domain bằng lệnh nsd-control :

nsd-control force_transfer example.com nsd-control force_transfer foobar.org 

Bây giờ, hãy kiểm tra xem server này có thể trả lời các truy vấn cho domain example.com hay không .

dig ANY example.com. @localhost +norec +short 

Nếu điều này trả về cùng một kết quả như chính thì vùng này được cài đặt đúng cách. Lặp lại lệnh đào cho domain foorbar.org để xác minh xem vùng của nó có được cài đặt đúng cách hay không. Hiện ta có một cặp server DNS NSD có thẩm quyền cho các domain example.comfoobar.org .

Đến đây, bạn có thể truy cập các domain của bạn trong trình duyệt web. Chúng sẽ phân giải thành server LAMP mặc định mà ta cài đặt hoặc bất kỳ server nào bạn đã chỉ định.

Bước hai - Tạo khóa và ký vùng

Trong bước này, ta sẽ tạo một cặp (riêng tư và công khai) của Khóa ký vùng (ZSK) và Khóa ký chính (KSK) cho mỗi domain . Các lệnh trong phần này phải được thực thi trên server chính trừ khi được chỉ định khác.

Thay đổi folder hiện tại thành folder vùng của NSD:

cd /etc/nsd/zones 

Lệnh ldns-keygen tạo file khóa và in tên của chúng ở định dạng K<domain>+<algorithm>+<key-id> . Thay vì ghi chú tên này, ta sẽ gán nó cho biến để sau này có thể dễ dàng tham chiếu.

Tạo ZSK trong thuật toán RSASHA1-NSEC3-SHA1 :

export ZSK=`ldns-keygen -a RSASHA1-NSEC3-SHA1 -b 1024 example.com` 

Tiếp theo tạo KSK bằng cách thêm tùy chọn -k vào cùng một lệnh:

export KSK=`ldns-keygen -k -a RSASHA1-NSEC3-SHA1 -b 2048 example.com` 

Thư mục này bây giờ sẽ có sáu file bổ sung sau:

  • 2 private key với phần mở rộng .private .
  • 2 public key có đuôi .key .
  • 2 bản ghi DS có phần mở rộng .ds .

Trong Bước Ba, ta sẽ tạo các bản ghi DS của một loại thông báo khác, vì vậy, để tránh nhầm lẫn, hãy xóa các file bản ghi DS này.

rm $ZSK.ds $KSK.ds 

Lặp lại các lệnh ldns-keygen cho domain foobar.org :

export ZSK2=`ldns-keygen -a RSASHA1-NSEC3-SHA1 -b 1024 foobar.org` export KSK2=`ldns-keygen -k -a RSASHA1-NSEC3-SHA1 -b 2048 foobar.org` rm $ZSK2.ds $KSK2.ds 

Lệnh ldns-signzone được sử dụng để ký vùng DNS. Tùy chọn -s của lệnh này nhận một giá trị muối . Ta tạo các charaters ngẫu nhiên, tính toán hàm băm SHA1 và chuyển giá trị này dưới dạng muối.

ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) example.com.zone $ZSK $KSK 

Một file mới có tên example.com.zone.signed được tạo.

Thực thi lệnh ldns-signzone cho domain foobar.org :

ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) foobar.org.zone $ZSK2 $KSK2 

NSD phải được cấu hình để sử dụng các tệp vùng .signed . Chỉnh sửa file cấu hình:

nano /etc/nsd/nsd.conf 

Sửa đổi tùy chọn zonefile: trong phần zone: cho cả hai domain .

zone:     name: example.com     zonefile: example.com.zone.signed     notify: 2.2.2.2 mykey     provide-xfr: 2.2.2.2 mykey zone:     name: foobar.org     zonefile: foobar.org.zone.signed     notify: 2.2.2.2 mykey     provide-xfr: 2.2.2.2 mykey 

Để áp dụng các thay đổi và reload file vùng, hãy thực hiện các lệnh sau:

nsd-control reconfig nsd-control reload example.com nsd-control reload foobar.org 

Kiểm tra bản ghi DNSKEY bằng cách thực hiện truy vấn DNS:

dig DNSKEY example.com. @localhost +multiline +norec 

Điều này sẽ in ra các public key của ZSK và KSK như sau:

; <<>> DiG 9.9.5-3-Ubuntu <<>> DNSKEY example.com. @localhost +norec +multiline ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14231 ;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;example.com.                IN DNSKEY  ;; ANSWER SECTION: example.com.            1800 IN DNSKEY 256 3 7 (                                 AwEAAbUfMzOJWWWniRSwDb2/2Q6bVpVoEPltPj0h5Qu6                                 hzBdYA4HJYlVXTJ6veNENI/5lV1y84Dhc47j4VAoA66F                                 j7xuTTZjzcuu0KAkQg8Jr2uCmmOuI/rZR7sWZMooHFZ1                                 JPPJZak8HKSNGvHXlMJiz9JPOA3ebJ/liG6lCGJshPah                                 ) ; ZSK; alg = NSEC3RSASHA1; key id = 2870 example.com.            1800 IN DNSKEY 257 3 7 (                                 AwEAAeMDpaVQJixHg1deUDBRRwVldJadgyRZPlieSoVf                                 ps3tYPvTD0nVBOQxenf+m4N/ALpnC5TH4GpxZLYS9IFc                                 rujudQrqA0UuTXBvIWP+XvuJ1yoyZCxO9PHV+GsefjI7                                 kvnmBD1V9UJlGVlHlB3YXHa3f/J5E0RujMnE4a19KG7b                                 HkYebK/2zjzhqXan9442VAG6jhw0lUUJZrCpZjMDEi9n                                 LhJOUSymxglQv1BftALmYnYcuHId9NCwZbvZMb7bS239                                 bm6ONjwqSHqW2slNhBnDVnng2tDfNwjR+eDz5oUbtw4b                                 LMtVACx1WzJEKbIN4rHY7aRe7Ao+4jvSJ8ozVrM=                                 ) ; KSK; alg = NSEC3RSASHA1; key id = 17385  ;; Query time: 5 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Sep 04 01:37:18 IST 2014 ;; MSG SIZE  rcvd: 467 

Lặp lại lệnh đào cho domain thứ hai và xác minh phản hồi:

dig DNSKEY foobar.org. @localhost +multiline +norec 

Server chính hiện cung cấp các phản hồi DNS đã ký .

Slaver

Khu vực này phải được chuyển giao cho server slaver ngay bây giờ. Đăng nhập vào server slaver và buộc chuyển cả hai vùng.

nsd-control force_transfer example.com nsd-control force_transfer foobar.org 

Truy vấn các bản ghi DNSKEY trên server này:

dig DNSKEY example.com. @localhost +multiline +norec 

Kết quả sẽ trả về cùng một DNSKEY mà ta đã thấy trên server chính. Cả hai server DNS đã được cấu hình để cung cấp các phản hồi DNS đã ký .

Bước 3 - Tạo bản ghi DS

Trong bước này, ta sẽ tạo hai bản ghi DS, trong bước tiếp theo, bạn sẽ nhập vào console của công ty đăng ký domain . Hồ sơ DS sẽ có đặc điểm kỹ thuật sau:

Thuật toán Loại thông báo
Bản ghi DS 1 RSASHA1-NSEC3-SHA1 SHA1
Bản ghi DS 2 RSASHA1-NSEC3-SHA1 SHA256

Các lệnh sau sẽ được thực thi trên server chính.

Lệnh ldns-key2ds tạo bản ghi DS từ file vùng đã ký. Chuyển sang folder file vùng và thực hiện các lệnh:

cd /etc/nsd/zones ldns-key2ds -n -1 example.com.zone.signed && ldns-key2ds -n -2 example.com.zone.signed 

Tùy chọn -1 sử dụng SHA1 làm hàm băm trong khi -2 sử dụng SHA256 cho cùng một. Tùy chọn -n ghi bản ghi DS kết quả vào stdout thay vì một file .

Điều này trả về hai dòng kết quả :

example.com. 1800    IN      DS      17385 7 1 c1b9f7f1425bc44976dc19165e48c60032e7820d example.com. 1800    IN      DS      17385 7 2 98216f4d66d24dbb752c46523a747a97bbad49d5846bbaa6256b6950b4a40995 

Bảng sau đây cho thấy từng trường của các bản ghi DS này:

Đánh dấu key Thuật toán Loại thông báo Tiêu
Bản ghi DS # 1 17385 7 1 c1b9f7f1 […]
Bản ghi DS # 2 17385 7 2 98216f4d [..]

Tạo bản ghi DS cho foobar.org :

cd /etc/nsd/zones ldns-key2ds -n -1 foobar.org.zone.signed && ldns-key2ds -n -2 foobar.org.zone.signed 

Ghi lại tất cả các phần của tất cả bốn bản ghi DS (hai bản ghi trên mỗi domain ) như trong bảng trên. Ta cần chúng trong bước tiếp theo.

Bước 4 - Cấu hình Hồ sơ DS với Nhà đăng ký

Trong phần này, ta sẽ thêm các bản ghi DS trong console của công ty đăng ký domain . Điều này xuất bản các bản ghi DS cho server định danh của Miền cấp cao nhất (TLD). Bước này sẽ sử dụng console của GoDaddy làm ví dụ.

Đăng nhập vào GoDaddy và chọn domain của bạn.

Chỉ cài đặt server định danh lần đầu:

Phần Tên server cần được thực hiện một lần để cài đặt server định danh lần đầu tiên. Nếu domain server tên của bạn là một cái gì đó khác nhau như my-soa.com, bạn nên thực hiện bước này để chỉ domain server tên.

Nhấp vào Quản lý trong phần Tên server .

Tên  server  GoDaddy

Một số tổ chức đăng ký domain có thể gọi đây là “ Server định danh con”. Nhấp vào Thêm tên server và tạo một tên máy chủ chính. example.com trỏ đến IP của server đầu tiên.

Thêm tên  server

Nhấp vào Thêm . Lặp lại bước này và tạo một slaver tên server . example.com trỏ đến IP của server thứ hai.

Tất cả các domain :

Hai tên server này phải được đặt làm server định danh cho domain này. Bấm Quản lý trong phần nameserver và thêm cả trong số họ.

Thêm  server  tên

Nhấp vào Quản lý trong phần hồ sơ DS .

GoDaddy quản lý profile  DS

Điền thông tin chi tiết vào các trường thích hợp. Tham khảo biểu đồ ở bước trước nếu cần.

Nhập thẻ Khóa, Thuật toán, Loại thông báo và Thông báo cho bản ghi DS đầu tiên.

Nhập thẻ Khóa, Thuật toán, Loại thông báo và Thông báo cho bản ghi DS thứ hai.

Lưu cả hai bản ghi.

Sau một vài phút, truy vấn các bản ghi DS.

dig DS example.com. +trace +short | egrep '^DS' 

Đầu ra phải chứa cả bản ghi DS.

DS 17385 7 2 98216F4D66D24DBB752C46523A747A97BBAD49D5846BBAA6256B6950 B4A40995 from server 192.55.83.30 in 1 ms. DS 17385 7 1 C1B9F7F1425BC44976DC19165E48C60032E7820D from server 192.55.83.30 in 1 ms. 

Khi thực hiện các bước này cho domain thứ hai, hãy đảm bảo bạn đã đặt server định danh thành domain server định danh thích hợp.

 Server  domain  thứ hai

Không có tên server nào được tạo cho domain này.

Bước năm - Xác minh hoạt động DNSSEC

DNSSEC có thể được xác minh tại các trang web sau:

Một thử nghiệm thành công từ trang web đầu tiên hiển thị kết quả sau:

Kiểm tra DNSSEC

Ghi chú những dòng đã đánh dấu. Nói một cách dễ hiểu, họ đọc:

  1. Bản ghi DS # 2 (loại thông báo SHA256) xác minh KSK (id khóa 17385)
  2. KSK (mã khóa 17385) xác minh DNSKEY khác (ZSK)
  3. ZSK (mã khóa 2870) xác minh chữ ký của bản ghi A

Cả server chính và server phụ hiện đều cung cấp các phản hồi DNSSEC.

Bạn cũng có thể xem cả hai domain trong trình duyệt web của bạn . Họ phải trỏ đến trang Apache / Ubuntu mặc định trên web server thử nghiệm mà ta đã cài đặt trên 3.3.3.3 hoặc bất kỳ web server nào mà bạn đã chỉ định trong các mục @ domain .

Sửa đổi bản ghi vùng

Để sửa đổi bản ghi vùng, phải chỉnh sửa file không có chữ ký ( example.com .zone ). Sau khi sửa đổi, số sê-ri SOA phải được tăng lên và vùng phải được ký lại để thay đổi có hiệu lực.

Sê-ri SOA có định dạng sau.

YYYYMMDDnn 

Khi thực hiện thay đổi đối với file vùng, hãy đặt nó thành ngày hiện tại. Vì vậy, khi thực hiện thay đổi đầu tiên vào ngày 22 tháng 9 năm 2014, sê-ri sẽ là:

2014092201 

Hai chữ số đầu tiên sẽ được tăng lên khi áp dụng các thay đổi tiếp theo trong cùng một ngày. Nếu bạn quên tăng nối tiếp SOA, các thay đổi được thực hiện đối với file vùng sẽ không được chuyển đến server phụ.

Lưu ý: Việc áp dụng các thay đổi đối với file .signed trực tiếp sẽ làm mất hiệu lực chữ ký và gây ra lỗi xác thực.

Thay vì nhập các lệnh dài mỗi lần để ký vùng, ta sẽ tạo một tập lệnh shell. Tạo một file trên server DNS chính và chỉnh sửa nó.

nano /usr/local/bin/dnszonesigner 

Dán mã sau:

#!/bin/bash PDIR=`pwd` ZONEDIR="/etc/nsd/zones" #location of your zone files DOMAIN=$1 cd $ZONEDIR KSK=$(basename $(grep -r "`grep '(ksk)' $DOMAIN.zone.signed | cut -f3-10`" K$DOMAIN.*.key | cut -d':' -f1) .key) ZSK=$(basename $(grep -r "`grep '(zsk)' $DOMAIN.zone.signed | cut -f3-10`" K$DOMAIN.*.key | cut -d':' -f1) .key) /usr/bin/ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) -f $ZONEDIR/$DOMAIN.zone.signed $DOMAIN.zone $ZSK $KSK /usr/sbin/nsd-control reload $DOMAIN /usr/sbin/nsd-control notify $DOMAIN cd $PDIR 

Bạn sẽ nhận ra hầu hết các dòng này từ trước đó trong hướng dẫn nơi ta thực hiện chúng theo cách thủ công.

Làm cho file này có thể thực thi:

chmod +x /usr/local/bin/dnszonesigner 

Bây giờ sau khi thêm, xóa hoặc chỉnh sửa các bản ghi DNS, hãy đảm bảo tăng nối tiếp SOA và thực thi tập lệnh này.

dnszonesigner example.com 

Tập lệnh shell này hoạt động từ bất kỳ folder nào khi ta đặt nó trong folder được xác định trong biến $ PATH .

Đọc thêm

Bản sao bổ sung của Sharon Campbell


Tags:

Các tin liên quan

Cách cấu hình một cụm Mesosphere sẵn sàng sản xuất trên Ubuntu 14.04
2014-09-25
Cách triển khai ứng dụng Meteor.js trên Ubuntu 14.04 với Nginx
2014-09-22
Cách cài đặt Drupal trên server Ubuntu 14.04 với Apache
2014-09-19
Cách sử dụng Reprepro cho Kho lưu trữ Gói Bảo mật trên Ubuntu 14.04
2014-09-10
Cách cài đặt Discourse trên Ubuntu 14.04
2014-09-10
Cách sử dụng Foreman để quản lý các node puppet trên Ubuntu 14.04
2014-09-08
Cách sử dụng phân phối giám sát mở với Check_MK trên Ubuntu 14.04
2014-09-08
Cách cài đặt và cấu hình một Daemon và Ứng dụng khách SNMP trên Ubuntu 14.04
2014-08-18
Giới thiệu về cách sử dụng Consul, Hệ thống khám phá dịch vụ, trên Ubuntu 14.04
2014-08-15
Cách cấu hình Lãnh sự trong Môi trường Sản xuất trên Ubuntu 14.04
2014-08-15