免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2782 | 回复: 0
打印 上一主题 下一主题

Solaris 10 OS + Bind 9 DNS Server + 安裝、設定、啟動、保安監牢、 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-14 17:33 |只看该作者 |倒序浏览

前言
Solaris 10 基本上就已經安裝好 Bind 9 DNS Server,所以,跟本就不存在安裝的問題。但為什麼還要寫這編文章呢?在某程度上跟和 Solaris 10 的新功能 Service Management Facility (SMF)有關,而且,這編文章也有助於對 SMF的深入了解。
另外,安裝好了 Bind DNS Server 之後還有很多問題要面對。
怎樣啟動和停止 Bind 9 DNS Server?
如何設定 Bind 9 DNS Server?
如何把我的 Domain Name 加入 Bind 9 DNS Server?
怎樣另到 Bind 9 DNS Server 把我的 Domain Name 指向我的 Web Server、Ftp Server、MX Mail Server、SMTP Server 和 POP Server?
怎樣提高 Bind 9 DNS Server 的安全性,使到就算給 Hacker Hack 進了 Bind 9 DNS Server,Hacker 們也沒有辦法真正進入系統?
什麼是 Chroot Jail (保安監牢)?
Bind 9 DNS Server 怎樣使用 Chroot Jail (保安監牢)功能來防止 Hacker 進入系統?
怎樣建立新的 SMF Service 來啟動 Chroot Jail 後的 DNS Server?
如何把 Solaris 10 內的 Bind 9 DNS Server升級到最新版本?
以上的問題,都是本編文章主要討論的內容。
怎樣啟動和停止 Bind 9 DNS Server
在Solaris 10 版本,只要需要建立好 DNS Server 的設定檔 /etc/named.conf ,從新啟動 Solaris 10,Bind 9 DNS Server 就會自動啟動。啟動和停止DNS Server

舊版本 Solaris
Solaris 10
啟動 DNS Server
/etc/init.d/named start
svcadm enable dns/serversvcadm enable dns/server:default
停止 DNS Server
/etc/init.d/named stop
svcadm disable dns/server svcadm disable dns/server:default

如何設定 Bind 9 DNS Server
設定 Bind 9 DNS Server的第一個工作,就是建立 /etc/named.conf 這個文件檔。
1. 在建立之前,先做一些準備和假設:

IP Address
Domain Name
Domain Name
202.134.130.131
tophk.net
Gateway / Router IP Address
202.134.130.129
gw1.tophk.net
DNS Server IP Address
202.134.130.130
ns1.tophk.net
Web Server
202.134.130.131
www.tophk.net
FTP Server
202.134.130.131
ftp.tophk.net
MX Mail Server
202.134.130.132
mail.tophk.net
SMTP Server
202.134.130.132
smtp.tophk.net
POP Server
202.134.130.133
pop.tophk.net
2. 編輯 /etc/named.conf
options {directory "/etc/named"; pid-file "/var/run/named.pid";};
controls {/* empty */};
// Root server hints
zone "." {type hint; file "root.hint";};
// Provide a reverse mapping for the loopback address 127.0.0.1
zone "0.0.127.in-addr.arpa" {type master; file "localhost.rev"; notify no;};
zone "tonhk.net"                     {type master; file "db.tophk";};

options {directory "/etc/named"; pid-file "/var/run/named.pid";};
directory "/etc/named"
除了 /etc/named.conf 之外, 還要建立一個目錄給 DNS Server 存放 每一個Domain 的詳細資料。這個例子為 /etc/named
建立 /etc/named 目錄:
# mkdir /etc/named
pid-file "/var/run/named.pid"
DNS Server 運作的 process ID 存放在 /var/run/named.pid

controls {/* empty */};
允許任何人使用這台 DNS Server

