首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程
建立安全的DNS服务器-网管专栏,域名服务
作者:网友供稿 点击:15
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

  和其它大型软件一样,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


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·使用windows脚本入侵WINDOWS服务器-网管专栏,网络技术
·清除网页历史记录-ASP教程,ASP应用
·在java中利用动态编译实现eval-JSP教程,Java技巧及代码
·如何制作Asp.Net界面模板-.NET教程,Asp.Net开发
·C#实现的18位身份证格式验证算法-.NET教程,数据库应用
·如何用PHP发电子邮件(1)-PHP教程,邮件处理
·Java 中的 XML:Java 文档模型的用法-JSP教程,Java与XML
·如何更新父窗体-.NET教程,Asp.Net开发
·用Windows 2003实现软RAID-网管专栏,操作系统
·使用Magic Winmail Server轻松架设邮件服务器(五)-网管专栏,邮件服务
最新文章
·photoshop让花卉照片更加清晰嫩绿_photoshop教程
·论c#变得越来越臃肿是不可避免的_c#应用
·杜少军:行走在网络世界的奇才_站长访谈
·教你用photoshop外插滤镜做卷页效果_photoshop教程
·通过dreamweaver设计网页时组织css的建议_dreamweaver教程
·草根网站比门户网站更有前途_站长心得
·如何针对google进行网站优化_google推广
·google推“我的搜索历史”测试版 提高个性化搜索竞争力_google推广
·八大要领 做网站就这么简单2_站长心得
·关闭widnows vista偷偷共享的文件_windows vista
相关主题
  • 建立安全的web站点
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