このチュートリアルは、CentOSオペレーティングシステムのBind9(バージョン9.8.2)でDNSSECを構成するのに役立ちます。ただし、この手順はRedHat Enterprise Linux Server、Ubuntu、Debianでも機能します。権威ネームサーバーでDNSSECを有効にする方法、キーの作成、ゾーンへの署名、DNSSECLookasideの検証とテストを使用したトラストアンカーの追加について説明します。
バインド構成を初めて使用する場合は、このガイドをチェックアウトして、バインド構成について理解してください。さらに、DNSSECとは何か、なぜDNSSECを有効にする必要があるのかわからない場合はどうすればよいですか?次に、ここをクリックしてください。
免責事項: テストベッドで学習して試した手順を共有していますが、それがお客様の環境で機能するという保証はありません。ただし、実稼働システムですぐに構成する前に、テストベッドを試してみることができます。
先に進みましょうか?
バインド構成を使用してDNS環境を準備します。
このチュートリアルではバインドに関するDNSSECについて説明するため、バインド環境が機能していることを確認してください。 Bindをインストールして構成するには、この簡単なガイドに従ってください。
前提条件:
ステップ1: dnssec-toolsパッケージをダウンロードしてインストールします。このパッケージを使用してゾーンに署名します。
$wget http://www.dnssec-tools.org/download/dnssec-tools-2.0.tar.gz $tar xvzf dnssec-tools-2.0.tar.gz $cd dnssec-tools-2.0>
DebianとUbuntuでは、apt-getを介してインストールできますか。
$apt-get install dnssec-tools
ステップ2: DNSSEC、検証、ルックアサイドを有効にする
$vi /etc/named.conf
ただし、 named.confのパス 環境によって異なる場合があります。 /etc/named/named.confで探します または/var/named/named.conf 。
「オプション」を探してください ‘ named.confのディレクティブ 。そこに見つからない場合は、 named.options が見つかる可能性があります ファイル。とにかく、違いはありません。
Optionsディレクティブで、以下の属性を変更します。
dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto;
Ok!これが私のOptionsディレクティブの外観です
options { listen-on port 53 { 10.180.1.115; }; listen-on-v6 port 53 { ::1; }; version "not currently available"; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; recursion no; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic";};
bindkeys-ファイル :この行は、バインドキーが別の場所にある場合にのみ必要です。とにかく、後で話します。
dnssec-lookaside auto :この設定は、Bindに bind.keys からDLV(DNSSEC Lookaside検証)キーを読み取るように指示します 初めて実行されます。現在のDLVはdlv.isc.org キー。
理解を深めるには:信頼の鎖を作成するには、ルートゾーンから独自のゾーンまでのDNSパス全体に署名する必要があります。たとえば、ドメインtechglimpse.comについて考えてみます。 techglimpse.comのルートゾーンは.com 署名してからtechglimpse.comに署名する必要があり、ゾーンに署名する必要があります。ただし、すべてのトップレベルドメイン(TLD)が署名されているわけではありません(この記事の執筆時点)。親が署名されていない場合、信頼のチェーンが壊れており、ルートゾーンのキーをBIND構成のトラストアンカーとして使用することはできません。
これが、 DNSSECルックアサイド検証(DLV)の理由です。 が導入されました。これは実際には信頼できるキーの代替リポジトリであり、ルートゾーンから自分のゾーンへの完全に署名されたパスがない場合にゾーンキーを送信できます。機能的なDLVレジストリは、dlv.isc.orgです。 デフォルトでは、ルートゾーンキーとdlv.isc.orgキーは /etc/named.iscdlv.keyに含まれています。 そしてそれはbindkeys-fileへの値として行きます オプションの属性 ディレクティブ。 named.confでこれが自動的に見つからない場合 またはnamed.options 、バインドを更新します( yum install bind9 )そしてもう一度確認してください。
Learn more about DLV registry: DLV Solution by ISC : https://www.isc.org/solutions/dlv DLV Background : https://dlv.isc.org/about/background Status of TLDs signed: http://stats.research.icann.org/dns/tld_report/
dnssec-validation auto: このオプションは、バインド9.8、9.9以降でのみ使用できます。 Bind9.7はautoをサポートしていません dnssec-validationのオプションではなく、 dnssec-validation:yesを使用します これは、ルートゾーンキーがロードされていないことを意味します。この問題を解決するには、 bind.keysを使用できます。 ファイル。
$more bind.keys
managed-keys { # ISC DLV: See https://www.isc.org/solutions/dlv for details. # NOTE: This key is activated by setting "dnssec-lookaside auto;" # in named.conf. dlv.isc.org. initial-key 257 3 5 "BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt TDN0YUuWrBNh"; # ROOT KEY: See https://data.iana.org/root-anchors/root-anchors.xml # for current trust anchor information. # NOTE: This key is activated by setting "dnssec-validation auto;" # in named.conf. . initial-key 257 3 8 "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq QxA+Uk1ihz0="; };
次に、 bind.keysを含めることができます named.conf またはnamed.options。
include "/etc/bind/bind.keys";
注:bind.keysの正しいパスを確認してください
完了したら、バインドを再起動します。
$service named restart or $/etc/init.d/bind9 restart or $rndc reload
Ok!これで、バインド時にDNSSECが有効になりました。次に、ゾーンに署名する方法を説明します。
DNSSECでゾーンに署名する方法
ゾーンに署名するには、このチュートリアルの最初にインストールしたdnsssec-toolsを使用します。 dnssec-toolsには、dnssec-keygenとdnssec-signzoneのラッパーであるゾーン署名者コマンドが付属しています。
詳細については、zonesignerのマニュアルページを確認してください。
$man zonesigner
dnssec-tools構成ファイルの場所: /usr/local/etc/dnssec-tools/dnssec-tools.conf 。ただし、パスはシステムによって異なる場合があります。
ゾーンに署名するには、コマンドは次のようになります。
zonesigner -genkeys -usensec3 -zone <domain-name> <zone-file>
$zonesigner -genkeys -usensec3 -zone techglimpse.com db.techglimpse.com
if zonesigner appears hung, strike keys until the program completes (see the "Entropy" section in the man page for details)
Generating key pair......................................++++++ ..............++++++ Generating key pair......++++++ ..++++++ Generating key pair...................................+++ ..................................+++ Verifying the zone using the following algorithms: NSEC3RSASHA1. Zone signing complete: Algorithm: NSEC3RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked ZSKs: 1 active, 1 stand-by, 0 revoked
zone signed successfully
techglimpse.com: KSK (cur) 47781 2048 11/14/13 (techglimpse.com-signset-00003) ZSK (cur) 06809 1024 11/14/13 (techglimpse.com-signset-00001) ZSK (pub) 26330 1024 11/14/13 (techglimpse.com-signset-00002)
zone will expire in 30 days DO NOT delete the keys until this time has passed.
ディレクトリをチェックアウトして、キーファイルを確認します。
$ ls -lrt -rw-r--r--. 1 root root 571 Oct 14 14:09 db.10.180.4 -rw-------. 1 root root 1015 Nov 14 11:45 Ktecglimpse.com.+007+06809.private -rw-r--r--. 1 root root 436 Nov 14 11:45 Ktechglimpse.com.+007+06809.key -rw-------. 1 root root 1015 Nov 14 11:45 Ktechglimpse.com.+007+26330.private -rw-r--r--. 1 root root 437 Nov 14 11:45 Ktechglimpse.com.+007+26330.key -rw-------. 1 root root 1779 Nov 14 11:45 Ktechglimpse.com.+007+47781.private -rw-r--r--. 1 root root 611 Nov 14 11:45 Ktechglimpse.com.+007+47781.key -rw-r--r--. 1 root root 777 Nov 14 11:45 db.techglimpse.com -rw-r--r--. 1 root root 173 Nov 14 11:45 dsset-techglimpse.com. -rw-r--r--. 1 root root 7183 Nov 14 11:45 db.techglimpse.com.signed -rw-r--r--. 1 root root 2172 Nov 14 11:45 techglimpse.com.krf
署名中にすべてがうまくいったかどうかを確認します。
$ donuts --level 8 -v db.techglimpse.com.signed techglimpse.com --- loading rule file /usr/local/share/dnssec-tools/donuts/rules/check_nameserve rs.txt rules: MEMORIZE_NS_ADDRS DNS_SERVERS_MATCH_DATA --- loading rule file /usr/local/share/dnssec-tools/donuts/rules/dns.errors.txt rules: DNS_SOA_REQUIRED MEMORIZE_NS_CNAME_RECORDS DNS_NS_NO_CNAME --- loading rule file /usr/local/share/dnssec-tools/donuts/rules/dnssec.rules.tx t rules: DNSSEC_RRSIG_TTL_MATCH_ORGTTL DNSSEC_MEMORIZE_NS_RECORDS DNSSEC_CHECK _IF_NSEC3 DNSSEC_MISSING_NSEC_RECORD1 DNSSEC_MISSING_RRSIG_RECORD1 DNSSEC_RRSIG_ NOT_SIGNING_RRSIG DNSSEC_RRSIG_FOR_NS_GLUE_RECORD DNSSEC_NSEC_FOR_NS_GLUE_RECORD DNSSEC_RRSIG_SIGEXP DNSSEC_NSEC_TTL DNSSEC_NSEC3_TTL DNSSEC_DNSKEY_MUST_HAVE_SA ME_NAME DNSSEC_DNSKEY_PROTOCOL_MUST_BE_3 DNSSEC_BOGUS_NS_MEMORIZE DNSSEC_MISSING _RRSIG_RECORD2 DNSSEC_RRSIG_TTL_MUST_MATCH_RECORD DNSSEC_MISSING_NSEC_RECORD2 DN SSEC_RRSIG_SIGNER_NAME_MATCHES DNSSEC_NSEC_RRSEC_MUST_NOT_BE_ALONE DNSSEC_MEMORI ZE_KEYS DNSSEC_RRSIGS_VERIFY DNSSEC_TWO_ZSKS DNSSEC_OPENSSL_KEY_ISSUES --- loading rule file /usr/local/share/dnssec-tools/donuts/rules/nsec_check.rule s.txt rules: DNSSEC_NSEC_MEMORIZE DNSSEC_NSEC3_MEMORIZE DNSSEC_NSEC3_CHECK DNSSEC_ NSEC_CHECK --- loading rule file /usr/local/share/dnssec-tools/donuts/rules/parent_child.ru les.txt rules: DNS_MULTIPLE_NS DNSSEC_SUB_NOT_SECURE DNSSEC_DNSKEY_PARENT_HAS_VALID_ DS DNSSEC_DS_CHILD_HAS_MATCHING_DNSKEY --- loading rule file /usr/local/share/dnssec-tools/donuts/rules/recommendations .rules.txt rules: DNS_REASONABLE_TTLS DNS_NO_DOMAIN_MX_RECORDS --- Analyzing individual records in db.techglimpse.com.signed --- Analyzing records for each name in db.techglimpse.com.signed techglimpse.com: Rule Name: DNS_MULTIPLE_NS Level: 6 Warning: Only 1 NS record(s) for techglimpse.com found, but at least 2 are suggested/required Details: Tests to see if at least two NS records exist for a delegated zone.
results on testing techglimpse.com: rules considered: 38 rules tested: 30 records analyzed: 33 names analyzed: 10 errors found: 0
次に、 named.conf の署名済みゾーン(techglimpse.com)を置き換えます
zone "techglimpse.com" { type master; file "/var/named/zones/master/db.techglimpse.com.signed"; };
以下のようにバインドを再開します
$service named restart or $/etc/init.d/bind9 restart
digを使用してDNSSECセットアップをテストする
digコマンドの形式は次のようになります。
$dig @<dns_server> +dnssec <domain_name>
出力で「広告」を探します ‘フラグ内。
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
AD Authenticated Dataフラグの略で、リゾルバーが権限のあるネームサーバーから受け取った回答を検証した場合にのみ設定されます。
それでおしまい!すべてがうまくいけば、バインド9.8.2で基本的なDNSSECを正常にセットアップできています。
読む:DNSSECの初心者向けガイド
読む:ドメインを識別する方法はDNSSECに署名されているかどうか?