MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. サーバー技術
  4. DNSSECを設定しセキュアな環境を構築する

DNSSECを設定しセキュアな環境を構築する

2019 6/21
サーバー技術
2014年9月10日2019年6月21日

DNSSECってよく聞くのだが、結局じぶんで環境を作ってみないとわかんねぇ。

ということで作ってみました。

目次
  1. DNSSECとは
    1. 権威(root)サーバの設定
    2. 署名作成
  2. キャッシュサーバの設定
    1. 権威サーバ(root)のKSK公開鍵の入手する
    2. キャッシュDNSでDNSSECが正常に動いているか確認
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

DNSSECとは

DNSSECはDNSサーバから送られてくる名前解決(IPアドレスやホスト名)の情報の信頼性をセキュアにする拡張機能です。

DNSサーバとクライアント間で証明書を使うことにより、正当な回答をし、DNS応答の偽造、改ざんを防ぐことができます。

権威(root)サーバの設定

まずは、ゾーンの署名に使う鍵を作ります。
鍵は2種類あります。

  • KSK(Key SigningKey)
    ゾーン署名鍵ZSKに署名する鍵
  • ZSK(Zone Signing Key)
    ゾーンに署名するゾーン署名鍵

署名鍵をつくりには「dnssec-keygen」コマンドを使います。

今回は以下でオプションを使って作成しました。

  • -f
    →keyflag KSKを指定
  • -a
    →アルゴリズム RSASHA256を指定
  • -b
    →keyサイズ(bit) 4096bit
  • -n
    →nametype ZONEを指定

それでは実際にコマンドを叩きます。

1
2
# dnssec-keygen -f KSK -a RSASHA256 -b 4096 -n zone v4.com
Generating key pair.

このコマンドは時間がかなりかかります。

とりあえず速攻作成するには「-r /dev/urandom」オプションを使用する
※chroot配下の「/var/named」で作成!

以下はKSKとZSKの署名鍵を作成したコマンドです。

1
2
3
4
5
6
7
# dnssec-keygen -f KSK -r /dev/urandom -a RSASHA256 -b 4096 -n zone v4.com
Generating key pair..........................++ .............++
Kv4.com.+008+62014
 
# dnssec-keygen -r /dev/urandom -a RSASHA256 -b 1024 -n zone v4.com
Generating key pair.........++++++ .......................................++++++
Kv4.com.+008+53328

上記コマンドを実行すると以下ファイルが生成されます。

1
2
3
4
5
6
# ll
合計 36
-rw-r--r--  1 root root   421  9月  4 18:22 2014 Kv4.com.+008+53328.key
-rw-------  1 root root  1012  9月  4 18:22 2014 Kv4.com.+008+53328.private
-rw-r--r--  1 root root   941  9月  4 18:21 2014 Kv4.com.+008+62014.key
-rw-------  1 root root  3316  9月  4 18:21 2014 Kv4.com.+008+62014.private

次に対象のゾーンファイルに作成した「key」を追記します。
※シリアル値の更新を忘れないこと!

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
# vim db.v4.com
 
;
$TTL 1
@       IN      SOA     dns.jp.       dnsadm.v4.com. (
                                                2014090401      ; Serial [yyyymmddhh]
                                                3h              ; Refresh[3h]
                                                1h              ; Retry  [1h]
                                                7d              ; Expire [7d]
                                                1d )            ; Minimum[1d]
 
                IN      NS      dns.v4.com.
www             IN      A       4.4.4.4
dns             IN      A       10.50.0.1
 
$INCLUDE "Kv4.com.+008+53328.key"
$INCLUDE "Kv4.com.+008+62014.key"
 
~

ゾーンファイルを更新後は該当のファイルにエラーがないかを確認します。

1
2
3
# named-checkzone v4.com db.v4.com
zone v4.com/IN: loaded serial 2014090402
OK

署名作成

「dnssec-signzone」コマンド実施し、署名を作成します。
以下は、「-o」コマンドでzonefileを指名します。

1
2
3
4
5
6
# dnssec-signzone -o v4.com db.v4.com
Verifying the zone using the following algorithms: RSASHA256.
Zone signing complete:
Algorithm: RSASHA256: KSKs: 1 active, 0 stand-by, 0 revoked
                      ZSKs: 1 active, 0 stand-by, 0 revoked