zone "." {type hint; file "root.hint";};
Root Cache 檔存放在 /etc/named/root.hint
root.hint 文件內存放了所有最頂層 DNS Server 的 IP 和資料,Bind 9 DNS Server 會向這些 DNS Server 查詢 Internet 內所有 Domain Name 的資料。
建立和下載 root.hint 檔:
# dig @a.root-servers.net . ns > /etc/named/root.hint
或自行編輯 /etc/named/root.hint 檔:
$TTL 999999
.                       IN NS   A.ROOT-SERVERS.NET.
.                       IN NS   B.ROOT-SERVERS.NET.
.                       IN NS   C.ROOT-SERVERS.NET.
.                       IN NS   D.ROOT-SERVERS.NET.
.                       IN NS   E.ROOT-SERVERS.NET.
.                       IN NS   F.ROOT-SERVERS.NET.
.                       IN NS   G.ROOT-SERVERS.NET.
.                       IN NS   H.ROOT-SERVERS.NET.
.                       IN NS   I.ROOT-SERVERS.NET.
.                       IN NS   J.ROOT-SERVERS.NET.
.                       IN NS   K.ROOT-SERVERS.NET.
.                       IN NS   L.ROOT-SERVERS.NET.
.                       IN NS   M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.     IN A    198.41.0.4
B.ROOT-SERVERS.NET.     IN A    192.228.79.201
C.ROOT-SERVERS.NET.     IN A    192.33.4.12
D.ROOT-SERVERS.NET.     IN A    128.8.10.90
E.ROOT-SERVERS.NET.     IN A    192.203.230.10
F.ROOT-SERVERS.NET.     IN A    192.5.5.241
G.ROOT-SERVERS.NET.     IN A    192.112.36.4
H.ROOT-SERVERS.NET.     IN A    128.63.2.53
I.ROOT-SERVERS.NET.     IN A    192.36.148.17
J.ROOT-SERVERS.NET.     IN A    192.58.128.30
K.ROOT-SERVERS.NET.     IN A    193.0.14.129
L.ROOT-SERVERS.NET.     IN A    198.32.64.12
M.ROOT-SERVERS.NET.     IN A    202.12.27.33
zone "0.0.127.in-addr.arpa" {type master; file "localhost.rev"; notify no;};
127.0.0.x 的 reverse lookup 功能。
這是用來定義 127.0.0.0 至127.0.0.255 的 Domain 是什麼, 但習慣上, 這個範圍的 IP 是沒有什麼需要定義的。
基本上,只有 127.0.0.1 有需要 reverse lookup。
127.0.0.x 的 reverse lookup 資料檔存放在 /etc/named/localhost.rev 內。
編輯 /etc/named/localhost.rev 檔:
$TTL 86400
@ IN SOA 0.0.127.in-addr.arpa.  info.tophk.net. (
                2       ; Serial
                3600    ; Refresh every hour
                900     ; Retry every 15 minutes
                3600000 ; Expire 1000 hours
                3600 )  ; Minimum 1 hour
                IN      NS      ns1.tophk.net.
                IN      NS      ns2.tophk.net.
1       600     IN      PTR     localhost
$TTL     86400
TTL (Time to Live) 。通知其他 DNS Server 不要 Cache (暫存) 記錄這個 Zone record 的資料超過 24小時 (86400秒)。
@ IN SOA 0.0.127.in-addr.arpat. info.tophk.net. (
對應的 Zone 名 0.0.127.in-addr.arpa.
Zone File 負責人為 info.tophk.net.。 ( 即 info@tophk.net )
2     ; Serial
Zone file 版本號,每次改變內容後需要把版本號數值加大,例如,把2改成3。Slave DNS Server 會根據這個 Master DNS Server 的 Zone file 版本號來決定是否需要更新 Slave DNS Server 的資料 ( 即 Zone Transfer )。
3600     ; Refresh every hour
通知 Slave DNS Server 每格一小時 (3600秒),檢查這個 Zone file 版本號是否有更改 。
900      ; Retry every 15 minutes
通知 Slaver DNS Server ,如果無法進行檢查這個 Master Zone file 版本號,要每格15分鐘 (900秒) 再試一次。
3600000     ; Expire 1000 hours
通知 Slaver DNS Server ,如果在1000小時內 (3600000秒) 也無法進行檢查這個 Master Zone file 版本號,Slave DNS Server 就會自動刪除這個 Zone Copy。
3600  )      ; Minimum 1 hour
通知其它的 DNS server cache 這筆Zone File 內容時, 最長不應該超過這個一個小時 (3600秒)。
IN NS      ns1.tophk.net.
第一台 DNS Server 名稱為 ns1.tophk.net。
IN NS      ns2.tophk.net.
第二台 DNS Server 名稱為 ns2.tophk.net。
1    600    IN PTR    localhost
127.0.0.1localhost

