架設CHROOT環境下的安全DNS

系統平臺:RedHat Linux 9
軟件版本:Bind 9.26

考慮到的系統兼容性及運行速度,所以安裝採用源碼包,去ISC(BIND官方)下載最新的穩定版本(即次本號爲偶數)。

安裝步驟:(無特殊需求,所有操作都爲root權限)
一、 主DNS服務器配置 ( Master Bind)
(1)BIND 安裝
wget ftp://ftp.isc.org/isc/bind9/9.2.6/bind-9.2.6.tar.gz
tar zxvf bind-9.2.6.targz
cd bind-9.2.6
./configure --prefix /usr/local/named      //指定安裝目錄爲/usr/local/named
make && make install
(2 ) 建立執行用戶(用於指定named daemon運行的用戶權限,它不需要有任何登錄shell)
groupadd named
useradd –g named –d /chroot/named –s /sbin/nologin named
(3)CHROOT環境建立
1.虛擬根目錄系統:
   /chroot
     +---- dev
     +---- etc
     +---- named
     +---- var
      |   +---- run
   +---- logs
mkdir –p /chroot/dev/
mkdir –p /chroot/etc/
mkdir –p /chroot/logs/
mkdir –p /chroot/var/run
mkdir –p /chroot/var/named/zone
2.創建虛擬設備:
mknod /chroot/dev/null c 1 3
mknod /chroot/dev/zero c 1 5
mknod /chroot/dev/random c 1 8
3.複製時鐘文件
cp –a /etc/localtime /chroot/etc/
(4)創建BIND配置文件
1. named.conf
BIND 配置文件主要是named.conf文件,默認指向/etc/named.conf文件。也可以用named –c 參數指向另一位置。此處,由於配置chroot的需要,將named.conf文件放至/chroot/etc/,在/etc/named.conf作其軟鏈接,並用named –c /etc/named.conf指向。
cd /chroot/etc/

vi named.conf

options {
        directory "/var/named";
        version "????";
        pid-file "/var/run/named.pid";
        statistics-file "/var/run/named.stats";
        dump-file "/var/run/named.db";
  Allow-transfer {10.1.35.2;};
};
logging {
             channel "bind_log" {
                 file "/logs/bind.log" versions 3 size 25m;
                 severity info;
                 print-time yes;
                 print-severity yes;
                 print-category yes;
             };
             channel "query_log" {
                 file "/logs/query.log" versions 3 size 25m;
                 severity info;
                 print-time yes;
             };
        category lame-servers { null; };
        category queries { "query_log"; };
        category default{ "bind_log"; };
};
view "internal" {
        match-clients { 10.0.0.0/8; 127.0.0.1; };
        zone "." {
                 type hint;
                 file "root.hints";
        };

        zone "0.0.127.in-addr.arpa" {
                 type master;
                 file "zone/127.0.0";
        };
        zone "test.edu.cn" {
                 type master;
                 file "zone/test.edu.cn1";
        };
        zone "0.0.10.in-addr.arpa" {
                 type master;
                 file "zone/10.0.0";
        };
};

view "external" {
        match-clients { any; };
        recursion no;

          zone "test.edu.cn" {
                 type master;
                 file  "zone/test.edu.cn";
          };

          zone "1.99.202.in-addr.arpa" {
                 type master;
                 file "zone/202.99.1.0";
          };
};
ln –s /chroot/etc/named.conf /etc/           //鏈接到/etc/named.conf

2. root.hints (root域名服務器A記錄列表)

#dig > /chroot/var/named/root.hints

#wget ftp://ftp.internic.org/domain/named.root
#mv named.root root.hints

