建立安全的DNS服务器

      和其它大型软件一样,BIND(dns服务器)也因其体积庞大和功能繁杂而存在许多问题。因此针对BIND安全漏洞的系统入侵数量也在大幅度上升,最严重的甚至可获取目标主机的所有远程控制权。由于dns服务器主机对网络系统有着很大的影响,如何避免这些系统入侵也变得至关重要了。

  这篇短文的主旨是讲述如何利用chroot环境在RedHatLinux(或类似系统)中建立安全的BIND8.x服务器。本文内容主要来自于AdamShostack和他在这方面的文章(Solaris版本)。

  步骤一:软件获取和安装

  请到ISCFTP站点下载BIND的最新版本(本文内容在BIND8.x版本中经过测试)。

  到ObtuseSystemFTP站点下载本文必需的免费软件:holelogd(及其它有用的工具)。该软件用于在chroot环境中建立/dev/log套接字(socket),从而使syslogd能够记录named进程的日志。OpenBSD系统的syslogd已内建了这一功能("syslogd-a/chroot/dev/log"),但Linux系统尚未实现这一功能。Holelogd软件就是用来模仿OpenBSD的这个功能。

  按照软件文档安装holelogd(通常被安装到/usr/local/sbin)。

  步骤二:构造静态(static)的named和named-xfer二进制文件

  在编译和安装后,你需要构造可执行文件的静态链接版本。只要对%BIND%/src/port/Linux目录下的Makefile.set文件稍加修改后即可。

  'CDEBUG=-O2-g'

  替换为:

  'CDEBUG=-O2-static'

  切换到BIND的源代码路径,执行"makeclean"和"make"命令。在下面的步骤中将会把这些文件复制到chroot()目录下。

  本步骤构造的静态链接执行文件在运行时无需装载动态链接库。在chroot()环境中,这种“独立”可执行文件可避免出现缺少链接库文件问题。它在chroot()环境中无需任何静态链接库,可使服务配置简单化。其它所有的网络守护进程也可以编译和使用这种静态链接版本。

  步骤三:构造BIND目录

  为chroot()环境构造BIND目录。这个目录将在chroot()环境中被BIND当作系统根目录。

  /dev

  /etc

  /namedb

  /usr

  /sbin

  /var

  /run

  需要复制以下文件到其下的相应子目录中,和进行一些必要的处理:

  /

  无

  /etc

  复制系统/etc目录下的named.conf文件

  复制系统/etc目录下的localtime文件(为syslog提供正确的named日志记录时间)

  创建仅包含namedGID的/etc/group文件

  /etc/namedb

  复制系统/etc/namedb目录下的所有“区(zone)”数据库和文件

  /dev

  mknod./nullc13;chmod666null(请参阅相应版本的mknod命令)

  /usr/sbin

  复制系统%BIND%/src/bin/named目录和系统%BIND%/src/bin/named-xfer目录下的named和named-xfer二进制文件(静态链接版本)

  /var/run

  无

  另外还可根据需要指定日志记录目录(如/var/log)。

实易简介

  实易科技是一家专注于智能DNS解决方案的高新技术企业。多年来,实易科技一直秉承“技术为本,服务至上”宗旨,专注为客户提供高品质的智能DNS解决方案及服务。

关注我们