<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:foaf="https://xmlns.com/foaf/0.1/" xmlns:og="https://ogp.me/ns#" xmlns:rdfs="https://www.w3.org/2000/01/rdf-schema#" xmlns:schema="https://schema.org/" xmlns:sioc="https://rdfs.org/sioc/ns#" xmlns:sioct="https://rdfs.org/sioc/types#" xmlns:skos="https://www.w3.org/2004/02/skos/core#" xmlns:xsd="https://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/tag/dnssec">
  <channel>
    <title>DNSSEC</title>
    <link>https://www.linuxjournal.com/tag/dnssec</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>DNSSEC Part II: the Implementation</title>
  <link>https://www.linuxjournal.com/content/dnssec-part-ii-implementation</link>
  <description>  &lt;div data-history-node-id="1335660" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/keyboard-lock_0_1.jpg" width="100" height="100" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/kyle-rankin" lang="" about="https://www.linuxjournal.com/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Kyle Rankin&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
This article is the second in a series on DNSSEC. In the &lt;a href="https://www.linuxjournal.com/content/dnssec-part-i-concepts"&gt;first one&lt;/a&gt;, I gave a
general overview of DNSSEC concepts to lay the foundation for this article, which
discusses how to enable DNSSEC for a zone using BIND. If you want to deploy
DNSSEC but aren't sure what I mean when I say KSK, ZSK, DLV or DS record, you
may want to go back to Part I to refresh yourself on the concepts,
because in this article, I'm going to dive right in to implementation.
&lt;/p&gt;

&lt;p&gt;
Adding DNSSEC to a zone using BIND involves a few extra steps on top of what you
normally would do to configure BIND as a master for your zone. First, you will
need to generate a Key-Signing Key (KSK) and Zone-Signing Key (ZSK), then update
the zone's config and sign it with the keys. Finally, you will reconfigure BIND
itself to support DNSSEC. After that, your zone should be ready, so if your
registrar supports DNSSEC, you can update it or otherwise use DLV with a provider
like dlv.isc.org. Now, let's look at the steps in more detail using my
greenfly.org zone as an example.
&lt;/p&gt;

&lt;h3&gt;
Make the Keys&lt;/h3&gt;

&lt;p&gt;
The first step is to generate the KSK and ZSK for your zone. As I mentioned in my
previous article, the KSK is used only to sign ZSKs in the zone and to provide a
signature for the zone's parent to sign, while ZSKs sign the records in each
zone. Having separate keys also allows you to create a stronger KSK and have a
weaker ZSK that you can rotate out each month. So first, let's create a KSK for
greenfly.org using &lt;code&gt;dnssec-keygen&lt;/code&gt;:

&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
$ cd /etc/bind/
$ dnssec-keygen -a RSASHA1 -b 2048 -n ZONE -f KSK greenfly.org
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;
By default, the &lt;code&gt;dnssec-keygen&lt;/code&gt; command dumps the generated keys in the current
directory, so change to the directory in which you store your BIND
configuration. The &lt;code&gt;-a&lt;/code&gt; and &lt;code&gt;-b&lt;/code&gt; arguments set the algorithm (RSASHA1) and key
size (2048 bit), while the &lt;code&gt;-n&lt;/code&gt; option tells
&lt;code&gt;dnssec-keygen&lt;/code&gt; what kind of key it is
creating (a ZONE key). You also can use &lt;code&gt;dnssec-keygen&lt;/code&gt; to generate keys for DDNS
and other BIND features, so you need to be sure to specify this is for a zone. I
also added a &lt;code&gt;-f KSK&lt;/code&gt; option that tells
&lt;code&gt;dnssec-keygen&lt;/code&gt; to set a bit that denotes
this key as a KSK instead of a ZSK. Finally, I specified the name of the zone this
key is for: greenfly.org. This command should create two files: a .key file, which
is the public key published in the zone, and a .private file, which is the private
key and should be treated like a secret. These files start with a K, then the
name of the zone, and then a series of numbers (the latter of which is
randomly generated), so in my case, it created two files:
Kgreenfly.org.+005+10849.key and Kgreenfly.org.+005+10849.private.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/dnssec-part-ii-implementation" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 08 Apr 2014 21:11:00 +0000</pubDate>
    <dc:creator>Kyle Rankin</dc:creator>
    <guid isPermaLink="false">1335660 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>DNSSEC Part I: the Concepts</title>
  <link>https://www.linuxjournal.com/content/dnssec-part-i-concepts</link>
  <description>  &lt;div data-history-node-id="1308142" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/keyboard-lock_1_0.jpg" width="100" height="100" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/kyle-rankin" lang="" about="https://www.linuxjournal.com/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Kyle Rankin&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
Like IPv6, DNSSEC is one of those great forward-looking protocols that
unfortunately hasn't seen wide adoption yet. Before I implemented it myself, I
could see why. Although some people think BIND itself is difficult to set up, DNSSEC
adds an extra layer of keys, key management and a slew of additional DNS
records. One day I decided to set up DNSSEC on a personal zone to familiarize
myself with the concepts and process, and it turns out that the implementation isn't all
that bad once you grasp a few concepts. In this article, I cover some of the
general concepts, and in my next article, I'll describe the steps for using
DNSSEC on your own zone.
&lt;/p&gt;

&lt;h3&gt;
How DNS Works&lt;/h3&gt;

&lt;p&gt;
It can be difficult to understand how DNSSEC works if you don't completely grasp
how DNS itself works. Really, I could spend a whole article just talking about how
DNS works, but for the purposes of this article, here's a very
high-level trace of a typical uncached DNS query that resolves a domain of mine:
www.greenfly.org. When you type a URL in a Web browser and press Enter, behind the
scenes, the OS starts a process to convert that hostname into an IP address.
Although
some people run DNS caching services on their personal computers, for the most
part, you rely on an external DNS server you've either configured by hand or via
DHCP. When your OS needs to convert a hostname into an IP, it sends a DNS query
to a name server defined in /etc/resolv.conf (these days, if this file is managed
by resolvconf, the real name servers can be trickier to track down). This starts
what's known as a recursive query, as this remote DNS server acts on your behalf
to talk to any other DNS servers it needs to contact to resolve your hostname to
an IP.
&lt;/p&gt;

&lt;p&gt;
In the case of resolving www.greenfly.org, the recursive DNS server starts by
sending a query to one of the 13 root DNS servers on the Internet
(192.33.4.12), asking for the IP for www.greenfly.org. The root name servers reply
that they don't know that information, but the name servers for .org might know,
and here are their names and IP addresses. Next, the recursive DNS server sends a
query to one of the .org name servers (199.19.54.1), asking the same question. The
.org name server replies that it also doesn't know the answer, but the name
servers for greenfly.org might know, and here are their names and IP addresses.
Finally, the recursive DNS server asks one of the greenfly.org name servers
(75.101.46.232) and gets back the answer that www.greenfly.org is at
64.142.56.172.
&lt;/p&gt;

&lt;p&gt;
If you are curious how this might work for a domain you own, just use the
&lt;code&gt;dig&lt;/code&gt;
command with the &lt;code&gt;+trace&lt;/code&gt; option. Here's example output for www.greenfly.org:

&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/dnssec-part-i-concepts" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Mon, 24 Feb 2014 18:42:29 +0000</pubDate>
    <dc:creator>Kyle Rankin</dc:creator>
    <guid isPermaLink="false">1308142 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
