- 论坛徽章:
- 0
|
非常感谢butterfly_lf的建议,我调试一下.
但是我很希望弄明白我使用chroot设置bind为什么会出现以上的问题,我安装的操作系统是linux7.3和bind-9.2.2,步骤如下:
1.编译安装bind
使用root登陆,下载bind-9.2.2,解开压缩,编译。
./configure --prefix=/usr/local/bind9
然后就可以编译了:
make
make install
2.设置 chroot
chroot() 设置是为了是BIND更加安全,使入侵者即使攻入也无法阅读任何系统文件,
比如多数允许匿名FTP使用chroot()。
(1)首先确认你的bind安装在哪里,指定权限应该是022,我安装在/usr/local/bind9下.
(2)建立目录和连接 chroot 运行环境
cd /usr/local/bind9
mkdir -p {dev,usr,var,etc};
mkdir -p var/{run,log,named} usr/lib;
mkdir -p usr/local/etc/
mkdir -p usr/share/lib/zoneinfo
(3)建立帐号
groupadd named
useradd -d /tmp -s /bin/false -g named -c "BIND daemon" -m named
#在chroot目录下生成必要passwd等文件。
grep named /etc/passwd >> /usr/local/bind9/etc/passwd
grep named /etc/shadow >> /usr/local/bind9/etc/shadow
grep named /etc/group >> /usr/local/bind9/etc/group
(5)拷贝为chroot环境的系统文件
cp /etc/{syslog.conf,nsswitch.conf,resolv.conf,timezone} /usr/local/bind9/etc
(6)查看named需要哪些lib文件
ldd /usr/local/bind9/sbin/named
#将这些文件拷贝到lib目录下,在Linux下例如:
cp -p /lib/libnsl.so.1 /lib/libpthread.so.0 /lib/libc.so.6 /lib/ld-linux.so.2 /usr/local/bind9/lib
(7)设置时区和其他系统设置。
mkdir -p /usr/local/bind9/usr/share/zoneinfo;
cp -p /usr/share/zoneinfo/MET /usr/local/bind9/usr/share/zoneinfo/MET
cd /usr/local/bind9/dev
mknod tcp c 11 42
mknod udp c 11 41
mknod log c 21 5
mknod null c 13 2
mknod zero c 13 12
chgrp sys null zero
chmod 666 null
mknod consolg c 21 0
mknod syscon c 0 0
chmod 620 syscon
chgrp tty syscon
chgrp sys consolg
( 将备份过的域名数据文件named放到/usr/local/bind9/var/下,即生成/usr/local/bind9/var/named域名数据文件
3.生成named.conf
这里我是将备份过的named.conf放到usr/local/bind9/etc/下面,生成usr/local/bind9/etc/named.conf,然后做如下设置:
chown root:named named.conf
chmod 640 named.conf
4.设置“监狱”模式
首先设置named必要的权限,并且禁止SUID/SGID文件等
cd /usr/local/bind9/
chgrp -R named *
chmod -R g-w var;
#在DNS服务器上,只需要允许建立和修改文件权限
chown -R root:named /usr/local/bind9/var/named/
chmod 770 /usr/local/bind9/var/named/
#生成空 log 和 pid 文件:
touch /usr/local/bind9/var/log/all.log /usr/local/bind9/var/run/named.pid
chown named:named /usr/local/bind9/var/log/all.log /usr/local/bind9/var/run/named.pid
#给 named 权限写 log 和 pid 文件
chgrp -R named /usr/local/bind9/var/log/ /usr/local/bind9/var/run/
chmod 770 /usr/local/bind9/var/log/ /usr/local/bind9/var/run/
chmod -R o-rwx /usr/local/bind9/var/log/ /usr/local/bind9/var/run/
#给 named 访问其他设置文件
chgrp named /usr/local/bind9/etc
chown root:named /usr/local/bind9/etc/named.conf
chmod 640 /usr/local/bind9/etc/named.conf
chmod 755 /usr/local/bind9/etc
#检查bind9目录,查看是否有SUID和SGID程序,如果除去SUID或SGID权限
find /usr/local/bind9/ -type f -exec chmod ug-s {} \;
#除去普通用户阅读权限
chmod -R o-rwx * /usr/local/bind9/usr/
安装bind和设置chroot完毕.
然后我运行:/usr/local/bind9/sbin/named -t /usr/local/bind9/ -u named
#-t表示 chroot 的目录 -u表示用户
就出现了上面提到的错误信息,请各位指教,多谢了!!! |
|