zone "tonhk.net" {type master; file "db.tophk";};
Doamain Name 為 tophk.net
保存了 tophk.net 詳細資料的 Zone file 位置,/etc/named/db.tophk
編輯 /etc/named/db.tophk 檔:$TTL 18000
@ IN SOA tophk.net. info.tophk.net. (
                        2005030104      ; Serial
                        36000   ; refresh: 10 hrs
                        1800    ; retry: 30 mins
                        3456000 ; expire: 40 days
                        36000   ; minimum: 10 hrs
)
                        IN      NS      ns1.tophk.net.
                        IN      NS      ns1.formulahk.com.
                        IN      A       202.134.130.131
                        IN      MX 10   mail.tophk.net.
      
ns1             600     IN      A       202.134.130.130
www             600     IN      CNAME   tophk.net.
ftp             600     IN      CNAME   tophk.net.
mail            600     IN      A       202.134.130.132
smtp            600     IN      CNAME   mail.tophk.net.
pop             600     IN      A       202.134.130.133
gw1             600     IN      A       202.134.130.129
$TTL     18000
TTL (Time to Live) 。通知其他 DNS Server 不要 Cache (暫存) 記錄這個 Zone record 的資料超過 5小時 (18000秒)。
@ IN SOA tophk.net. info.tophk.net. (
對應的 Zone 名 tophk.net.
Zone File 負責人為 info.tophk.net.。 ( 即 info@tophk.net )
2005030104     ; Serial
Zone file 版本號,每次改變內容後需要把版本號數值加大3。Slave DNS Server 會根據這個 Master DNS Server 的 Zone file 版本號來決定是否需要更新 Slave DNS Server 的資料 ( 即 Zone Transfer )。
36000     ; Refresh 10 hour
通知 Slave DNS Server 每格10小時 (36000秒),檢查這個 Zone file 版本號是否有更改 。
1800      ; Retry: 30 minutes
通知 Slaver DNS Server ,如果無法進行檢查這個 Master Zone file 版本號,要每格15分鐘 (900秒) 再試一次。
3456000     ; Expire 40 days
通知 Slaver DNS Server ,如果在40日內 (3456000秒) 也無法進行檢查這個 Master Zone file 版本號,Slave DNS Server 就會自動刪除這個 Zone Copy。
36000  )      ; Minimum 10 hour
通知其它的 DNS server cache 這筆Zone File 內容時, 最長不應該超過這個10個小時 (36000秒)。
IN NS      ns1.tophk.net.
tophk.net 的第一台 DNS Server 名稱為 ns1.tophk.net。
IN NS      ns2.formulahk.com.
tophk.net 的第二台 DNS Server 名稱為 ns1.formulahk.com。
IN A      202.134.130.131
tophk.net 的 IP Address 為 202.134.130.131
IN MX      10 mail.tophk.net.
tophk.net 的Mail Exchange Server 為 mail.tophk.net , 對應 mail.tophk.net 的 IP Address 為 202.134.105.132
ns1      600       IN A      202.134.130.130
ns1.tophk.net 的 IP Address 為 202.134.130.130
www      600      IN CNAME      tophk.net.
www.tophk.net 的對應名稱為 tophk.net,即 IP Address 為 202.134.130.131
ftp      600       IN CNAME      tophk.net.
ftp.tophk.net 的對應名稱為 tophk.net,即 IP Address 為 202.134.130.131
mail      600      IN A       202.134.130.132
mail.tophk.net 的 IP Address 為 202.134.130.132
smtp       600      IN CNAME      mail.tophk.net.
smtp.tophk.net 的對應名稱為 mail.tophk.net,即 IP Address 為 202.134.130.132
pop      600      IN A      202.134.130.133
pop.tophk.net 的 IP Address 為 202.134.130.133
gw1      600      IN A      202.134.130.129
gw1.tophk.net 的 IP Address 為 202.134.130.129

