当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Solaris10下DNS服务器安全攻略

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 Solaris10下DNS服务器安全攻略


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 146 ::
收藏到网摘: n/a

DNS服务器是为了网络上的主机提供域名解析的服务的服务器。Solaris10虽然自带了BIND9.2.4版本,但它并不是Sun公司的产品,InternetSoftwareConsortium负责BIND软件的更新,我们应当到www.isc.org网站下载最新版本的BIND软件,因为新的版本的软件可以防止某些漏洞。

下面我们来介绍如何配置DNS服务器。

一、从源代码安装配置DNS服务器

(1)为了下载最新的BIND软件,我们到http://www.isc.org/products/BIND/下载,本例子下载的是bind-9.3.2.tar.gz。

(2)将下载的软件放到系统中的某个目录下,本例中放在usr/local/src目录下。

#cdusr/local/src

#wgethttp://ftp.isc.org/isc/bind9/9.3.2/bind-9.3.2.tar.gz

#cpbind-9.3.2.tar.gz..

#cd..

#gzip-dbind-9.3.2.tar.gz

#tar-vxfbind-9.3.2.tar

#rmbind-9.3.2.tar

#cdbind-9.3.2

#./configure

#make

#makeinstall

#cd/usr/sbin

(3)生成的可执行文件位于/usr/local/sbin目录下。最重要的可执行文件为named和rndc。

#/usr/local/sbin/rndc-confgen>/etc/rndc.conf

#cat/etc/rndc.conf

输出为:

#Startofrndc.conf

key"rndc-key"...{

algorithmhmac-md5;

secret"y9xvvfQjdWv9f/Fo7wquBg==";

};

options...{

default-key"rndc-key";

default-server127.0.0.1;

default-port953;

};

#Endofrndc.conf

#Usewiththefollowinginnamed.conf,adjustingtheallowlistasneeded:

#key"rndc-key"...{

#algorithmhmac-md5;

#secret"y9xvvfQjdWv9f/Fo7wquBg==";

#};

#controls...{

#inet127.0.0.1port953

#allow...{127.0.0.1;}keys...{"rndc-key";};

#};

#Endofnamed.conf

(9)创建rndc.key文件。将rndc.conf文件中注释部分拷贝生成如下文件:

#vi/etc/rndc.key

key"rndc-key"...{

algorithmhmac-md5;

secret"y9xvvfQjdWv9f/Fo7wquBg==";

};

controls...{

inet127.0.0.1port953\

allow...{127.0.0.1;}keys...{"rndc-key";};\

};

检查rndc是否正常工作:

#/usr/local/sbin/named-g

Jan1111:56:45.075startingBIND9.2.3-g

Jan1111:56:45.076using1CPU

Jan1111:56:45.079loadingconfigurationfrom'/etc/named.conf'

......

#/usr/local/sbin/rndcstatus

(10)编辑named.conf配置文件。

#vi/etc/named.conf

第一段的内容如下:

//generatedbynamed-bootconf.pl

options...{

directory"/var/named";

/**//*

*Ifthereisafirewallbetweenyouandnameserversyouwant

*totalkto,youmightneedtouncommentthequery-source

*directivebelow.PreviousversionsofBINDalwaysasked

*portbydefault.

*/

//query-sourceaddress*port53;

};

上面的部分是在这个文件开头的options设定的,首先用directory指定了named的资源记录(RR-ResourceRecord文件目录所在位置为:“/var/named”。也就是说,它会到这个目录下面寻找DNS记录文件)。所以,我们在后面部分所指定的文件,就无须使用绝对路径了,但它们一定要放在这个目录下面。

那一段被注释文字,如果你仔细阅读一下,它大致意思是如果你要设定的DNS服务器和client之间隔着防火墙的话,要将“//query-sourceaddress*port53;”前面的注解符号“//”拿掉(当然,也必须要设定好你的火墙)。不过,这只对早期的版本有影响,而在bind8.1之后则无须担心这个设定。接下来再让我们看下一段句子:

//

//acachingonlynameserverconfig

//

zone"."IN...{

typehint;

file"named.root";

};

通过这几行语句,我们为named定义了DNS系统中的根区域“.”(rootzone)的设定,同时它是一个internet(IN)的区域类别。这里还指定了rootzone的服务器种类(type)为“hint”(也只有这个zone会使用这样的种类)。最后,用file指定这个区域记录文件为:“named.root”,也就是“/var/named/named.root”文件。在rootzone后面,你应该还会看到如下这两段:

zone"localhost"IN...{

typemaster;

file"localhost.zone";

allow-update...{none;};

};

zone"0.0.127.in-addr.arpa"IN...{

typemaster;

file"named.local";

allow-update...{none;};

};

这里是定义出关于本机名称的DNS解释:第一个zone是localhost的正解zone,其服务器种类是master,记录档名称是localhost.zone(在/var/named目录下面),但这个zone不允许客户主机(或服务器)自行更新DNS的记录。而第二个zone则是本机区域的反向解析zone。

再看下面的两段,这两段是cjh.com域的正向和反向解析。

zone"cjh.com"IN...{//新加cjh.com的域

typemaster;

file"cjh.com.zone";

allow-update...{none;};

};

zone"9.168.192.in-addr.arpa"IN...{//新加域的反向解析

typemaster;

file"named.192.168.9";

allow-update...{none;};

};

最后一行是bind9.x版本的新功能,用来进行区域转移或DNS更新所用的加密处理。

include"/etc/rndc.key";

(11)创建/var/named目录。

#mkdir/var/named

#cd/var/named

(12)匿名登录到ftp站点FTP.RS.INTERNIC.NET,获取/domain目录下的named.root文件,将该文件置于/var/named目录下。

(13)创建localhost.zone文件。

#vi/var/named/localhost.zone

$TTL86400

$ORIGINlocalhost.

@1DINSOA@root(

42;serial(d.adams)

3H;refresh

15M;retry

1W;expiry

1D);minimum

1DINNS@

1DINA127.0.0.1

(14)创建named.local文件。

#vinamed.local

$TTL86400

@INSOAlocalhost.root.localhost.(

2005022700;Serial

28800;Refresh

14400;Retry

3600000;Expire

86400);Minimum

INNSlocalhost.

1INPTRlocalhost.

[root@Linuxetc]#mkdir/var/named

//进入/var/named

[root@Linuxetc]#cd/var/named

//建立localhost.zone文件

[root@Linuxnamed]#vilocalhost.zone

$TTL86400

$ORIGINlocalhost.

@1DINSOA@root(

42;serial(d.adams)

3H;refresh

15M;retry

1W;expiry

1D);minimum

1DINNS@

1DINA127.0.0.1

//建立named.local文件

[root@Linuxnamed]#vinamed.local

$TTL86400

@INSOAlocalhost.root.localhost.(

1997022700;Serial

28800;Refresh

14400;Retry

360000061.177.252;Expire

86400);Minimum

INNSlocalhost.

1INPTRlocalhost.

(15)创建cjh.com.zone文件。

#vicjh.zone

$TTL1D

@INSOAcjh.com.root.cjh.com.(

1053891162

3H

15M

1W

1D)

INNScjh.com.

INMX5cjh.com.

wwwINA192.168.9.9

(16)创建named.192.168.9文件。

#vinamed.192.168.9

$TTL86400

@INSOAcjh.com.root.cjh.com.(

20031001;

7200;

3600;

43200;

86400);

@INNScjh.com.

9INPTRdns.cjh.com.

(17)在Solaris10操作系统中启动DNS服务。

#svcadmenable/network/dns/server

查看:

#svcs-l/network/dns/server

fmrisvc:/network/dns/server:default

nameInternetdomainnameserver(DNS)

enabledtrue

stateonline

next_statenone

restartersvc:/system/svc/restarter:default

contract_id25

dependencyrequire_all/nonesvc:/system/filesystem/minimal(online)