db.v4.com.signed

「db.v4.com.signed」と「dsset-v4.com.」が作成されます。

1
2
3
4
5
6
7
8
9
# ll
合計 96
-rw-r--r--  1 root  root   421  9月  4 18:22 2014 Kv4.com.+008+53328.key
-rw-------  1 root  root  1012  9月  4 18:22 2014 Kv4.com.+008+53328.private
-rw-r--r--  1 root  root   941  9月  4 18:21 2014 Kv4.com.+008+62014.key
-rw-------  1 root  root  3316  9月  4 18:21 2014 Kv4.com.+008+62014.private
-rw-r--r--  1 root  root  4738  9月  4 18:42 2014 db.v4.com.signed
-rw-r--r--  1 root  root   159  9月  4 18:42 2014 dsset-v4.com.
上記2つのファイルが作成される

署名済みのゾーンファイルは以下のようになってます。
DNSキーができていることがわかります。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# less db.v4.com.signed
 
; File written on Thu Sep  4 18:42:55 2014
; dnssec_signzone version 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
v4.com.                 1       IN SOA  dns.jp. dnsadm.v4.com. (
                                        2014090403 ; serial
                                        10800      ; refresh (3 hours)
                                        3600       ; retry (1 hour)
                                        604800     ; expire (1 week)
                                        86400      ; minimum (1 day)
                                        )
                        1       RRSIG   SOA 8 2 1 20141004084255 (
                                        20140904084255 53328 v4.com.
                                        p+QlnDeiFm/XPTIPB/JCcUluJy5rfoxQeVKy
                                        p41gF9+srfBGSmQoBMv8VGL10gUM8tvSyY83
                      ---省略---
                        1       DNSKEY  256 3 8 (
                                        AwEAAbXa55rLbNHss1q+XvCuufD0GMOy5q68
                                        0BNbbZxq4AGXSwKPK0o6UI1ry6fxPFRR4m9C
                                        ZDaH4k6ZKhFrnqiqxxt4NIZQHCJEPjv9jFar
 
                      ---省略---
                                        ) ; key id = 53328
                        1       DNSKEY  257 3 8 (
                                        AwEAAaVkgIsZLnAGBUECdl8KKDiSB4kan7PZ
                                        85BsurxVhjk3em1deM5vVNRys3MtPTvvCqPd
                                        WnyKULbobLYVFH7PnANkZaUX6RXtxEJ2zxSe
                                        Y0KzRrOA+To13sW8RE9UrM7rUb1f+YIerZUn
                                        GzHHtO10JlcXsikVWERKKvn0S7SUgQb3yacZ
                      ---省略---

「named.conf」のタイプに「db.v4.com.signed」を記載します。

1
2
3
4
5
# vim /var/named/chroot/etc/named.conf
 
zone "v4.com" IN {
        type master;
        file "db.v4.com.signed";

namedを再起動します。

1
# service named restart

エラーが吐かれていないか確認しましょう。

1
2
# named-checkconf || echo NG
※NGが出なければOK

dnssecが書かれているか確認します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# dig +dnssec v4.com
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> +dnssec v4.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8539
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;v4.com.                                IN      A
 
;; AUTHORITY SECTION:
v4.com.                 1       IN      SOA     dns.jp. dnsadm.v4.com. 2014090403 10800 3600 604800 86400
v4.com.                 1       IN      RRSIG   SOA 8 2 1 20141004084255 20140904084255 53328 v4.com. p+QlnDeiFm/XPTIPB/JCcUluJy5rfoxQeVKyp41gF9+srfBGSmQoBMv8
v4.com.                 86400   IN      NSEC    dns.v4.com. NS SOA RRSIG NSEC DNSKEY
v4.com.                 86400   IN      RRSIG   NSEC 8 2 86400 20141004084255 20140904084255 53328 v4.com. IHsDJcD+iXxn5T4jgtH1x9UX82ZeiF683XVUyFVmFebZEgMJqgpuXcab
 
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Sep  4 18:56:17 2014
;; MSG SIZE  rcvd: 449

キャッシュサーバの設定

今回とはあまり関係ないですが、最新のrootゾーンの公開鍵は以下のURLにあります。

https://data.iana.org/root-anchors/

キャッシュサーバのname.confでdnssecを有効にします。

1
2
3
4
5
6
options {
     --省略--
        dnssec-enable yes;
        dnssec-validation yes;
     --省略--
};

権威サーバ(root)のKSK公開鍵の入手する

まずは、以下コマンドでrootゾーンのKSK公開鍵を入手します。

1
# dig v4.com dnskey | grep -w 257 > root-ksk.key

KSK公開鍵からDSを生成します。

1
2
# dnssec-dsfromkey -2  root-ksk.key
v4.com. IN DS 62014 8 2 B881DEB2487A8CEC1C463D0C54D9D04C5D5B6610FE5E835E36E2C8C75F63F7E2

name.confに上記で生成root-ksk.keyに書かれているDNSKEYの文字列をコピーし、trusted-keysに張り付けます。

1
2
3
4
5
6
trusted-keys {
        “.“ 257 3 8
                                        "AwEAAbXa55rLbNHss1q+XvCuufD0GMOy5q68
                      ---省略---
                                        s58bx7jnD0TzpmlCSzv2nIB7VL0KMcdV";
};

※managed-keysを設定している場合はコメントアウトし反映させないようにしてください。

01
02
03
04
05
06
07
08
09
10
options {
        //managed-keys-directory "/etc/managed-keys";
//managed-keys {
//.                       initial-key 257 3 8 "
//                                oY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3
//                                LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGO
//                                Yl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGc
//                                LmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0=
//                                ";
//};

設定が終わったら、必ずnamedを再起動します。

1
# service named restart

キャッシュDNSでDNSSECが正常に動いているか確認

ここまでくれば、後はDNSSECがうまく動いているか確認するだけです。
「dig」コマンドで名前解決され、「ad」フラグが表示されれば完了です。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# dig @localhost www.v4.com
 
; <<>> DiG 9.9.3-P2 <<>> @localhost www.v4.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64641
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.v4.com.                    IN      A
 
;; ANSWER SECTION:
www.v4.com.             1       IN      A       4.4.4.4
 
;; AUTHORITY SECTION:
v4.com.                 1       IN      NS      dns.v4.com.
 
;; Query time: 9 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Sep 05 17:35:54 JST 2014
;; MSG SIZE  rcvd: 73

adがフラグで立っているぜぃ!

+DNSSECで確認した結果です。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# dig @localhost www.v4.com +dnssec
 
; <<>> DiG 9.9.3-P2 <<>> @localhost www.v4.com +dnssec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39633
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;www.v4.com.                    IN      A
 
;; ANSWER SECTION:
www.v4.com.             1       IN      A       4.4.4.4
www.v4.com.             1       IN      RRSIG   A 8 3 1 20141004084255 20140904084255 53328 v4.com. WcR0jMffQU/wxTONciN6/toVqMnsjQ8iPWWA1gU78W84bUU2Aat8jD6a
 
;; AUTHORITY SECTION:
v4.com.                 1       IN      NS      dns.v4.com.
v4.com.                 1       IN      RRSIG   NS 8 2 1 20141004084255 20140904084255 53328 v4.com. YAzU2UOHPx+jMMrSjNJPh+dfX8eAPfFv+9ao67f4m4aktnCNZDk2SOU/
 
;; Query time: 6 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Sep 05 18:09:14 JST 2014
;; MSG SIZE  rcvd: 405

これで、DNSSECでの設定完了です!

以上です。

あわせて読みたい
サーバーエンジニアへの構築手順書 サーバエンジニアにおすすめの構築手順をまとめたページです。 サーバ初心者の方。じぶんも初心者なので、そっから目線で構築した設計手順書となっています。 ご興味の...
エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

サーバー技術
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
  1. DNSSECとは
    1. 権威(root)サーバの設定
    2. 署名作成
  2. キャッシュサーバの設定
    1. 権威サーバ(root)のKSK公開鍵の入手する
    2. キャッシュDNSでDNSSECが正常に動いているか確認
目次
  1. DNSSECとは
    1. 権威(root)サーバの設定
    2. 署名作成
  2. キャッシュサーバの設定
    1. 権威サーバ(root)のKSK公開鍵の入手する
    2. キャッシュDNSでDNSSECが正常に動いているか確認