LPI Linux 认证/DNS 服务器安全
(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
首先,检查安全邮件列表和网站以获取 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