「DNSSEC」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(翻訳)
 
(同期)
2行目: 2行目:
 
[[Category:Domain Name System]]
 
[[Category:Domain Name System]]
 
[[en:DNSSEC]]
 
[[en:DNSSEC]]
  +
{{Related articles start}}
== DNSSEC パッケージ ==
 
  +
{{Related|Unbound#DNSSEC 検証}}
  +
{{Related articles end}}
   
  +
[[Wikipedia:ja:DNS Security Extensions]] より:
* {{Pkg|dnssec-anchors}}
 
  +
:DNS Security Extensions (略称 DNSSEC) は、インターネットプロトコル (IP) で使用される Domain Name System (DNS) における応答の正当性を保証するための Internet Engineering Task Force (IETF) による拡張仕様である。サーバーとクライアントの双方がこの拡張に対応し、かつ拡張機能を使った形式で該当ドメイン情報が登録されていれば、DNS 応答の偽造や改竄を検出することができる。
** [https://www.iana.org/dnssec/ IANA] が発行している鍵が含まれている非常に重要なパッケージ。鍵は {{ic|/usr/share/dnssec-trust-anchors/}} に保存されます。
 
* {{Pkg|ldns}}
 
** DNS(SEC) ライブラリ ('''libldns''')
 
** drill ツール (DNSSEC に対応した dig のようなもの)
 
*** 基本的な DNSSEC の確認に使えます。例:
 
**** 以下のコマンドは作成します (0 が返ってきます):
 
***** {{ic|drill -TD nic.cz}} (''#valid DNSSEC key'')
 
***** {{ic|drill -TD google.com}} (''#not signed domain'')
 
**** 以下のコマンドは失敗します (不正な DNS レコード):
 
***** {{ic|drill -TD rhybar.cz}}
 
***** {{ic|drill -TD badsign-a.test.dnssec-tools.org}}
 
**** ルートゾーンのトラストアンカーを使うには {{ic|-k /usr/share/dnssec-trust-anchors/root-anchor.key}} オプションを追加してください。
 
* {{Pkg|dnssec-tools}} ''(パッケージは実験的なものであり安定していません)''
 
** https://www.dnssec-tools.org/
 
** 様々なプログラムに DNSSEC のサポートを追加する '''libval''' ライブラリ。
 
*** https://www.dnssec-tools.org/wiki/index.php/DNSSEC_Applications
 
** 複数のツールが含まれています: https://www.dnssec-tools.org/wiki/index.php/DNSSEC-Tools_Components
 
*** https://www.dnssec-tools.org/wiki/index.php/Applications
 
** DNSSEC に非対応のプログラムで DNSSEC を有効にする '''libval-shim''' LD_PRELOAD ライブラリ: http://www.dnssec-tools.org/docs/tool-description/libval_shim.html
 
** PERL API
 
* {{AUR|sshfp}}
 
** known_hosts ファイルの公開鍵やホストの sshd デーモンをスキャンして SSH 公開鍵から DNS SSHFP タイプのレコードを生成します。
 
* {{AUR|opendnssec}}
 
** DNS サーバー (bind や nsd など) によって発行された DNS ゾーンに署名します。
 
** 自動で署名を更新して鍵をロールオーバーします。
 
   
== 特定のソフトウェアで DNSSEC を有効にする方法 ==
+
== 基本的な DNSSEC 検証 ==
   
  +
{{Note|DNS ルックアップで DNSSEC をデフォルトで使用するには設定が必要です。[[#DNSSEC 対応の検証キャッシュサーバーのインストール]]や[[#特定のソフトウェアで DNSSEC を有効化]]を見てください。}}
DNSSEC の完全なサポートを得るには、個別にアプリケーションから DNSSEC 検証を使用する必要があります。以下の方法があります:
 
* パッチ
 
** https://www.dnssec-tools.org/wiki/index.php/DNSSEC_Applications
 
** https://www.dnssec-tools.org/wiki/index.php/DNSSEC_Application_Development
 
* プラグイン・拡張・ラッパー
 
* ユニバーサル LD_PRELOAD ラッパー
 
** 次のコールを上書きします: gethostbyname(3), gethostbyaddr(3), getnameinfo(3), getaddrinfo(3), res_query(3)
 
** dnssec-tools の libval-shim: http://www.dnssec-tools.org/docs/tool-description/libval_shim.html
 
* DNS プロキシ
 
   
  +
=== インストール ===
=== [[OpenSSH]] (SSH の設計における脆弱性を修正) ===
 
   
  +
''drill'' ツールを使って基本的な DNSSEC 検証が行なえます。''drill'' を使うには {{pkg|ldns}} パッケージを[[インストール]]してください。
* dnssec-tools + パッチ: https://www.dnssec-tools.org/wiki/index.php/Ssh
 
** http://www.dnssec-tools.org/readme/README.ssh
 
   
  +
=== DNSSEC 検証の問い合わせ ===
=== [[Firefox]] (セキュアなブラウジング - HTTPS の強化) ===
 
   
  +
DNSSEC 検証の問い合わせを行うには、{{ic|-D}} フラグを使います:
* DNSSEC Validator プラグイン: https://addons.mozilla.org/en-US/firefox/addon/64247/
 
* DNSSEC Drill プラグイン: http://nlnetlabs.nl/projects/drill/drill_extension.html
 
** プラグインを使うには {{pkg|ldns}} と {{pkg|dnssec-anchors}} パッケージが必要です。
 
* dnssec-tools + firefox パッチ: https://www.dnssec-tools.org/wiki/index.php/Firefox
 
   
  +
$ drill -D ''example.com''
=== [[Chromium]] (セキュアなブラウジング - HTTPS の強化) ===
 
   
  +
=== テスト ===
* [http://code.google.com/p/chromium/issues/detail?id=50874 #50874]
 
** パッチはまだ存在しません。
 
** [http://chromium.googlecode.com/issues/attachment?aid=-8803347052009476090&name=chromium-drill-dnssec-validator.zip&token=6e3489c4e5c62bfaae02516be442d7da DNSSEC Drill extension] (EXPERIMENTAL!)
 
*** プラグインを使うには {{pkg|ldns}} と {{pkg|dnssec-anchors}} パッケージが必要です。
 
   
  +
以下のドメインを使うことでテストが可能です。ルートサーバーから解決されるドメインまでトレースする {{ic|-T}} フラグを追加してください:
=== BIND (DNS ゾーンの署名) ===
 
   
  +
$ drill -DT sigfail.verteiltesysteme.net
* BIND に関して詳しくは [[BIND]] を参照してください。
 
* http://www.dnssec.net/practical-documents
 
** http://www.cymru.com/Documents/secure-bind-template.html '''(configuration template!)'''
 
** http://www.bind9.net/manuals
 
** http://www.bind9.net/BIND-FAQ
 
* http://blog.techscrawl.com/2009/01/13/enabling-dnssec-on-bind/
 
* もしくは OpenDNSSEC などを使う方法もあります (完全自動で鍵をロールオーバー)。
 
   
  +
以下のような結果が表示され、DNSSEC 署名が偽物と分かります:
=== [[Postfix]] (スパムや偽装に対抗) ===
 
   
  +
[B] sigfail.verteiltesysteme.net. 60 IN A 134.91.78.139
* dnssec-tools + パッチ
 
  +
;; Error: Bogus DNSSEC signature
  +
;;[S] self sig OK; [B] bogus; [T] trusted
   
  +
信頼できる署名のテストをするには:
=== jabberd (スパムや偽装に対抗) ===
 
   
  +
$ drill -DT sigok.verteiltesysteme.net
* dnssec-tools + パッチ
 
   
  +
以下のような結果が表示され、DNSSEC 署名が信頼できると分かります:
=== [[Thunderbird]] (セキュアなログイン) ===
 
   
  +
[T] sigok.verteiltesysteme.net. 60 IN A 134.91.78.139
* dnssec-tools + パッチ
 
  +
;;[S] self sig OK; [B] bogus; [T] trusted
   
=== lftp (セキュアなダウンロド・ログイン) ===
+
== DNSSEC 対応の検証ャッシバーのインストール ==
   
  +
システム全体で DNSSEC を使用したい場合、DNSSEC に対応している検証リカーシブリゾルバを使うことで全ての DNS ルックアップをリゾルバで経由させることができます。使用できるサーバーとして [[BIND]] と [[unbound]] が存在します。DNSSEC 検証機能を有効にするにはそれぞれ特定のオプションを有効にする必要があります。
* dnssec-tools + パッチ
 
   
  +
偽の (偽装された) IP アドレスを使ってサイトにアクセスしようとすると、検証リゾルバ (BIND または unbound) は不正な DNS データの受信を拒否するため、ブラウザ (や他のアプリケーション) にはそのようなホストは存在しないと表示されます。全ての DNS 取り合わせが検証サーバーを経由するため、DNSSEC のサポートが組み込まれたソフトウェアをインストールする必要がありません。
=== [[wget]] (セキュアなダウンロード) ===
 
   
  +
== 特定のソフトウェアで DNSSEC を有効化 ==
* dnssec-tools + パッチ
 
   
  +
[[#DNSSEC 対応の検証キャッシュサーバーのインストール]]をしたくない場合、DNSSEC のサポートが組み込まれているソフトウェアを使う必要があります。大抵の場合、手動でソフトウェアにパッチを適用する必要があります。パッチが存在するアプリケーションのリストが [https://www.dnssec-tools.org/wiki/index.php?title=DNSSEC_Applications こちら] にあります。さらに、一部のウェブブラウザにはプログラムにパッチを適用しなくても DNSSEC を使うことができる拡張やアドオンが存在しています。
=== [[proftpd]] ===
 
 
* dnssec-tools + パッチ
 
 
=== [[Sendmail]] (スパムや偽装に対抗) ===
 
 
* dnssec-tools + パッチ
 
 
=== LibSPF ===
 
 
* dnssec-tools + パッチ
 
 
=== ncftp (セキュアなダウンロード・ログイン) ===
 
 
* dnssec-tools + パッチ
 
 
=== libpurple ([[pidgin]] + finch -> セキュアなメッセージング) ===
 
 
* パッチはまだ存在しません。
 
 
* [http://developer.pidgin.im/ticket/12413 #12413]
 
   
 
== DNSSEC ハードウェア ==
 
== DNSSEC ハードウェア ==
119行目: 59行目:
   
 
== 参照 ==
 
== 参照 ==
  +
* [http://dnssec.vs.uni-due.de/ DNSSEC Resolver Test] - a simple test to see if you have DNSSEC implemented on your machine.
 
  +
* [https://www.dnssec-tools.org/ DNSSEC-Tools]
* [[AppArmor]]
 
  +
* [http://dnsviz.net DNSSEC Visualizer] - a tool for visualizing the status of a DNS zone.
* [[Wikipedia:ja:DNS Security Extensions]]
 
  +
* [https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Securing_DNS_Traffic_with_DNSSEC.html RedHat: Securing DNS Traffic with DNSSEC] - thorough article on implementing DNSSEC with ''unbound''. Note that some tools are RedHat specific and not found in Arch Linux.
* http://www.dnssec.net/
 
  +
* [[Wikipedia:Domain Name System Security Extensions]]
** http://www.dnssec.net/practical-documents
 
** http://www.dnssec.net/rfc
 
* https://www.iana.org/dnssec/
 
* https://www.dnssec-tools.org/
 
* http://linux.die.net/man/1/sshfp
 
* https://bugs.archlinux.org/task/20325 - [DNSSEC] Add DNS validation support to ArchLinux
 
* [http://dnsviz.net DNSSEC Visualizer]
 

2017年4月30日 (日) 16:11時点における版

関連記事

Wikipedia:ja:DNS Security Extensions より:

DNS Security Extensions (略称 DNSSEC) は、インターネットプロトコル (IP) で使用される Domain Name System (DNS) における応答の正当性を保証するための Internet Engineering Task Force (IETF) による拡張仕様である。サーバーとクライアントの双方がこの拡張に対応し、かつ拡張機能を使った形式で該当ドメイン情報が登録されていれば、DNS 応答の偽造や改竄を検出することができる。

基本的な DNSSEC 検証

ノート: DNS ルックアップで DNSSEC をデフォルトで使用するには設定が必要です。#DNSSEC 対応の検証キャッシュサーバーのインストール#特定のソフトウェアで DNSSEC を有効化を見てください。

インストール

drill ツールを使って基本的な DNSSEC 検証が行なえます。drill を使うには ldns パッケージをインストールしてください。

DNSSEC 検証の問い合わせ

DNSSEC 検証の問い合わせを行うには、-D フラグを使います:

$ drill -D example.com

テスト

以下のドメインを使うことでテストが可能です。ルートサーバーから解決されるドメインまでトレースする -T フラグを追加してください:

$ drill -DT sigfail.verteiltesysteme.net

以下のような結果が表示され、DNSSEC 署名が偽物と分かります:

[B] sigfail.verteiltesysteme.net.       60      IN      A       134.91.78.139
;; Error: Bogus DNSSEC signature
;;[S] self sig OK; [B] bogus; [T] trusted

信頼できる署名のテストをするには:

$ drill -DT sigok.verteiltesysteme.net

以下のような結果が表示され、DNSSEC 署名が信頼できると分かります:

[T] sigok.verteiltesysteme.net. 60      IN      A       134.91.78.139
;;[S] self sig OK; [B] bogus; [T] trusted

DNSSEC 対応の検証キャッシュサーバーのインストール

システム全体で DNSSEC を使用したい場合、DNSSEC に対応している検証リカーシブリゾルバを使うことで全ての DNS ルックアップをリゾルバで経由させることができます。使用できるサーバーとして BINDunbound が存在します。DNSSEC 検証機能を有効にするにはそれぞれ特定のオプションを有効にする必要があります。

偽の (偽装された) IP アドレスを使ってサイトにアクセスしようとすると、検証リゾルバ (BIND または unbound) は不正な DNS データの受信を拒否するため、ブラウザ (や他のアプリケーション) にはそのようなホストは存在しないと表示されます。全ての DNS 取り合わせが検証サーバーを経由するため、DNSSEC のサポートが組み込まれたソフトウェアをインストールする必要がありません。

特定のソフトウェアで DNSSEC を有効化

#DNSSEC 対応の検証キャッシュサーバーのインストールをしたくない場合、DNSSEC のサポートが組み込まれているソフトウェアを使う必要があります。大抵の場合、手動でソフトウェアにパッチを適用する必要があります。パッチが存在するアプリケーションのリストが こちら にあります。さらに、一部のウェブブラウザにはプログラムにパッチを適用しなくても DNSSEC を使うことができる拡張やアドオンが存在しています。

DNSSEC ハードウェア

dnssec-tester (Python と GTK+ ベースのアプリ) を使うことでルーターやモデム、アクセスポイントが DNSSEC に対応しているかどうか確認できます。収集したデータをサーバーにアップロードして、他のユーザーやメーカーにデバイスの互換性情報を提供してファームウェアの修正に役立てることも可能です (dnssec-tester を実行する前に /etc/resolv.conf に他のネームサーバーが記載されていないか確認してください)。dnssec-tester のウェブサイトからテストの結果を確認できます。

参照