设为首页
加入收藏
帮助中心
首页 | 红盾通告 | 信息中心 | ASP技术 | 数据库 | 网页设计 | 网管专栏 | OICQ攻略 | 墨客频道 | 网站运营 |
当前位置:首页 >> 网管专栏 >> 域名服务 >> 正文
最新信息
·二级域名泛解析,让iis支持…
·iis如何绑定泛解析的域名
·如何利用自己的域名?
·域名注册完成后,要注意些什…
·域名发生冲突如何处理?
·注册一个什么样的域名好?
·Internet上域名命名的一般…
·什么是域名地址服务器(即D…
·谁是国际域名管理机构
·域名的结构
资料搜索
热点信息
·iis如何绑定泛解析的域名
·二级域名泛解析,让iis支持…
·域名的结构
·域名注册完成后,要注意些什…
·Internet上域名命名的一般…
·Linux DNS and BIND 服务器
·Win2000之DNS服务器的设置
·深入研究DNS原理
·分析DNS日志
·windows server 2003之DNS
推荐信息
·DNS服务器配置
·动态负载平衡DNS简介
·建立安全的DNS服务器
·主DNS服务器
·构建DNS服务器简易指南(2)
·构建DNS服务器简易指南(1)
·BIND8安全漏洞分析
·Linux DNS and BIND 服务器
·iptables应用之动态DNS
·域名中的国家代码


Google
 
建立安全的DNS服务器
〖编辑:Cloudy | 浏览:人次〗

  和其它大型软件一样,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
   复制系统%BIND%/src/bin/named目录和系统%BIND%/src/bin/named-xfer目录下的named和named-xfer二进制文件(静态链接版本)

/var/run
   无

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


步骤四:添加named用户和组

  在/etc/passwd和/etc/group文件中添加named用户和组。它们是DNS服务器运行时的UID/GID。

  此时,你可以到chroot环境中执行"chown -R named.named /etc/namedb"命令。这样当你向系统发送中断信号(kill -INT )时,named进程能够保存服务器缓存和统计信息。如果该目录为root所有则named进程无法将输出写到目录中,但不会影响named服务器功能。另一个选择是仅改变目录权限(使named用户具有写权限),而属主仍然是root。这种方法也是可行的,但必须小心设置,确保其它用户不会修改named记录!

*** 重要警告***
  不要用一个已存在的UID/GID(如"nobody")运行named。记住,以chroot环境中使用任何已存在的UID/GID都可能会影响到服务的安全性。必须养成在chroot环境中为每一个守护进程提供独立的UID/GID的习惯。

步骤五:编辑启动脚本

  Linux使用SYS V风格的init文件,所以有几个地方都可以放置运行named的命令。(大多数情况下)最好将named初始化脚本放置到/etc/rc.d/init.d/named中。在其中你会找到有关named启动的那一节内容。我们需要添加和修改其中的某些行。

1、在运行named前插入一行以启动holelogd。需要向holelogd提供远程套接字
位置的参数,它应该是在上面步骤中创建的chroot named dev目录。命令行
内容如下:

    # Start daemons.
    echo -n "Staring holelogd: "
   daemon /usr/local/sbin/holelogd /chroot/named/dev/log
   echo
    echo -n "Starting named: "
    daemon named
    echo
    touch /var/lock/subsys/named
    ;;

2、另外还需要修改BIND的启动参数。BIND 8.x版本允许指定运行用户ID和组ID,
它也应该是在上面步骤中特别创建的UID/GID:

    # Start daemons.
    echo -n "Staring holelogd: "
    daemon /usr/local/sbin/holelogd /chroot/named/dev/log
    echo
    echo -n "Starting named: "
   daemon /chroot/named/usr/sbin/named -u named -g named -t /chroot/named
    echo
    touch /var/lock/subsys/named
    ;;

3、named附带的"ndc"脚本可用于控制named的工作。需要编辑这个文件以将PID
文件位置从/var/run/named.pid修改为/chroot/named/var/run/named.pid。


步骤六:服务器测试

  输入如下命令启动holelogd进程

   /usr/local/sbin/holelogd /chroot/named/dev/log

  进入/chroot/named/dev/目录并输入ls -al。应该得到与下面类似的输出:

   srw-rw-rw- 1 root wheel 0 Jan 01 12:00 log

  设定的"s"位指示这是一个套接字(socket)文件。chroot()环境中的named进程将通过该套接字与syslog通讯。

  现在输入:

   /chroot/named/usr/sbin/named -u named -g named -t /chroot/named

  如果一切正常,named进程将启动,日志文件将记录named服务器"Ready to answer queries."。

  进行适当的DNS测试以确保服务器能正确工作,然后重新启动系统并检验所有配置。BIND正常启动后会报告其chroot()目录和运行UID/GID。你可以使用lsof之类的程序列出主机中所有网络套接字进行检查。

  当一切工作正常后,建议将/etc/namedb改名为/etc/namedb.orig或其它名字,同时chmod 000 /usr/sbin/named,这样可以确保这些旧版本的named不会因偶然的失误而使用。

<< 完>>

资料来源:
  ISC (Internet Software Consortium)
  Steinar Haug
  Bernhard Weisshuhn
  Marc Heuse
  Jan Gruber
  Adam Shostack
  Psionic

 


录入时间:2006-05-08 23:16:28 [打印本页] [关闭窗口] [返回顶部]
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

Copyright © 2006-2014 0733168.Com Inc All Rights Reserved
关于我们 | 广告合作 | 联系我们 | 法律声明 | 友情链接 | 意见反馈
本站所收录信息、社区话题、及本站所做之广告均属其个人行为,与本站立场无关
湘ICP备06008436号