summaryrefslogtreecommitdiff
path: root/contrib/bind9/doc/arm/Bv9ARM.ch07.html
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bind9/doc/arm/Bv9ARM.ch07.html')
-rw-r--r--contrib/bind9/doc/arm/Bv9ARM.ch07.html500
1 files changed, 500 insertions, 0 deletions
diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch07.html b/contrib/bind9/doc/arm/Bv9ARM.ch07.html
new file mode 100644
index 000000000000..a7c470773876
--- /dev/null
+++ b/contrib/bind9/doc/arm/Bv9ARM.ch07.html
@@ -0,0 +1,500 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML
+><HEAD
+><TITLE
+>BIND 9 Security Considerations</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
+REL="HOME"
+TITLE="BIND 9 Administrator Reference Manual"
+HREF="Bv9ARM.html"><LINK
+REL="PREVIOUS"
+TITLE="BIND 9 Configuration Reference"
+HREF="Bv9ARM.ch06.html"><LINK
+REL="NEXT"
+TITLE="Troubleshooting"
+HREF="Bv9ARM.ch08.html"></HEAD
+><BODY
+CLASS="chapter"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>BIND 9 Administrator Reference Manual</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="Bv9ARM.ch06.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="Bv9ARM.ch08.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="chapter"
+><H1
+><A
+NAME="ch07"
+></A
+>Chapter 7. <ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+> 9 Security Considerations</H1
+><DIV
+CLASS="TOC"
+><DL
+><DT
+><B
+>Table of Contents</B
+></DT
+><DT
+>7.1. <A
+HREF="Bv9ARM.ch07.html#Access_Control_Lists"
+>Access Control Lists</A
+></DT
+><DT
+>7.2. <A
+HREF="Bv9ARM.ch07.html#AEN4658"
+><B
+CLASS="command"
+>chroot</B
+> and <B
+CLASS="command"
+>setuid</B
+> (for
+UNIX servers)</A
+></DT
+><DT
+>7.3. <A
+HREF="Bv9ARM.ch07.html#dynamic_update_security"
+>Dynamic Update Security</A
+></DT
+></DL
+></DIV
+><DIV
+CLASS="sect1"
+><H1
+CLASS="sect1"
+><A
+NAME="Access_Control_Lists"
+>7.1. Access Control Lists</A
+></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 name server, without cluttering up your config files with huge
+lists of IP addresses.</P
+><P
+>It is a <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>good idea</I
+></SPAN
+> 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 <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>AUSCERT</I
+></SPAN
+> 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="AEN4658"
+>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 <ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+> in a <SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>chrooted</I
+></SPAN
+> environment
+(<B
+CLASS="command"
+>chroot()</B
+>) by specifying the "<VAR
+CLASS="option"
+>-t</VAR
+>"
+option. This can help improve system security by placing <ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+> in
+a "sandbox", which will limit the damage done if a server is compromised.</P
+><P
+>Another useful feature in the UNIX version of <ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+> is the
+ability to run the daemon as an unprivileged user ( <VAR
+CLASS="option"
+>-u</VAR
+> <VAR
+CLASS="replaceable"
+>user</VAR
+> ).
+We suggest running as an unprivileged user when using the <B
+CLASS="command"
+>chroot</B
+> feature.</P
+><P
+>Here is an example command line to load <ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+> 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
+><KBD
+CLASS="userinput"
+>/usr/local/bin/named -u 202 -t /var/named</KBD
+></P
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN4681"
+>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
+<ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+> needs to run.
+From <ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+>'s point of view, <TT
+CLASS="filename"
+>/var/named</TT
+> is
+the root of the filesystem. You will need to adjust the values of options like
+like <B
+CLASS="command"
+>directory</B
+> and <B
+CLASS="command"
+>pid-file</B
+> to account
+for this.
+</P
+><P
+>&#13;Unlike with earlier versions of BIND, you will typically
+<SPAN
+CLASS="emphasis"
+><I
+CLASS="emphasis"
+>not</I
+></SPAN
+> need to compile <B
+CLASS="command"
+>named</B
+>
+statically nor install shared libraries under the new root.
+However, depending on your operating system, you may need
+to set up things like
+<TT
+CLASS="filename"
+>/dev/zero</TT
+>,
+<TT
+CLASS="filename"
+>/dev/random</TT
+>,
+<TT
+CLASS="filename"
+>/dev/log</TT
+>, and/or
+<TT
+CLASS="filename"
+>/etc/localtime</TT
+>.
+</P
+></DIV
+><DIV
+CLASS="sect2"
+><H2
+CLASS="sect2"
+><A
+NAME="AEN4699"
+>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 <ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+>
+to write. Note that if the <B
+CLASS="command"
+>named</B
+> daemon is running as an
+unprivileged user, it will not be able to bind to new restricted ports if the
+server is reloaded.</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
+<ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+> 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
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="Bv9ARM.ch06.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="Bv9ARM.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="Bv9ARM.ch08.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><ACRONYM
+CLASS="acronym"
+>BIND</ACRONYM
+> 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
+> \ No newline at end of file