分类:
2008-11-14 17:33:21
舊版本 Solaris | Solaris 10 | |
---|---|---|
啟動 DNS Server |
/etc/init.d/named start |
svcadm enable dns/server 或 svcadm enable dns/server:default |
停止 DNS Server | /etc/init.d/named stop | svcadm disable dns/server 或 svcadm disable dns/server:default |
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 | |
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 |
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/namedpid-file "/var/run/named.pid"DNS Server 運作的 process ID 存放在 /var/run/named.pidcontrols {/* empty */};允許任何人使用這台 DNS Serverzone "." {type hint; file "root.hint";};Root Cache 檔存放在 /etc/named/root.hintroot.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.33zone "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 86400TTL (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 ; SerialZone 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 localhost127.0.0.1 是 localhost。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 18000TTL (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 ; SerialZone 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.131tophk.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.130ns1.tophk.net 的 IP Address 為 202.134.130.130。www 600 IN CNAME 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.132mail.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.133pop.tophk.net 的 IP Address 為 202.134.130.133。gw1 600 IN A 202.134.130.129gw1.tophk.net 的 IP Address 為 202.134.130.129。
# svcadm disable dns/server
# svcadm enable dns/server
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 監牢和在Chroot 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 就算沒複制也能運作。當然,這也要按照你的個人要求來決定。
# 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 /
#
原本的 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 環境中運行
到 ISC BIND 下載 ( )
# cd /usr/local/src
# wget
# 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 現在已經安裝好了。