3. 127.0.0  (本地反向解析列表)
vi /chroot/var/named/zone/127.0.0
$TTL 3D
@               IN      SOA     test.edu.cn. root.test.edu.cn. (
                                200612286       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                         NS      ns.test.edu.cn.
                         NS      ns2.test.edu.cn.
1                       PTR     localhost.


4. 10.0.0  (內網反向解析列表)
vi /chroot/var/named/zone/10.0.0
$TTL 3D
@               IN      SOA     test.edu.cn. root.test.edu.cn. (
                                199609206       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                NS      ns.test.edu.cn.
                NS      ns2.test.edu.cn.
1       PTR     gw.test.edu.cn.
2       PTR     test.edu.cn.
2       PTR     funn.test.edu.cn.
200     PTR     jsj.test.edu.cn.
201     PTR     jm.test.edu.cn.
202     PTR     gs.test.edu.cn.
203     PTR     wy.test.edu.cn.
204     PTR     sl.test.edu.cn.
205     PTR     ty.test.edu.cn.
250     PTR     nx.test.edu.cn.
251     PTR     jy.test.edu.cn.
252     PTR     zw.test.edu.cn.
253     PTR     tmjz.test.edu.cn.
254     PTR     jxdz.test.edu.cn.
205     PTR     smkx.test.edu.cn.
250     PTR     shkx.test.edu.cn.
251     PTR     hx.test.edu.cn.
252     PTR     spgz.test.edu.cn.
253     PTR     tmjz.test.edu.cn.
254     PTR     yyyl.test.edu.cn.
253     PTR     dwkx.test.edu.cn.
254     PTR     wlzx.test.edu.cn.



5. test.edu.cn1 (內網正向解析列表)
vi /chroot/var/named/zone/test.edu.cn1
$TTL 3D
@       IN      SOA     test.edu.cn. root.test.edu.cn. (
                        200612286       ; serial, todays date + todays serial
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        4W              ; expire, seconds
                        1D )            ; minimum, seconds
                NS      ns.test.edu.cn.
                NS      ns2.test.edu.cn.
                MX      10 mail.test.edu.cn.
localhost         A       127.0.0.1
gw              A       10.0.0.1
test.edu.cn.      A       10.1.1.3
ns2              A       10.0.0.192
mail             A       10.0.0.33
www             CNAME   test.edu.cn.
jsj              A       10.0.0.200
               MX      10 mail.test.edu.cn   ; 計算機系
jm              A       10.0.0.201
               MX      10 mail.test.edu.cn   ; 經貿系
gs              A       10.0.0.202
               MX      10 mail.test.edu.cn   ; 工商系
wy              A       10.0.0.203
                MX      10 mail.test.edu.cn   ; 外語系
sl              A       10.0.0.204
                MX      10 mail.test.edu.cn   ; 數理系
ty              A       10.0.0.205
                MX      10 mail.test.edu.cn   ; 體育系
nx              A       10.0.0.250
                MX      10 mail.test.edu.cn   ; 農學系
jy              A       10.0.0.251
                MX      10 mail.test.edu.cn   ; 教育系
zw              A       10.0.0.252
                MX      10 mail.test.edu.cn   ; 中文系
tmjz            A       10.0.0.253
                MX      10 mail.test.edu.cn   ; 土木建築系
jxdz            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 機械電子系
smkx            A       10.0.0.253
                MX      10 mail.test.edu.cn   ; 生命科學系
shkx            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 社會科學系
hx              A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 化學系
spgz            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 食品工程系
yyyl            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 園藝園林系
dwkx            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 動物科學系
wlzx            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 網絡中心



6. test.edu.cn (外網正向解析列表)
vi /chroot/var/named/zone/test.edu.cn
$TTL 3D
@       IN      SOA     test.edu.cn. root.test.edu.cn. (
                       200612286       ; serial, todays date + todays serial
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        4W              ; expire, seconds
                        1D )            ; minimum, seconds
                NS      ns.test.edu.cn.
                NS      ns2.test.edu.cn.
                MX      10 mail.test.edu.cn.
localhost            A       127.0.0.1
gw                 A       10.0.0.1
test.edu.cn.        A       192.168.1.6
mail                A       10.0.0.33
ns2                A       10.1.1.22
www             CNAME   test.edu.cn.
jsj             A       10.0.0.200
                MX      10 mail.test.edu.cn   ; 計算機系
jm              A       10.0.0.201
                MX      10 mail.test.edu.cn   ; 經貿系
gs              A       10.0.0.202
                MX      10 mail.test.edu.cn   ; 工商系
wy              A       10.0.0.203
                MX      10 mail.test.edu.cn   ; 外語系
sl              A       10.0.0.204
                MX      10 mail.test.edu.cn   ; 數理系
ty              A       10.0.0.205
                MX      10 mail.test.edu.cn   ; 體育系
nx              A       10.0.0.250
                MX      10 mail.test.edu.cn   ; 農學系
jy              A       10.0.0.251
                MX      10 mail.test.edu.cn   ; 教育系
zw              A       10.0.0.252
                MX      10 mail.test.edu.cn   ; 中文系
tmjz            A       10.0.0.253
                MX      10 mail.test.edu.cn   ; 土木建築系
jxdz            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 機械電子系
smkx            A       10.0.0.253
                MX      10 mail.test.edu.cn   ; 生命科學系
shkx            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 社會科學系
hx              A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 化學系
spgz            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 食品工程系
yyyl            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 園藝園林系
dwkx            A       10.0.0.254
                MX      10 mail.test.edu.cn   ; 動物科學系
wlzx            A       10.0.0.254

                MX      10 mail.test.edu.cn   ; 網絡中心



7. 202.99.10 (外網反向解析列表)
vi /chroot/var/named/zone/202.99.10
$TTL 3D
@               IN      SOA     test.edu.cn. root.test.edu.cn. (
                                199609206       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                NS      ns.test.edu.cn.
                NS      ns2.test.edu.cn.
1       PTR     gw.test.edu.cn.
2       PTR     test.edu.cn.
2       PTR     funn.test.edu.cn.
200     PTR     jsj.test.edu.cn.
201     PTR     jm.test.edu.cn.
202     PTR     gs.test.edu.cn.
203     PTR     wy.test.edu.cn.
204     PTR     sl.test.edu.cn.
205     PTR     ty.test.edu.cn.
250     PTR     nx.test.edu.cn.
251     PTR     jy.test.edu.cn.


(5)啓動named測試
# named -u named -gc /chroot/etc/named.conf
注:
1>此處如果named出錯,都會有提示,因爲-g參數將stderr重定向到了terminal.
2>一般問題是對named.conf中指定的/chroot/var/run/目錄的訪問被禁止,根據第(7)節的權限設置一下即可。
3> 如果在開始就沒有配置chroot,則此處不能使用-u參數,因爲named.conf指定的是相對於chroot的/var/run/目錄,它的權限是我們對bind jail設定的,與系統無關。但沒有chroot的named.conf指定的named用戶對系統的/var/run是沒有權限的,我們也不能奢望去改變系統的/var/run/目錄權限,那可能會引起安全問題。解決方法是指定一個我們可以權限控制而不會影響系統正常運行的目錄。

開啓另一個shell:
# dig @127.0.0.1 test.edu.cn

; <<>> DiG 9.3.3rc2 <<>> @127.0.0.1 test.edu.cn
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61964
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;test.edu.cn.                   IN      A

;; ANSWER SECTION:
test.edu.cn.            259200  IN      A       10.1.1.3

;; AUTHORITY SECTION:
test.edu.cn.            259200  IN      NS      ns2.test.edu.cn.
test.edu.cn.            259200  IN      NS      ns.test.edu.cn.

;; ADDITIONAL SECTION:
ns2.test.edu.cn.        259200  IN      A       10.0.0.192

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Oct 27 20:59:18 2007
;; MSG SIZE  rcvd: 112




(6)配置RNDC管理
1.建立rndc配置文件
BIND默認指向/etc/rndc.conf,由於chroot技術需要,建立在/chroot/etc/rndc.conf,再建立軟鏈接至/etc/下。
/usr/local/named/sbin/rndc-confgen > /chroot/etc/rndc.conf
vi rndc.conf
將     # 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"; };
       # };
段去掉#號,加至named.conf中。
named.conf文件:
options {
        directory "/var/named";
        version "????";
        pid-file "/var/run/named.pid";
        statistics-file "/var/run/named.stats";
        dump-file "/var/run/named.db";
};
logging {
             channel "bind_log" {
                 file "/logs/bind.log" versions 3 size 25m;
                 severity info;
                 print-time yes;
                 print-severity yes;
                 print-category yes;
             };
             channel "query_log" {
                 file "/logs/query.log" versions 3 size 25m;
                 severity info;
                 print-time yes;
             };
        category lame-servers { null; };
        category queries { "query_log"; };
        category default{ "bind_log"; };
};

key "rndc-key" {
      algorithm hmac-md5;
      secret "ZE+kG903uisrvr+xdFFAmg==";
};

controls {
      inet 127.0.0.1 port 953
       allow { 127.0.0.1; } keys { "rndc-key"; };
};

view "internal" {
        match-clients { 10.0.0.0/8; 127.0.0.1; 192.168.1.0/24; };
        zone "." {
                 type hint;
                 file "root.hints";
        };

        zone "0.0.127.in-addr.arpa" {
                 type master;
                 file "zone/127.0.0";
                 notify no;
        };
        zone "test.edu.cn" {
                 type master;
                 file "zone/test.edu.cn1";
                 notify no;
        };
        zone "0.0.10.in-addr.arpa" {
                 type master;
                 file "zone/10.0.0";
                 notify no;
        };
};

view "external" {
        match-clients { any; };
        recursion no;

          zone "test.edu.cn" {
                 type master;
                 file  "zone/test.edu.cn";
                 notify no;
          };

          zone "1.99.202.in-addr.arpa" {
                 type master;
                 file "zone/202.99.1.0";
                 notify no;
          };
};

#ln –s /chroot/etc/rndc.conf /etc/      //爲rndc.conf文件創建在/etc/下的軟鏈接

重啓named daemon,加載新的配置文件:
#named -gc /chroot/etc/named.conf

測試rndc操作:
#rndc status
rndc status
number of zones: 5
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is ON
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
#rndc reload
server reload successful



(7)設定訪問權限
cd /chroot/
chown –R root.named etc
chmod –R 750 etc
chown root.root var
chmod 711 var
chown root.named var/run
chmod 775 var/run
chown root.named logs
chmod 775 logs

(8) 配置開機啓動腳本
vi /etc/rc.d/init.d/named
#!/bin/sh
# named      BIND
#
# chkconfig: 345 40 50
#
# description:named is the software bind's deamon.
#

case "$1" in
start)
      /usr/local/named/sbin/named -u named -c /etc/named.conf -t /chroot/
      echo -n "Bind started"
      echo .
;;

stop)
      /usr/local/named/sbin/rndc stop
      echo -n "Bind stoped"
      echo .
;;

reload)
      /usr/local/named/sbin/rndc reload
      echo -n "Bind reloaded"
      echo .
