建立安全的DNS服务器[1]

[入库:2005年9月21日] [更新:2007年3月24日]

本文简介:


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


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



步骤一:软件获取和安装


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


  到Obtuse System FTP站点下载本文必需的免费软件: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的源代码路径,执行"make clean"和"make"命令。在下面的步骤中将会把这些文件复制到chroot()目录下。


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



步骤三:构造BIND目录


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


/dev
/etc
   /namedb
/usr
   /sbin
/var
   /run


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


/
   无


/etc
   复制系统/etc目录下的named.conf文件
   复制系统/etc目录下的localtime文件(为syslog提供正确的named日志记录时间)
   创建仅包含named GID的/etc/group文件


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


/dev
   mknod ./null c 1 3; chmod 666 null(请参阅相应版本的mknod命令)


/usr/sbin

本文关键:建立安全的DNS服务器
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top