dependencyrequire_all/nonefile://localhost/etc/named.conf(online)

dependencyrequire_any/errorsvc:/network/loopback(online)

dependencyoptional_all/errorsvc:/network/physical(online)

(18)测试DNS反向解析是否成功。

#host192.168.9.9

9.9.168.192.in-addr.arpadomainnamepointerdns.cjh.com.

(19)测试DNS解析是否成功。

#nslookup

>www.cjh.com

Server:192.168.9.9

Address:192.168.9.9#53

Name:www.cjh.com

Address:192.168.9.9

>

出现上面的提示,说明DNS服务已经启动成功。

应用说明:

Solaris10基本上就已经安装好Bind9DNSServer,所以,跟本就不存在安装的问题。但为什么还要写这编文章呢?在某程度上跟和Solaris10的新功能ServiceManagementFacility(SMF)有关,而且,这编文章也有助于对SMF的深入了解。

Solaris10以前版本的DNS服务器启动和停止方法是:

启动DNSServer命令:

/etc/init.d/namedstart

停止DNSServer命令:

/etc/init.d/named

Solaris10版本的DNS服务器启动和停止方法是:

启动DNSServer命令:

svcadmenabledns/server或svcadmenabledns/server:default

停止DNSServer命令:

stopsvcadmdisabledns/server或svcadmdisabledns/server:default

二、让DNS服务器在“牢监”中运行

所谓“监牢”就是指通过chroot机制来更改某个软件运行时所能看到的根目录,即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。这样即使出现被破坏或被侵入,所受的损伤也较小。将软件chroot化的一个问题是该软件运行时需要的所有程序、配置文件和库文件都必须事先安装到chroot目录中,通常称这个目录为chrootjail(chroot“监牢”)。如果要在“监牢”中运行dns,而事实上根本看不到文件系统中那个真正的目录。因此需要事先创建目录,并将dns文件复制到其中。图-1中的例子,说明了牢监中的环境状态

图1“监牢”环境示意图

以下是具体步骤:

为DNSServer建立监牢目录

建立/chroot/dns目录

#mkdir/chroot/dns

建立一个空壳目录架构

#cd/chroot/dns

#mkdir-petc/namedvar/run

复制/etc/named.conf到监牢中

#cp/etc/named.conf/chroot/dns/etc/named.conf

复制/etc/named目录中的文件到Jail监牢中

#cp/etc/named/*/chroot/dns/etc/named/

更改/chroot/dns/var/run目录的权限

#chmod770/chroot/dns/var/run

#chownnoaccess:root/chroot/dns/var/run

为Solaris10建立一个新服务

原本的DNSServerService名称为dns/server。

建立新服务后,以后要启动旧版本的DNS服务时,不能只启动dns/server,而要改为dns/server:default。

新DNSServerChroot服务名称为,dns/server:chroot

开始建立新服务

#cd/var/svc/manifest/network/dns

#cpserver.xmlserver-chroot.xml

编辑server-chroot.xml

寻找

instancename='default'enabled='false'

改为

instancename='chroot'enabled='false' 

寻找

exec='/usr/sbin/named'

改为

exec='/usr/sbin/named-t/chroot/dns'

寻找

privileges='basic,!proc_session,!proc_info,!file_link_any,net_privaddr,file_dac_read,file_dac_search,sys_resource'/>

改为

privileges='basic,!proc_session,!proc_info,!file_link_any,net_privaddr,priv_proc_chroot,priv_file_dac_read,file_dac_search,sys_resource'/>

寻找

user='root'

改为

user='noaccess'

保存文件退出。

停止原来的DNS服务

#svcadmdisabledns/server:default

加入新的DNSServerChrootservice

#svccfgimportserver-chroot.xml

启动chrootDNSservice

#svcadmenabledns/server:chroot

#svcsdns/server

STATESTIMEFMRI

disabled6:21:03svc:/network/dns/server:default

online6:27:01svc:/network/dns/server:chroot

