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:
- Giới thiệu về Thuật ngữ, Thành phần và Khái niệm DNS
- So sánh các loại server DNS: Cách chọn cấu hình DNS phù hợp
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 .
Đị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:
- 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.
- 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.
- 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.
- 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 .
Để 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: và 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áo và request-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.com và foobar.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 .
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.
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ọ.
Nhấp vào Quản lý trong phần hồ sơ 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.
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.
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:
Ghi chú những dòng đã đánh dấu. Nói một cách dễ hiểu, họ đọc:
- Bản ghi DS # 2 (loại thông báo SHA256) xác minh KSK (id khóa 17385)
- KSK (mã khóa 17385) xác minh DNSKEY khác (ZSK)
- 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
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.042014-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