;;

status)
      /usr/local/named/sbin/rndc status
      echo .
;;

*)
      echo "/etc/rc.d/init.d/named {start|stop|reload|status}"
      echo .
      exit 1
esac

exit 0

chmod 755 /etc/rc.d/init.d/named
chkconfig –add named



二、輔助DNS服務器配置(Slave Bind)

安裝過程與主DNS服務器配置大致相同,只需修改named.conf文件爲:
options {
        directory "/var/named";
        version "????";
        pid-file "/var/run/named.pid";
        statistics-file "/var/run/named.stats";
        dump-file "/var/run/named.db";
};
logging {
             channel "bind_log" {
                 file "/logs/bind.log" versions 3 size 25m;
                 severity info;
                 print-time yes;
                 print-severity yes;
                 print-category yes;
             };
             channel "query_log" {
                 file "/logs/query.log" versions 3 size 25m;
                 severity info;
                 print-time yes;
             };
        category lame-servers { null; };
        category queries { "query_log"; };
        category default{ "bind_log"; };
};
view "internal" {
        match-clients { 10.0.0.0/8; 127.0.0.1; 192.168.1.0/24; };
        zone "." {
                 type hint;
                 file "root.hints";
        };

        zone "0.0.127.in-addr.arpa" {
                 type master;
                 file "zone/127.0.0";
        };
        zone "test.edu.cn" {
                 type slave;
                 masters { 192.168.100.23; };
                 file "zone/test.edu.cn1";
        };
};

view "external" {
        match-clients { any; };
        recursion no;

          zone "test.edu.cn" {
                 type slave;
                 masters { 192.168.100.23; };
                 file "zone/test.edu.cn";
          };

          zone "1.99.202.in-addr.arpa" {
                 type slave;
                 masters { 192.168.100.23; };
                 file "zone/202.99.1.0";

          };
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章