3. 設定完成後,可以嘗試啟動 Bind 9 DNS Server
# svcadm disable dns/server
# svcadm enable dns/server

什麼是 Chroot Jail (保安監牢)?
Chroot Jail ,就好像為系統建立一個監牢,把你需要執行的程式放在監牢中運行。
而這個監牢什麼也沒有,監牢裡面有的系統程式,只緊緊足夠你所需要運行的程式使用。
一但因為你的程式出現了系統漏洞,而使到Hacker可以透過你的程式進入系統,那個時候,你都可以不用太擔心Hacker們能在你的系統中做到什麼。
因為,Chroot Jail 架構裡有的程式很少,連 shell、ls 和 一些基本Unix 應該有的指令和程式也沒有。Hacker們,那裡還能夠修改你的系統和上載軟件。
就算你他們能夠作出很大的破壞,他們能所破壞的也只不過是 Chroot Jail 監牢中的假系統,他們不可以穿過 Chroot Jail 監牢進入真正的系統。
而且,一般執行Chroot Jail 監牢中的程式時,大部份都不會使用 root 的權限來運作,盡量使用一些沒意義的使用者權限來運作 Chroot Jail 監牢中的程式。
所以,Hacker 們 hack 進來後,獲得的權限簡直是低到不能再低。 就是建立了這種什麼資源都不足的環境,保安方面便提高了很多。
圖片中的例子,說明了 Chroot Jail 中的環境狀態