Bind9DNSServer现在已经能够在“监牢”环境中运行 

 三、在Solaris环境下,DNS客户端程序的配置非常容易,它只需要几个简单的步骤就可以完成。

(1)除了对/etc/inet/hosts文件或NIS/NIS+的主机名映射或者主机名(hostnames)表文件进行检查以外,还必须配置命名服务开关文件(/etc/nsswitch.conf),指定域名解析服务向DNS进行查询。为了确保DNS的正常工作,在/etc/nsswitch.conf文件中必须包括下行的内容:

hosts:filesdns

这行的意思是如果需要命名服务,首先查找/etc/inet/hosts文件,如果找不到,就到DNS中去查找。

(2)我们需要将主机的本地域名输入到/etc/defaultdomain文件中。例如,主机www.cjh.net的/etc/defaultdomain文件应有如下的输入项:

cjh.net

(3)我们需要在/etc/resolv.conf文件中包含本地域名、本地基本DNS服务器的IP地址,以及辅助的DNS服务器的IP地址。这意味着本地DNS服务器出现故障,我们仍可以通过辅助的NDS服务器来提供最新的外部主机信息,而不必依赖/etc/hosts文件中的数据来解析本地地址。例如,/etc/resolv.conf文件的内容可能是这样:

domaincjh.net

nameserver202.104.0.20

nameserver53.58.31.2

它表明本地域是cjh.net,本地域有两台基本DNS服务器。其中,202.104.0.20为主DNS服务器,53.58.31.2为辅助DNS服务器。

(4)下面我们可以启动DNS客户端软件了。

#svcadmenablesvc:/network/dns/client

(5)使用nslookup命令来检查DNS客户端配置是否正确。

#nslookup

>www.cjh.net

四、升级Solaris10自带BIND9.2.4版本到9.3.2的步骤

如果您正在使用Solaris10自带的BIND9.2.4版本,升级步骤如下:

首先编译源代码同上。

#cd/usr/sbin

#mvnamednamed.orig

#mvnamed-checkconfnamed-checkconf.orig

#mvnamed-checkzonenamed-checkzone.orig

#cp/usr/local/sbin/named.

#cp/usr/local/sbin/named-checkconf.

#cp/usr/local/sbin/named-checkzone. 

检查新安装的BIND9DNSServer版本命令如下:

#/usr/sbin/named-v

BIND9.3.2

从新启动ChrootJail了的DNS服务

#svcadmdisabledns/server:chroot

#svcadmenabledns/server:chroot

#svcsdns/server

STATESTIMEFMRI

disabled6:21:03svc:/network/dns/server:default

online6:27:01svc:/network/dns/server:chroot

#ps-elf|grepnamed

noaccess1331020:31:29?0:00/usr/sbin/named-t/chroot/dns

新的Bind9DNSServerVersion9.3.2现在已经安装好了。

总结:本文介绍了如下内容:

怎样启动和停止Bind9DNSServer?

如何设定Bind9DNSServer?

什么是监牢?

Bind9DNSServer怎样使用ChrootJail(保安监牢)功能来防止入侵者进入系统?

怎样建立新的SMFService来启动ChrootJail后的DNSServer?

DNS客户端设置

如何把Solaris10内的Bind9DNSServer升级到最新版本?

正如其他的Internet协议一样,DNS由几个Internet的RFC规范(最初是RFC882、883和973)。不过要理解DNS服务器的工作原理最好的标准还是RFC1035。你可以在Internet上的好几个地方找到RFC1035,比如在http://www.crynwr.com/crynwr/rfc1035/就有一个不错的HTML版本。正如你可能想到的那样,RFC具有相当的技术性,你不大可能会对超出DNS服务器一般操作的细节感兴趣。但是如果你想做个服务器管理员,那么就记住RFC吧。在Internet的命名服务中最常用的恐怕就是网络域名服务(DNS)了,所以Solaris10操作系统主要应用是BIND9DNS服务器。本文介绍如何设置和管理DNS服务器。

上一页[1][2][3][4]