跳转到内容

LPI Linux 认证/DNS 服务器安全

来自 Wikibooks,开放世界中的开放书籍

详细目标 (207.3)

[编辑 | 编辑源代码]

(LPIC-2 版本 4.5)


权重 3


描述: 候选人应该能够配置 DNS 服务器以非 root 用户身份运行并在 chroot 监狱中运行。此目标包括 DNS 服务器之间的数据安全交换。


关键知识领域

  • BIND 9 配置文件
  • 配置 BIND 在 chroot 监狱中运行
  • 使用 forwarders 语句分割 BIND 配置
  • 配置和使用事务签名 (TSIG)
  • 了解 DNSSEC 和基本工具
  • 了解 DANE 和相关记录


术语和实用程序

  • /etc/named.conf
  • /etc/passwd
  • DNSSEC
  • dnssec-keygen
  • dnssec-signzone

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:全局(在“选项”语句中),适用于所有区域每个区域在从属服务器上,禁用区域传输!使用“allow-transfer { none; };”

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

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

以下是如何在 Debian 中设置 chrooted bind9 环境的一点说明。由于 bind9 中的配置非常相似,因此相同的过程适用于 bind8 以创建 chrooted 环境。

  • 停止当前运行的 bind。
/etc/init.d/bind9 stop
  • 为了将 bind chroot 到监狱中,我们需要在 /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
  • 更改 chrooted 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 中有错误消息,请记住这些消息是从 chrooted 域内部创建的,因此关于 /var/run/bind/run/named.pid 的权限问题意味着它实际上是关于 /var/lib/named/var/run/bind/run/named.pid 的问题


关键术语、文件和实用程序:SysV 初始化文件 /etc/named.conf /etc/passwd


华夏公益教科书