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 现在已经能够在“监牢” 环境中运行
- 最新评论
