您的位置 首页 厂商

树立安全的DNS服务器

和其它大型软件一样,BIND(DNS服务器)也因其体积庞大和功能繁杂而存在许多问题。因此针对BIND安全漏洞的系统入侵数量也在大幅度上升,最严重的甚至

和其它大型软件相同,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.。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/321438.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部