一個簡單的例子,在 Chroot Jail 中執行 Shell 環境
舉例說明如何建立一個 Chroot Jail 監牢和在Chroot Jail中的情況。
  • 為 Jail 監牢建立目錄
    # mkdir -p /chroot/shell
  • 建立一個空殼目錄架構
    # cd /chroot/shell
    # mkdir -p usr/bin usr/lib usr/lib lib etc tmp dev bin
  • 複制 /bin/sh 到 jail 監牢
    # cp /bin/sh /chroot/shell/bin/sh
  • 複制 /bin/sh 所需的 libraries
    # cp /usr/lib/ld.so.1 /chroot/shell/usr/lib
    # cp /usr/lib/libc.so.1 /chroot/shell/usr/lib
    # cp /usr/lib/libdl.so.1 /chroot/shell/usr/lib
    # cp /lib/ld.so.1 /chroot/shell/lib/ld.so.1
  • 再檢查 /chroot/bin/sh ,還需要使用什麼 libraries。然後,把需要的 libraries 複制到 Jail 監牢裡
    # ldd /chroot/shell/bin/sh
            libgen.so.1 =>   /usr/lib/libgen.so.1
            libsecdb.so.1 =>         /usr/lib/libsecdb.so.1
            libc.so.1 =>     /usr/lib/libc.so.1
            libnsl.so.1 =>   /usr/lib/libnsl.so.1
            libcmd.so.1 =>   /usr/lib/libcmd.so.1
            libmp.so.2 =>    /usr/lib/libmp.so.2
            libmd5.so.1 =>   /usr/lib/libmd5.so.1
            libscf.so.1 =>   /usr/lib/libscf.so.1
            libdoor.so.1 =>  /usr/lib/libdoor.so.1
            libuutil.so.1 =>         /usr/lib/libuutil.so.1
            libm.so.2 =>     /usr/lib/libm.so.2
            在這裡我只複制 libgen.so.1,因為,能用就算,而且,其它的 libraries 就算沒複制也能運作。當然,這也要按照你的個人要求來決定。
    # cp /usr/lib/libgen.so.1 /chroot/shell/usr/lib
  • 只需要:以下指令就可以開始測試 Jail 監牢
    # chroot /chroot/shell /bin/sh
    在測試中,你輸入 pwd 都還可以看到你進入了那個目錄。但 ls 功能就不能用了。因為 Jail 監牢環境中沒有 ls 這個程式。
    離開 shell 系統
    # exit
    複制 ls 到 Jail 監牢中
    # cp /bin/ls /chroot/shell/bin/ls
    # cp /bin/ls /chroot/shell/usr/bin/ls
    再進入 Shell 的 Jail 監牢裡,應該你可以看到以下目錄
    # chroot /chroot /bin/sh
    # ls
    bin  dev  etc  lib  tmp  usr
    # ls -l bin
    total 188
    -r-xr-xr-x   1 0     1    15400 Oct  4 08:42 ls
    -r-xr-xr-x   1 0     1    79380 Oct  4 08:18 sh
    # ls -l dev
    total 0
    crw-r--r--   1 0     1   13,  2 Oct  4 08:30 null
    crw-r--r--   1 0     1   13, 12 Oct  4 08:26 zero
    # ls -l usr/lib
    total 2408
    -rwxr-xr-x   1 2     2   198836 Oct  4 08:29 ld.so.1
    -rwxr-xr-x   1 2     2   959436 Oct  4 08:29 libc.so.1
    -rwxr-xr-x   1 2     2     4484 Oct  4 08:29 libdl.so.1
    -rwxr-xr-x   1 0     1    38944 Oct  4 08:31 libgen.so.1
    # pwd
    /
    #
    由這個測試把 Shell 放到 Jail 監牢中,你可以見到 Chroot Jail 怎樣運作
    為 Bind 9 DNS Server 建立一個安全的 Chroot Jail 環境
    為 DNS Server 建立 Jail 監牢目錄
  • 建立 /chroot/dns 目錄
    # mkdir /chroot/dns
  • 建立一個空殼目錄架構
    # cd /chroot/dns
    # mkdir -p etc/named var/run
  • 複制 /etc/named.conf 到 Jail 監牢中
    # 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 建立一個新 service
    原本的 DNS Server Service 名稱為 dns/server。
    建立新service 後,以後要啟動舊版本的 DNS service 時,不能只啟動 dns/server,而要改為 dns/server:default。
    新 DNS Server Chroot service 名稱為, dns/server:chroot
    開始建立新 Service
    # cd /var/svc/manifest/network/dns
    # cp server.xml server-chroot.xml
    編輯 server-chroot.xml
    ------------------------
    尋找
    改為
    ------------------------
    尋找
    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 service
    # 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 現在已經能夠在 Chroot Jail 環境中運行

    升級 Solaris 10 內的 Bind 9 DNS Server 到 Version 9.3.2
    到 ISC BIND 下載
    BIND 9.3.2
    (
    http://ftp.isc.org/isc/bind9/9.3.2/bind-9.3.2.tar.gz
    )
    # 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
    # mv named named.orig
    # mv named-checkconf named-checkconf.orig
    # mv named-checkzone named-checkzone.orig
    # cp /usr/local/sbin/named .
    # cp /usr/local/sbin/named-checkconf .
    # cp /usr/local/sbin/named-checkzone .
    檢查新安裝的 BIND 9 DNS Server 版本
    # /usr/sbin/named -v
    BIND 9.3.2
    從新啟動 Chroot Jail 了的 DNS Service
    # svcadm disable dns/server:chroot
    # 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
    #
    # ps -elf | grep named
    noaccess   133   1   0 20:31:29 ?        0:00 /usr/sbin/named -t /chroot/dns
    #
    新的 Bind 9 DNS Server Version 9.3.2 現在已經安裝好了。


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/85517/showart_1415100.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP