Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Apr 2002 16:37:28 -0500
From:      Mate Wierdl <mw@thales.memphis.edu>
To:        freebsd-chat@freebsd.org
Subject:   Re: qmail (Was: Maintaining Access Control Lists )
Message-ID:  <20020410163728.A25502@thales.memphis.edu>
In-Reply-To: <3CAB7860.EB8DF505@mindspring.com>; from tlambert2@mindspring.com on Wed, Apr 03, 2002 at 01:47:12PM -0800
References:  <20020403144539.A11798@thales.memphis.edu> <3CAB7860.EB8DF505@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Apr 03, 2002 at 01:47:12PM -0800, Terry Lambert wrote:
> Mate Wierdl wrote:
> A violation of a "SHOULD" is almost worse than a violation of
> a "MUST".  A violation of a "MUST" has recourse: it's a bug.
> A violation of a "SHOULD" has no recourse.
> 
> The problem with this is that it violates the Principle Of
> Least Astonisment (POLA); specifically, it violates the
> dictum that one should be generous in what one accepts, but
> strict about what one generates, with regard to protocols.
> Not accepting a "SHOULD" mandated request is hardly generous.

It certainly can happen that the advice given in an rfc turns out to
be ill in the wild after a time.  DNS over TCP, for example, turns out
to be prone to DOS attacks, and is much slower.

In rfc1123, I read

	    Responsible practices can make UDP suffice in the vast
            majority of cases.

and

		 However, it is also clear that some new DNS record
                 types defined in the future will contain information
                 exceeding the 512 byte limit that applies to UDP, and
                 hence will require TCP.  Thus, resolvers and name
                 servers should implement TCP services as a backup to
                 UDP today, with the knowledge that they will require
                 the TCP service in the future.

Now djbdns certainly implement DNS over TCP---it just leaves it up to
the admin to, in fact, enable it as the need arises.  The argument
boils down to what is enabled by default.  Security, performance,
requirements registry, and knowing the size of my records dictates no
or limited TCP service availability.


> > >          3.  The suggested method for copying contents of DNS zones is rsync,
> > >              scp, or other remote copy tools.  The DNS standard method of
> > >              zone transfers (query type "axfr") is only supported as an
> > >              additional, disrecommended method.
> > 
> > Realizing the disadvantages of "axfr", the djbdns package allows the
> > sysadmin to use other, more secure, reliable and readily available
> > tools _in addition to_ "axfr".  What is wrong with this flexibility?
> 
> Firewalls.

I do not follow: so just keep axfr, and get rid off the additional
possibilities?  

> 
> 
> > >          5.  Without a patch from a third party, tinydns does not support the
> > >              standard "NOTIFY" protocol of informing secondary nameservers
> > >              that the zone has been updated, and that they need to check the
> > >              SOA serial number and download a new copy (if they don't already
> > >              have it).
> > 
> > Which rfc describing the DNS standards requires NOTIFY?
> 
> RFC 1996.

I am not clear on this (probably I did not ask the question clearly):
does rfc 1996 mandate the implementation of NOTIFY for servers?

> > Consider, for example, the fact that presently NOTIFY can alert
> > clients only about SOA record changes, and hence even if only a single
> > A record was added to the master's data, the client will have to
> > download the whole zone.  At least this is my reading of rfc1996.
> > 
> > Using rsync, of course, makes it possible to do only incremental
> > updates.
> 
> The issue isn't about the amount of data that has to be
> transferred, it's about the stall barrier, when any data
> has to be reloaded.

In case of tinydns, there is no data to be reloaded: data is stored in
a file.  Is "reloading data" defined to be the same as "looking up a
record from a file"?  And pushing the new data to the slave happens
immediately after the update on the master.

> 
> > I am not saying that, in case of a non-trusting slave, there might not
> > be a need for a safe, reliable, etc way for a master server to
> > initiate a data file update (instead of a polling by the slave), but
> > this looks more like a problem that has nothing to do with the DNS
> > protocol.
> 
> Here's my argument:
> 
> 	"All DNS data transfers should take place over the
> 	 DNS protocol."

Well, this requirement results in complexity, and lots of reinventing
the wheel.  

In case of tinydns, transferring data is equivalent with transferring
a file.  Perhaps you suggest that the transfer should take place over
the DNS protocol because of firewall considerations.  But exactly the
added complexity will necessarily result in security problems.

Your requirement seems to be potentially an enormous burden.  I suppose
you agree that the security tools associated with DNS data transfer
should also be implemented inside the DNS protocol.  But how about
requirements that are needed for these security tools to work?  For
example, for TSIG to work, you need to synchronize time between the
master and slave.  Should this time synchronization be done over the
DNS protocol?  Afterall, the slave can be behind a firewall...

And then there is DNSSEC.  It seems to be so complex that it may
defeat its own purpose: improve security.  For example, at

http://www.oreilly.com/catalog/dns4/chapter/ch11.html

I read:

  We realize that DNSSEC is a bit, er, daunting. (We nearly fainted
  the first time we saw it.)

Indeed, even without DNSSEC, apparently 24% of .com servers have
misconfigured delegations.  

Interestingly, R. Bush(!) was compelled to quote de Saint-Exupery
	 
	 You know you have achieved perfection in design, not when you
	 have nothing more to add, but when you have nothing more to
	 take away.

at

http://psg.com/~randy/001213.ietf-dns/

> 
> 
> > In case of a trusting slave, though, rsync will push the changes over
> > to the slave as soon as they happen on the master.
> 
> Plus the notice latency on the master, as the changes are polled,
> rather than event-triggered, plus the notice latency on the slave,
> for the same reasons.
> 

Does not happen between two tinydns servers, though.  The problem I
see is that of authentication: the recommended scheme for pushing new
data from a tinydns master to a tinydns slave assumes that the slave
trusts the master.  What if the master is taken over by an attacker?

> This is actually hidden in djbdns, because of the reopening
> of the file each time.  This reopening is another synchornization
> barrier, due to POSIX time update requirements.
> 
> > >          7.  You cannot set an alternative SOA contact address (other than
> > >              what is hard-coded within tinydns), if you do not have a patch
> > >              from a third party.
> > 
> > Those who read the docs can see
> 
> I believe he's referring to additional data, rather than replacement
> data, here...

I see, you may be right.  Not all is lost, though: one can then use RP records.

> > We are looking at two only, so they must be the major ones.
> > 
> > >                  A.  When an IQUERY is sent to a djbdns server, it will
> > >                      respond with opcode set to QUERY. (it should simply
> > >                      copy the opcode, not make something up).
> > 
> > Which currently in use client sends IQUERY?  What does the 01/2002 draft
> > 
> > http://www.ietf.org/internet-drafts/draft-ietf-dnsext-obsolete-iquery-03.txt
> > 
> > say about IQUERY?
> 
> Whatever it says is irrelevent, until it is Standards Track.

It is not irrelevant because it does hint at the problems with IQUERY,
and at the fact that clients do not send IQUERY anymore.  Hence it is
unlikely that users will suffer from this lack of compliance.  


Mate

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-chat" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020410163728.A25502>