快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

Solaris 10下DNS服务器安全攻略

DNS服务器是为了网络上的主机提供域名解析的服务的服务器。Solaris 10虽然自带了BIND 9.2.4版本,但它并不是Sun公司的产品,Internet Software Consortium负责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目录下。

  #cd usr/local/src

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

  # cp bind-9.3.2.tar.gz ..

  # cd ..

  # gzip -d bind-9.3.2.tar.gz

  # tar -vxf bind-9.3.2.tar

  # rm bind-9.3.2.tar

  # cd bind-9.3.2

  # ./configure

  # make

  # make install

  # cd /usr/sbin

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

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

  # cat /etc/rndc.conf

  输出为:

  # Start of rndc.conf

  key "rndc-key" ...{

  algorithm hmac-md5;

  secret "y9xvvfQjdWv9f/Fo7wquBg==";

  };

  options ...{

  default-key "rndc-key";

  default-server 127.0.0.1;

  default-port 953;

  };

# End of rndc.conf

  # Use with the following in named.conf, adjusting the allow list as needed:

  # key "rndc-key" ...{

  # algorithm hmac-md5;

  # secret "y9xvvfQjdWv9f/Fo7wquBg==";

  # };

  # controls ...{

  # inet 127.0.0.1 port 953

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

  # };

  # End of named.conf

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

  # vi /etc/rndc.key

  key "rndc-key" ...{

  algorithm hmac-md5;

  secret "y9xvvfQjdWv9f/Fo7wquBg==";

  };

controls ...{

  inet 127.0.0.1 port 953\

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

  };

  检查rndc是否正常工作:

  #/usr/local/sbin/named -g

  Jan 11 11:56:45.075 starting BIND 9.2.3 -g

  Jan 11 11:56:45.076 using 1 CPU

  Jan 11 11:56:45.079 loading configuration from '/etc/named.conf'

  ......

  #/usr/local/sbin/rndc status

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

  # vi /etc/named.conf

  第一段的内容如下:

  // generated by named-bootconf.pl

  options ...{

  directory "/var/named";

  /**//*

* If there is a firewall between you and nameservers you want

  * to talk to, you might need to uncomment the query-source

  * directive below. Previous versions of BIND always asked

  * port by default.

  */

  // query-source address * port 53;

  };

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

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

  //

  // a caching # 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

  $TTL 86400

  $ORIGIN localhost.

  @ 1D IN SOA @ root (

  42 ; serial (d. adams)

3H ; refresh

  15M ; retry

  1W ; expiry

  1D ) ; minimum

  1D IN NS @

  1D IN A 127.0.0.1

  (14)创建named.local文件。

  # vi named.local

  $TTL 86400

  @ IN SOA localhost. root.localhost. (

  2005022700 ; Serial

  28800 ; Refresh

  14400 ; Retry

  3600000 ; Expire

  86400 ) ; Minimum

  IN NS localhost.

  1 IN PTR localhost.

# mkdir /var/named

  //进入/var/named

  # cd /var/named

  //建立localhost.zone文件

  #vi localhost.zone

  $TTL 86400

  $ORIGIN localhost.

  @ 1D IN SOA @ root (

  42 ; serial (d. adams)

  3H ; refresh

  15M ; retry

  1W ; expiry

  1D ) ; minimum

  1D IN NS @

  1D IN A 127.0.0.1

  //建立named.local文件

  #vi named.local

$TTL 86400

  @ IN SOA localhost. root.localhost. (

  1997022700 ; Serial

  28800 ; Refresh

  14400 ; Retry

  3600000 61.177.252 ; Expire

  86400 ) ; Minimum

  IN NS localhost.

  1 IN PTR localhost.

  

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

  # vi cjh.zone

  $TTL 1D

  @ IN SOA cjh.com. root.cjh.com. (

  

  1053891162

  3H

  15M

  1W

  1D )

IN NS cjh.com.

  IN MX 5 cjh.com.

  www IN A 192.168.9.9

  

  (16)创建named.192.168.9文件。

  # vi named.192.168.9

  $TTL 86400

  @ IN SOA cjh.com. root.cjh.com.(

  20031001;

  7200;

  3600;

  43200;

  86400);

  @ IN NS cjh.com.

  9 IN PTR dns.cjh.com.

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

  #svcadm enable /network/dns/server

  查看:

  # svcs -l /network/dns/server

  fmri svc:/network/dns/server:default

  name Internet domain name server (DNS)

  enabled true

  state src="/uploads/allimg/080905/1328342.jpg" width=500 twffan="done">

  图 1 “监牢”环境示意图

  以下是具体步骤:

为 DNS Server 建立监牢目录

  建立 /chroot/dns 目录

  # mkdir /chroot/dns

  建立一个空壳目录架构

  # cd /chroot/dns

  # mkdir -p etc/named var/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 目录的权限

  # chmod 770 /chroot/dns/var/run

  # chown noaccess:root /chroot/dns/var/run

  为 Solaris 10 建立一个新服务

  原本的 DNS Server Service 名称为 dns/server。

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

  新 DNS Server Chroot 服务 名称为, dns/server:chroot

  开始建立新 服务

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

  # cp server.xml server-chroot.xml

  编辑 server-chroot.xml

寻找

  instance name='default' enabled='false'

  改为

  instance name='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服务

  # svcadm disable dns/server:default

  加入新的 DNS Server Chroot service

  # svccfg import server-chroot.xml

  启动 chroot DNS service

  # svcadm enable dns/server:chroot

  # svcs dns/server

STATE STIME FMRI

  disabled 6:21:03 svc:/network/dns/server:default

  online 6:27:01 svc:/network/dns/server:chroot

  Bind 9 DNS Server 现在已经能够在“监牢” 环境中运行 

 

顶(1)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论