Bv9ARM.ch07.html revision eadfcf9cf79376eaae5e3010882ba4f41a7c9b89
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt<HTML
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews><HEAD
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><TITLE
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews>BIND 9 Security Considerations</TITLE
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews><META
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark AndrewsNAME="GENERATOR"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCONTENT="Modular DocBook HTML Stylesheet Version 1.41"><LINK
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox UserREL="HOME"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntHREF="Bv9ARM.html"><LINK
83a28ca274521e15086fc39febde507bcc4e145eMark AndrewsREL="PREVIOUS"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntTITLE="BIND 9 Configuration Reference"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntHREF="Bv9ARM.ch06.html"><LINK
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntREL="NEXT"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntTITLE="Troubleshooting"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntHREF="Bv9ARM.ch08.html"></HEAD
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt><BODY
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntBGCOLOR="#FFFFFF"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntTEXT="#000000"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntLINK="#0000FF"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntVLINK="#840084"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntALINK="#0000FF"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><DIV
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCLASS="NAVHEADER"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><TABLE
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntWIDTH="100%"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntBORDER="0"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCELLPADDING="0"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCELLSPACING="0"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><TR
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><TH
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCOLSPAN="3"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntALIGN="center"
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews></TH
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt></TR
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><TR
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><TD
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntWIDTH="10%"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntALIGN="left"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntVALIGN="bottom"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><A
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntHREF="Bv9ARM.ch06.html"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt>Prev</A
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt></TD
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt><TD
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntWIDTH="80%"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntALIGN="center"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntVALIGN="bottom"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt></TD
30eec077db2bdcb6f2a0dc388a3cdde2ede75ec1Mark Andrews><TD
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntWIDTH="10%"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntALIGN="right"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntVALIGN="bottom"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><A
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntHREF="Bv9ARM.ch08.html"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>Next</A
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt></TD
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt></TR
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt></TABLE
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><HR
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntALIGN="LEFT"
30eec077db2bdcb6f2a0dc388a3cdde2ede75ec1Mark AndrewsWIDTH="100%"></DIV
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><DIV
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCLASS="chapter"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><H1
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><A
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntNAME="ch07"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>Chapter 7. <SPAN
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCLASS="acronym"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>BIND</SPAN
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt> 9 Security Considerations</A
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt></H1
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><DIV
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCLASS="TOC"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><DL
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><DT
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><B
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>Table of Contents</B
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt></DT
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><DT
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>7.1. <A
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntHREF="Bv9ARM.ch07.html#Access_Control_Lists"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>Access Control Lists</A
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt></DT
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><DT
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>7.2. <A
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntHREF="Bv9ARM.ch07.html#AEN4036"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><B
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCLASS="command"
b1866070ef4fb9e17bff16ad458f629bbc5a4accwpk>chroot</B
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt> and <B
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCLASS="command"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>setuid</B
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt> (for
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntUNIX servers)</A
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt></DT
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><DT
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt>7.3. <A
30eec077db2bdcb6f2a0dc388a3cdde2ede75ec1Mark AndrewsHREF="Bv9ARM.ch07.html#dynamic_update_security"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>Dynamic Update Security</A
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt></DT
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt></DL
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt></DIV
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><DIV
19977879caf8579a5fafb0cf3bf1cb983063796cEvan HuntCLASS="sect1"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><H1
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntCLASS="sect1"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt><A
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntNAME="Access_Control_Lists"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt>7.1. Access Control Lists</A
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt></H1
><P
>Access Control Lists (ACLs), are address match lists that
you can set up and nickname for future use in <B
CLASS="command"
>allow-notify</B
>,
<B
CLASS="command"
>allow-query</B
>, <B
CLASS="command"
>allow-recursion</B
>,
<B
CLASS="command"
>blackhole</B
>, <B
CLASS="command"
>allow-transfer</B
>,
etc.</P
><P
>Using ACLs allows you to have finer control over who can access
your nameserver, without cluttering up your config files with huge
lists of IP addresses.</P
><P
>It is a <I
CLASS="emphasis"
>good idea</I
> to use ACLs, and to
control access to your server. Limiting access to your server by
outside parties can help prevent spoofing and DoS attacks against
your server.</P
><P
>Here is an example of how to properly apply ACLs:</P
><PRE
CLASS="programlisting"
>&#13;// Set up an ACL named "bogusnets" that will block RFC1918 space,
// which is commonly used in spoofing attacks.
acl bogusnets { 0.0.0.0/8; 1.0.0.0/8; 2.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3; 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; };
// Set up an ACL called our-nets. Replace this with the real IP numbers.
acl our-nets { x.x.x.x/24; x.x.x.x/21; };
options {
...
...
allow-query { our-nets; };
allow-recursion { our-nets; };
...
blackhole { bogusnets; };
...
};
zone "example.com" {
type master;
file "m/example.com";
allow-query { any; };
};
</PRE
><P
>This allows recursive queries of the server from the outside
unless recursion has been previously disabled.</P
><P
>For more information on how to use ACLs to protect your server,
see the <I
CLASS="emphasis"
>AUSCERT</I
> advisory at
<A
HREF="ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos"
TARGET="_top"
>ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos</A
></P
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN4036"
>7.2. <B
CLASS="command"
>chroot</B
> and <B
CLASS="command"
>setuid</B
> (for
UNIX servers)</A
></H1
><P
>On UNIX servers, it is possible to run <SPAN
CLASS="acronym"
>BIND</SPAN
> in a <I
CLASS="emphasis"
>chrooted</I
> environment
(<B
CLASS="command"
>chroot()</B
>) by specifying the "<TT
CLASS="option"
>-t</TT
>"
option. This can help improve system security by placing <SPAN
CLASS="acronym"
>BIND</SPAN
> in
a "sandbox," which will limit the damage done if a server is compromised.</P
><P
>Another useful feature in the UNIX version of <SPAN
CLASS="acronym"
>BIND</SPAN
> is the
ability to run the daemon as a nonprivileged user ( <TT
CLASS="option"
>-u</TT
> <TT
CLASS="replaceable"
><I
>user</I
></TT
> ).
We suggest running as a nonprivileged user when using the <B
CLASS="command"
>chroot</B
> feature.</P
><P
>Here is an example command line to load <SPAN
CLASS="acronym"
>BIND</SPAN
> in a <B
CLASS="command"
>chroot()</B
> sandbox,
<B
CLASS="command"
>/var/named</B
>, and to run <B
CLASS="command"
>named</B
> <B
CLASS="command"
>setuid</B
> to
user 202:</P
><P
><TT
CLASS="userinput"
><B
>/usr/local/bin/named -u 202 -t /var/named</B
></TT
></P
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="AEN4059"
>7.2.1. The <B
CLASS="command"
>chroot</B
> Environment</A
></H2
><P
>In order for a <B
CLASS="command"
>chroot()</B
> environment to
work properly in a particular directory (for example, <TT
CLASS="filename"
>/var/named</TT
>),
you will need to set up an environment that includes everything
<SPAN
CLASS="acronym"
>BIND</SPAN
> needs to run. From <SPAN
CLASS="acronym"
>BIND</SPAN
>'s point of view, <TT
CLASS="filename"
>/var/named</TT
> is
the root of the filesystem. You will need <TT
CLASS="filename"
>/dev/null</TT
>,
and any library directories and files that <SPAN
CLASS="acronym"
>BIND</SPAN
> needs to run on
your system. Please consult your operating system's instructions
if you need help figuring out which library files you need to copy
over to the <B
CLASS="command"
>chroot()</B
> sandbox.</P
><P
>If you are running an operating system that supports static
binaries, you can also compile <SPAN
CLASS="acronym"
>BIND</SPAN
> statically and avoid the need
to copy system libraries over to your <B
CLASS="command"
>chroot()</B
> sandbox.</P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="AEN4074"
>7.2.2. Using the <B
CLASS="command"
>setuid</B
> Function</A
></H2
><P
>Prior to running the <B
CLASS="command"
>named</B
> daemon, use
the <B
CLASS="command"
>touch</B
> utility (to change file access and
modification times) or the <B
CLASS="command"
>chown</B
> utility (to
set the user id and/or group id) on files to which you want <SPAN
CLASS="acronym"
>BIND</SPAN
>
to write.</P
></DIV
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="dynamic_update_security"
>7.3. Dynamic Update Security</A
></H1
><P
>Access to the dynamic
update facility should be strictly limited. In earlier versions of
<SPAN
CLASS="acronym"
>BIND</SPAN
> the only way to do this was based on the IP
address of the host requesting the update, by listing an IP address or
network prefix in the <B
CLASS="command"
>allow-update</B
> zone option.
This method is insecure since the source address of the update UDP packet
is easily forged. Also note that if the IP addresses allowed by the
<B
CLASS="command"
>allow-update</B
> option include the address of a slave
server which performs forwarding of dynamic updates, the master can be
trivially attacked by sending the update to the slave, which will
forward it to the master with its own source IP address causing the
master to approve it without question.</P
><P
>For these reasons, we strongly recommend that updates be
cryptographically authenticated by means of transaction signatures
(TSIG). That is, the <B
CLASS="command"
>allow-update</B
> option should
list only TSIG key names, not IP addresses or network
prefixes. Alternatively, the new <B
CLASS="command"
>update-policy</B
>
option can be used.</P
><P
>Some sites choose to keep all dynamically updated DNS data
in a subdomain and delegate that subdomain to a separate zone. This
way, the top-level zone containing critical data such as the IP addresses
of public web and mail servers need not allow dynamic update at
all.</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="Bv9ARM.ch06.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="Bv9ARM.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="Bv9ARM.ch08.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><SPAN
CLASS="acronym"
>BIND</SPAN
> 9 Configuration Reference</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Troubleshooting</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>