配置一个安全的chroot DNS[3]

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

本文简介:

  4、设置权限

  其实这一步,才是我们作任何chroot 服务真正精华的地方。如何把权限划分得准确,不至于无法执行服务,也不能大到会威胁到其他程序的安全,实在是一个需要仔细考虑的问题。

  a.由于我们的目的是达到让bind程序以named用户身份运行,所以必须让它具有读配置,无写配置文件的权限,而且最好其他程序也不能改变我们的配置文件,只有root能改,named用户能读。为了满足这个要求的,自然就想到把文件的拥有者改为root,组用户设置为named,然后再慢慢仔细划分权限。

  cd /chroot/named

  chown –R root.named ./ #-R参数表示下属目录也依照此权限,-R参数在chown和chmod中经常用到

  b.接下来想想各个文件、子目录的权限。Root组对 文件需要读写执行权限,named组对文件需要读取权限,而对下属子目录而言,则必须具有执行权限才能进入其中。因此作以下权限设置。

  # 对文件赋予root 读写权限,赋予组named读权限
  find . -type f -print | xargs chmod u=rw,og=r

  # 对目录赋予roo读写执行权限,赋予组named读执行权限(这里的执行是为了能进入到下级目录中)
  find . -type d -print | xargs chmod u=rwx,og=rx

  #对etc目录下的配置文件,能不让其他用户读取当然是最好的,因此设置
  chmod o= etc/*.conf

  # "secondaries" 子目录是此DNS服务器作辅助服务器,从主服务器更新消息的时候需要的,会在里面创建一些新文件。因此它的权限也需要特别设置,在这个目录下,named组、用户需要具有读权限,而不需要用到root用户,也不想让其他的用户身份访问。

  chown root.named conf/secondaries/ #设置secondaries目录用户为root,组为named

  chmod ug=rwx,o= conf/secondaries/ #给予root和named全部权限,以方便访问下面的文件

  touch conf/secondaries/.empty # 去掉旧有的该文件

  find conf/secondaries/ -type f -print | xargs chown named.named #将用户组、用户都设置为named

  find conf/secondaries/ -type f -print | xargs chmod ug=r,o= #只让named组和用户有读权限,而其他用户无任何权限

  接着是为var/目录设置权限(在这里会生成进程守护文件named.pid—我们在named.conf中设置了的)

  chown root.root var/ #这里可以把named抛弃,

  chmod u=rwx,og=x var/ #root可以读写设置,其他用户能执行就行,其实我们之所以做一个chroot DNS需要大费周折地单独设置目录,就是为了不让named具有访问真正的/var的权限。

  chown root.named var/run/ #因为在run下面的需要由named身份来写named.pid文件,所以需要将组改为named好限制权限

  chmod ug=rwx,o=rx var/run/ #用户/组具有读写执行权限,其他用户能读/执行就可以了,这样的设置,主要是为了方便我们后面写shell来判断DNS目前的状态。

  chown root.named logs/ #日志目录,设置成这样的原因不用解释了吧

  chmod ug=rwx,o=rx logs/ #日志允许其他人看比较好,方便以后挂第三方程序
  5、启动并运行bind 9

  激动人心的时候到了,即将开始我们的处女bind 9运行了。

  运行以下命令

/usr/local/sbin/named -t /chroot/named -u named -c /etc/named.conf
然后再ps –fCnamed 看看??如果出来类似
UID    PID PPID C STIME TTY     TIME CMD
named  14023   1 0 May27 ?    00:00:00 /usr/local/sbin/named -t /chroot/named -u named -c /etc/named.conf

  这样的结果,说明成功了,恭喜你!!!

  每次都这样输入累不累??所以还是一起来写个shell吧(其实shell真的粉好用,但是一般真要系统地讲解起来又没有意思,所以我尽量在每篇文章中都把shell用上,慢慢就领会到它的好处咯)

vi /chroot/named.start

#多cpu的记得加个 "-n " 参数,才能启用多cpu哦,我也是在别的地方看到的
#
# named命令格式: named [-c 配置文件] [-d 除错级别] [-f|-g] [-n cpu个数]
#       [-p 端口-默认是53] [-s] [-t chroot目录] [-u 执行该命令的用户身份]

cd /chroot/named
#确保除错的debug文件能够以named身份写入
touch named.run #建立该文件
chown named.named named.run #设置文件拥有者为named.named
chmod ug=rw,o=r  named.run #权限为664
#以named身份,在chroot/named目录中以/etc/named.conf为配置文件执行named程序
#这里的/etc/named.conf是我们用ln –s连过去的,参看前文
/usr/local/sbin/named -t /chroot/named -u named -c /etc/named.conf

  然后以sh /chroot/named.start 执行此命令就行了,之后在/etc/resolv.conf为自己的DNS地址就可以测试了,当然,也可以用dig命令来查(个人觉得dig命令比nslookup好用,但是Solaris 2.6上默认没有)。

  6. 控制工具rndc的安装和使用

  rndc=remote dnc,以前装过bind 8的朋友都知道有个ndc工具,而在bind 9中,更是连远程控制的功能都加上了。说“加上”其实不够恰当,因为rdnc并不是用ndc改的,而是重新写的一个通过tcp协议进行DNS控制的软件。(有什么用?问问做虚拟主机/系统管理的朋友就知道,DNS一般都是用独立主机,如果可以远程reload配置文件,可以方便很多的)。 

  rndc 原本是应该读取/usr/local/etc/rndc.conf 作为配置文件的,但我们既然是安装chroot的DNS,所以有必要把rndc.conf转到/chroot/named/etc/rndc.conf。好,下面来看看我们的rndc.conf的写法。

options {
    default-server localhost; //先配置本地的
    default-key   "rndckey"; //key的名字
};

server localhost {
    key   "rndckey"; //key的名字
};
include "/chroot/named/etc/rndc.key"; //在这个文件中包含了rndckey的值,之所以这样,是因为在rndc.conf和named.conf中都用到这个值,用include方便写自动的shell一些

同样的道理,在/chroot/named/etc/named.conf的也加上需要的语句

controls {
    inet 127.0.0.1 allow { localhost; } keys { rndckey; }; //允许localhost连接
};
include "/etc/rndc.key";

  接下来,就是要生成/chroot/named/etc/rndc.key 文件了,它是一个采用bASe-64编码加密的长字符串key,我们用DNSsec-keygen命令来生成它:

  cd /chroot/named/etc
  /usr/local/sbin/DNSsec-keygen -a HMAC-MD5 -b 256 -n HOST rndc

  得到一个类似Krndc.+157+30481这样的返回值,这说明已经在当前目录下成功建立了Krndc.+157+30481.key和Krndc.+157+30481.private两个文件

cat Krndc.+157+30481.private 显示
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: aoqaT1r9Oz29DIj3VPn6+teHcvBudGAc17qLM4nPOqA=

 在这里,Key后面的那串字符就是我们想要的key了,把它复制下来,然后删除临时文件

rm Krndc.+157+30481.*
vi /chroot/named/etc/rndc.key

key "rndckey" {
    algorithm    "hmac-md5";
    secret     " aoqaT1r9Oz29DIj3VPn6+teHcvBudGAc17qLM4nPOqA=";
};

本文关键:暂无
  相关方案
Google
 

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

go top