跳转到内容

LPI Linux 认证/LPIC2 考试 202/DNS

来自维基教科书,开放世界中的开放书籍
 
LPI logo

章节概述

[编辑 | 编辑源代码]
  • BIND 8 基本配置
  • 创建和维护 DNS 区域
  • 保护 DNS 服务器

BIND 8 基本配置

[编辑 | 编辑源代码]

设置仅缓存名称服务器

[编辑 | 编辑源代码]

为了加速 DNS 查询的繁琐过程,DNS 服务器通常会缓存来自其他 DNS 服务器的答案 - 甚至包括负面查询(即权威服务器的答案「名称不存在」也会被您的本地 DNS 缓存)

将 BIND 配置为仅缓存名称服务器只涉及设置一个「.」区域,即只告诉它根名称服务器,而不指定任何区域,如下所示:

zone « . » in {
type hint;
file « named.cache »;
};

名为 named.cache 的文件可以通过使用 dig @a.root-servers.net 生成

BIND 中的日志记录由两个主要概念控制:通道和类别。通道指定记录的数据去向:发送到 syslog、发送到文件等等。类别指定记录的数据类型。

通道允许您按优先级过滤消息,例如 syslog 的优先级。它们本质上是一样的,但 BIND 可用两个更多通道:debug 和 dynamic,它们会影响调试级别日志记录。Debug 会设置一个调试级别,该级别会在第一次通过 ndc 发出 trace 命令后生效;dynamic 会在每次通过 ndc 发出 trace 命令后递增或递减调试级别。

日志记录配置示例

logging {
channel my_syslog {
syslog daemon;
severity info;
};
channel my_file {
file « log.msgs »;
severity dynamic;
};
category statistics { my_syslog; my_file; };
category queries { my_file; };
};

要激活日志记录,在启动 bind 后,执行以下命令:

ndc trace

关键词、文件和工具:/etc/named.conf /usr/sbin/ndc /usr/sbin/named-bootconf Kill

=== 练习 ===.

创建和维护 DNS 区域

[编辑 | 编辑源代码]

DNS 区域文件主要由资源记录 (RR) 组成。资源记录必须从一行的第一列开始。它们出现的顺序并不重要,但大多数人倾向于遵循 DNS RFC 中的顺序。SOA(授权起始):「指示此区域的授权方」 NS(名称服务器):「列出此区域的名称服务器」其他记录:

A:「名称到地址的映射」 PTR:「地址到名称的映射」 CNAME(规范名称):「别名」不要忘记为 127.0.0 创建区域!创建和维护 DNS 区域 通常的区域文件格式:

$TTL <ttl value>
<domain name>. IN SOA <nameserver name>. <user.email>. (
<serial>;  serial number
<refresh>; refresh value
<retry>;  retry value
<expire>;  expire value
<n-ttl>;  negative caching TTL of 1 day
<domain name>.  IN  NS  <authoritative NS name>.
<domain name>.  IN  NS  <authoritative NS name>.
...
<hostname>.  IN  A  <IP address>
<hostname>.  IN  A  <IP address>
...

创建和维护 DNS 区域 对于反向映射:「$TTL <ttl value> <reverse net addr>.in-addr.arpa. IN SOA <NS name>. <user.email>. ( <serial>; 序列号 <refresh>; 刷新值 <retry>; 重试值 <expire>; 过期值 <n-ttl>; 负缓存 TTL 为 1 天 <rev net addr>.in-addr.arpa. IN NS <authoritative NS name>. <rev net addr>.in-addr.arpa. IN NS <authoritative NS name>. ... <rev IP addr>.in-addr.arpa. IN PTR <fqdn>. <rev IP addr>.in-addr.arpa. IN PTR <fqdn>. ...

关键词、文件和工具:/var/named 内容 区域文件语法 资源记录格式 Dig Nslookup Host

=== 练习 ===.

保护 DNS 服务器

[编辑 | 编辑源代码]

首先,查看安全邮件列表和网站以获取 BIND 的新版本。特别是,8.2.3 之前的版本容易受到已知攻击的攻击。

隐藏您的版本号,使其不会被外部查询识别 - 这可能被用来针对您进行特殊攻击。从 BIND 8.2 开始,您可以在 named.conf 中使用

options {
version « None of your business »;
};

您还可以限制查询:全局地

options {
allow-query { address-match-list; };
};

或按区域(优先于全局 ACL):

zone « test.com » {
type slave;
file « db.test »;
allow-query { 192.168.0.0/24; };
};

更重要的是,确保只有真正的从属 DNS 才能从您的主服务器传输您的区域。使用关键词 allow-transfer:全局(在「options」语句中),适用于所有区域 按区域 在从属服务器上,禁用区域传输!使用「allow-transfer { none; };」

不要以 root 用户身份运行 BIND!从 8.1.2 开始,有选项可以更改 BIND 运行的用户 (-u) 和组 (-g)。使用非特权用户(例如创建一个没有 shell 访问权限的新用户)。确保您的区域文件具有正确的权限(named.conf 在 BIND 仍然处于 root 权限下时被读取,因此不要更改此文件的权限)。

此外,在 chroot 监狱中运行 bind。从 8.1.2 开始,有选项 -t 用于指定名称服务器 chroot() 到哪个目录。确保 BIND 需要的所有文件(例如日志文件等)都在根监狱中。如果您计划将 chroot 的 BIND 与 ndc 一起使用,不要忘记将新路径名传递给 ndc 的 UNIX 套接字!

以下是关于如何在 Debian 中设置 chroot 的 bind9 环境的一些内容。由于 bind9 的配置非常类似,因此相同的步骤适用于 bind8 以创建 chroot 环境。

  • 停止当前运行的 bind。
/etc/init.d/bind9 stop
  • 为了在监狱中 chroot bind,我们需要在 /etc/default/bind9 中指定什么环境
OPTIONS="-u bind -t /var/lib/named"
  • 我们仍然希望在 /var/log/syslog 中进行日志记录,因此我们需要更改 /etc/default/syslogd,使其打开一个额外的套接字,让 chroot 的 bind 可以通过该套接字记录到 /var/log/syslog 中。
SYSLOGD="-a /var/lib/named/dev/log"
  • 为环境运行几个 mkdir 命令
mkdir /var/lib/named
mkdir -p /var/lib/named/var/run/bind/run
mkdir /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir /var/lib/named/var/cache 
  • 移动我们现有的配置
mv /etc/bind /var/lib/named/etc/bind
  • 链接它
ln -s /var/lib/named/etc/bind /etc/bind
  • 更改 chroot 的 var 和 etc 的所有权
chown -R bind:bind /var/lib/named/var/* 
chown -R bind:bind /var/lib/named/etc/bind
  • 创建一些设备并设置权限
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chown 666 /var/lib/named/dev/random /var/lib/named/dev/null
  • 重启 syslogd 并启动 bind
/etc/init.d/sysklogd restart
/etc/init.d/bind9 start

如果 bind 没有启动,并且 syslog 中存在错误消息,请记住这些消息是在chroot 域中创建的,因此有关 /var/run/bind/run/named.pid 的权限问题实际上意味着它是关于 /var/lib/named/var/run/bind/run/named.pid 的问题。


关键词、文件和工具:SysV 初始化文件 /etc/named.conf /etc/passwd

华夏公益教科书