文章导航绿软下载站软件下载安卓资源苹果资源专题

您当前所在位置:首页服务器DNS服务器 → 配置一个安全的chroot DNS

配置一个安全的chroot DNS

时间:2015/6/28来源:IT猫扑网作者:网管联盟我要评论(0)

  最近使用的比较多的是Red Hat 操作系统,而且自己也是在一台Red Hat 9 下面配置好Bind 9的,因此在下面的例子中就以Red Hat AS3为配置平台进行介绍。天缘所在单位的服务DNS是solaris操作系统,因此写shell的时候,我争取做到对Solaris也通用。由于各种因素,我没能亲自在Solaris上进行测试。下面的安装过程对Red Hat和其他unix操作系统都没问题,最后附上的自动安装的shell脚本我只在Red Hat下测试成功,对Solaris大概也基本上顾及到了,如果大家在实际使用那个脚本的时候发现在Solaris下使用存在问题,请及时反馈到此文的留言中,以使我及时更正,方便其他读者朋友。

  1、安装Bind 9

  虽然我所用的Red Hat AS3 中有rpm包,但是为了方便其他操作系统的朋友,我们还是从源代码包方式安装。首先从ISC公司的主页(http://www.isc.org/products/BIND/)下Bind 9 软件包。

  wget ftp://ftp.isc.org/isc/bind9/9.2.3/bind-9.2.3.tar.gz

  (我没下最新的,下的是稳定版,您可以根据自己的需要选取)

  接着开始解压缩(为描述简单,以下操作如无特殊声明,都是以root权限进行)
  tar vzxf bind-9.2.3.tar.gz

  卸载Red Hat 中原有的Bind,一共有三个rpm包
  rpm -e bind bind-utils caching-nameserver

  进入该目录开始编译安装
  ./configure --prefix=/usr/local --disable-ipv6 --disable-threads

  #因为ipv6和线程方式我用不到就去掉了,把Bind 9安装到/usr/local下
  make;make install

  到此Bind 9已经安装完成了,普通的 DNS Server 到此就安装结束了,而对我们的chroot 而言才刚开始呢。

  2、构建chroot 目录环境

  a.创建Bind 工作目录/chroot/named及下属工作目录

  rm -rf /chroot/named #删除原来的旧目录,之所以加这句是我写shell的时候调试方便

  mkdir -p /chroot/named
  cd /chroot/named
  mkdir dev (虚拟/dev)
  mkdir etc (虚拟/etc)
  mkdir logs (存放日志)
  mkdir -p var/run (将来会在这下面放一个named.pid文件)

  b.建立Bind的组和用户named

  groupadd named
  useradd -g named -d /chroot/named -s /bin/true named
  pASswd -l named #-l ,Lock,表示锁定用户

  c.创建虚拟设备(dev),日志记录的时候有的选项可能用到它们。在默认情况下,是使用/dev目录下的文件,但是由于我们需要把DNS限制到一个目录,所以必须完全把/dev下用到的文件(或者说设备)模拟过来才可以。

   ls -lL /dev/zero /dev/null /dev/random

  看到类似

  crw-rw-rw-  1 root   root    1,  3 2003-09-15 /dev/null
  crw-r--r--  1 root   root    1,  8 2003-09-15 /dev/random
  crw-rw-rw-  1 root   root    1,  5 2003-09-15 /dev/zero

  这样的,将其中的1,3这样的数字记录下来,这表示主设备号和次设备号(一般来说主设备号用来区分设备的种类;次设备号则是为了作唯一性区分,标明不同属性——注意,在unix系统中是把设备也当作文件来对待的),在redhat 9下,ls加不加-L参数都无所谓,但是在Solaris下则一定要加上才可以显示。

  mknod dev/null c 1 3
  mknod dev/zero c 1 5
  mknod dev/random c 1 8

  d.复制时钟文件到我们chroot的etc下,Linux 的时钟设置文件为:/etc/localtime ,实际上这个文件是 /usr/share/zoneinfo 目录下对应文件的符号连接。(假设我们所处的地区位于上海,那么只要运行以下的命令就可以设置时区了。 ln -sf /usr/share/zoneinfo/ASia/Shanghai /etc/localtime;注意在天缘用的solaris 2.6中并没有此文件,而是该用/usr/share/lib/zoneinfo/GB)

  cp /etc/localtime etc/

  3、创建和设置BIND 9配置文件

  默认情形下,bind以/etc/named.conf文件为配置文件。但由于我们这里是要做chroot的DNS,因此需要把named.conf放到/chroot/named/conf下去,然后再做一个符号连接到/etc/named.conf。首先创建并编辑named.conf文件(由于介绍DNS的文章大多对named.conf的配置解释得相当详细,因此我就不一句句解释了,大家结合注释,参考其他文章看看,很容易理解的)

vi /chroot/named/etc/named.conf,输入以下内容(由于每个人的配置都不同,所以天缘在这里只列出一个做cache only的DNS的设置)

options {
     //注意,由于是chroot方式,所以以下的/conf、/var并不是系统中真正的/conf和/var目录,而是指/chroot/named下的同名目录,此配置文件中所有地方都如此
directory    "/conf"; //配置文件所在目录
pid-file    "/var/run/named.pid"; //进程守护文件
statistics-file "/var/run/named.stats"; //状态输出文件;在rndc中用到
dump-file    "/var/run/named.db"; //输出数据库文件,在rndc中用到

//隐藏真实版本号,我这里写个4.0作刻意误导
version     "[4.0]";

     logging { //日志记录
        channel LAMER_log {
         file "/logs/DNS-lamer.log" versions 3 size 10m;
         severity info;
         print-severity yes; print-time yes;
         };

        channel SEC_log {
        file "/logs/DNS-sec.log" versions 3  size 10m;
        severity info;
        print-severity yes; print-time yes;
        };

        channel STAT_log {
        file "/logs/DNS-stat.log" versions 3 size 10m;
        severity info;
        print-severity yes; print-time yes;
         };

category cname { null; };
category lame-servers { LAMER_log; };
category security { SEC_log; };
category statistics { STAT_log; };
};

//根解析
zone "." {
type  hint;
file  "named.root";
};

// localhost 解析
zone "localhost" {
type  mASter;
file  "named.localhost";
notify no;
};

// localhost 反向解析
zone  "0.0.127.in-addr.arpa" {
type  mASter;
file  "named.127.0.0";
notify no;
};

  之后进行符号连接到/etc目录下
  ln -s /chroot/named/etc/named.conf /etc/named.conf

  好了,接下来,当然就是设置named.root、named.local、named.127.0.0三个文件了,注意,这三个文件的真实位置是在/chroot/named/conf下哦。

  首先是named.root的建立


  dig @a.root-servers.net . ns > /chroot/named/conf/named.root #这是在redhat下的用法,因为天缘所用的solaris默认(我用的2.6)没有dig命令,所以在solaris下我们用

cd /chroot/named/conf
ftp ftp://ftp.rs.internic.net/domain/named.root
接着是named.local

;
;named.local
;
$TTL  86400

@    IN SOA  @ root (
            42       ; 版本
            3H       ; 刷新时间3小时
            15M       ; 重试时间15分钟
            1W       ; 最大期限一周
            1D )      ; 最小TTL一天     IN NS    @
    IN A     127.0.0.1

接着是named.127.0.0

;
; named.127.0.0
;
$TTL  86400
@    IN   SOA   localhost. root.localhost. ( ;这里的root.localost其实是root@localhost,在DNS设置中,将@用.代替
              1 ; 版本
              28800   ; 刷新,这里和下面的特意以分钟为单位,和上面的写法不同,就当多举个例子吧
              14400   ; 重试
              3600000  ; 最大期限
              86400 )  ; 最小TTL
    IN   NS   localhost.
1    IN   PTR   localhost.

  4、设置权限

  其 关键词标签:安全,一个,配置;,文件

相关阅读

文章评论
发表评论

热门文章 DNS服务器配置使用 及全国DNS地址大全DNS服务器配置使用 及全国DNS地址大全感受Windows 2003域更名工具感受Windows 2003域更名工具Win2000 DNS服务器的设置Win2000 DNS服务器的设置使用DNS服务器实现负载均衡(图)使用DNS服务器实现负载均衡(图)

相关软件

人气排行 DNS服务器配置使用 及全国DNS地址大全Win2000/win2003 DNS 的常见问题Server2003 DNS服务配置篇DEBIAN DNS配置过程linux下双线DNS智能解析linux下dns设置详解BIND 在win 2003 下的安装及配置图解A记录MX记录CNAME记录url转发NS记录