中國移動DNS服務器安全配置手冊.doc
下載文檔
上傳人:職z****i
編號:1332145
2025-03-04
30頁
368KB
1、密 級:文檔編號:項目代號:中國移動企業信息化系統DNS服務器安全配置手冊Version *1.*0中國移動通信有限公司二零零四年十一月擬 制:審 核:批 準:會 簽:標準化:版本控制版本號日期參與人員更新說明分發控制編號讀者文檔權限與文檔的主要關系1創建、修改、讀取負責編制、修改、審核2批準負責本文檔的批準程序3標準化審核作為本項目的標準化負責人,負責對本文檔進行標準化審核4讀取5讀取1 常見的DNS攻擊61.1 區域傳輸61.2 版本發現61.3 DoS攻擊61.4 緩存破壞(cache poisoning)71.5 緩沖區溢出71.6 其他攻擊技術72 現有的DNS攻擊防范措施82.1 2、限制區域傳輸82.2 限制版本欺騙82.3 減輕DoS所造成的損失82.4 防御緩存破壞82.5 防御緩沖區溢出92.6 應用Bogon過濾92.7 Split DNS92.8 用路由器和防火墻做DNS的安全防護93 BIND安全配置103.1 配置環境:103.2 啟動安全選項103.3 配置文件中的安全選項103.3.1 安全日志文件113.3.2 隱藏版本信息113.3.3 禁止DNS域名遞歸查詢11 增加出站查詢請求的ID值的隨機性123.3.5 限制對DNS服務器進行域名查詢的主機12 限制對DNS服務器進行域名遞歸查詢的主機12 指定允許哪些主機向本DNS服務器提交動態DNS更新13、23.3.8 限制對DNS服務器進行區域記錄傳輸的主機133.3.9 指定不接受哪些服務器的區域記錄傳輸請求133.3.10 一些資源限制選項133.3.11 定義ACL地址名14控制管理接口143.4 通過TSIG對區域記錄傳輸進行認證和校驗153.4.1 用TSIG簽名來進行安全的DNS數據庫手工更新15 對區域記錄傳輸(自動或手工)進行TSIG簽名163.5 實現BIND的chroot173.5.1 chroot虛擬根環境173.5.2 操作方法184 Windows 2000 DNS安全配置(MSDNS)214.1 開啟日志功能224.2 定期更新根服務器信息234.3 禁止區域文件動4、態更新244.4 禁止區域傳輸254.5 其它設置265 安全檢查列表271 常見的DNS攻擊目前DNS受到的網絡攻擊大致有這么幾種:區域傳輸、版本發現、DoS、高速緩存破壞、緩沖區溢出等。1.1 區域傳輸進行區域傳輸攻擊DNS的方法是執行無限制的區域傳輸或捏造許可證,造成的后果是主管的域名信息泄露。區域傳輸一般用于主DNS服務器和輔DNS服務器之間的數據同步,DNS服務器可以從主服務器獲取最新區數據文件的副本,也就可以獲得整個授權區域內的所有主機信息。一旦這些信息泄漏,攻擊者就可以根據它輕松地推測主服務器的網絡結構,并從這些信息中判斷其功能或發現那些防范措施較弱的機器。1.2 版本發現發現軟5、件版本有助于攻擊者探測服務器。利用版本發現攻擊DNS的方法是查詢版本文件,造成的后果是軟件版本泄密。軟件版本信息很少被用到,應該被改變或清空。BIND(Berkeley Internet Name Domain)DNS 守護進程會響應許多dig版本查詢,允許遠程攻擊者識別它的版本。1.3 DoS攻擊Dos是Denial of Service的縮寫,意為拒絕服務。DoS攻擊是網絡上一種簡單但很有效的破壞性攻擊手段,其中SYN Flood攻擊是最為常見的DoS攻擊方式。SYN Flood攻擊就是攻擊者利用偽造的IP地址,連續向被攻擊的服務器發送大量的SYN包。被攻擊的服務器收到這些SYN包后,連續6、向那些虛假的客戶機(偽造的IP地址指向的客戶機)發送ACK確認包。很顯然,服務器是不會收到ACK確認包的,于是服務器就只能等待了。當服務器因超時而丟棄這個包后,攻擊者虛假的SYN包又源源不斷地補充過來。在這個過程中,由于服務器不停頓地處理攻擊者的SYN包,從而正常用戶發送的SYN包會被丟棄,得不到處理,從而造成了服務器的拒絕服務。1.4 緩存破壞(cache poisoning)這是DNS面臨的一種很普遍的攻擊它利用了DNS的緩存機制使某個名字服務器在緩存中存入錯誤的數據。當某名字服務器A收到遞歸查詢請求,而A的數據庫內沒有相應的資源記錄,那么它就會轉發給名字服務器B,B做出應答,把回答放在報7、文的回答區中,同時又會在附加區中填充一些和查詢不太相關的數據,A接收這條應答報文,而且對附加區中的數據不做任何檢查,直接放在緩存中。這樣使得攻擊者可以通過在B中存放一些錯誤的數據,讓A把這些錯誤的數據存放在緩存中。在這些數據的生存期TTL內,A又可能會把它們發送給別的服務器,導致更多的服務器緩存中毒。雖然縮短緩存數據的TTL能減小受害面,但這種方法會給服務器的性能帶來負面影響。1.5 緩沖區溢出和任何其他應用程序一樣,DNS也容易出現內存溢出。授權DNS服務器可以和Internet的任何系統交互,所以DNS已經成為緩沖區溢出漏洞最普遍的受害者。1.6 其他攻擊技術如果攻擊者可以嗅探網絡流量,后8、果將是不可預料的。欺騙區域傳輸、欺騙查詢應答和中間人攻擊都很容易進行。網絡泄密是較高風險的漏洞。對于一次惡意攻擊來說,攻擊一臺DNS就像逆向工作。通過中間人進行的DNS查詢欺騙完全可以被攻擊者控制。查詢流量通常是由UDP完成的,并且只交換公開信息。2 現有的DNS攻擊防范措施DNS服務器最常見的安全措施就是限制誰能訪問它:服務器只需要和有限的終端客戶端通信。限制訪問可以阻止未授權用戶使用服務器,從而有可能阻止查看漏洞級別的行為。為了盡量減少暴露的漏洞,除了打開有數據進出的授權服務器的UDP端口53外,所有的端口都應該禁止Internet訪問。在一些特殊情況下,TCP端口53也需要打開,但應該盡9、可能將其關閉。2.1 限制區域傳輸可以禁用區域傳輸,而使用rsync軟件(http:/rsync.samba.org)進行安全的文件同步。在DNS守護進程外部,通過加密通道進行區域文件同步,可以很好地分離守護進程操作和數據同步操作。如果區域傳輸被禁止,攻擊者將接收到傳輸失敗的消息。2.2 限制版本欺騙通過相應的設置限制版本欺騙。2.3 減輕DoS所造成的損失許多操作系統特性可以遏制SYN包攻擊,并且許多類似的網絡設備可以驗證包和丟掉欺騙包。防御DoS攻擊的最好方法是采用事故反應計劃和IDS傳感器數據。2.4 防御緩存破壞緩存破壞很容易防御。所有DNS守護進程都可以選擇關閉緩存。如果緩存不能用,10、對服務器所做出的虛假回應就沒有意義。大多數最新的守護進程已經有了針對緩存破壞的補丁。2.5 防御緩沖區溢出許多工具可以防止未授權溢出。防緩沖區溢出的編輯器如stackguard(http:/www.immunix.org/products.html#stackguard)應該和最新的DNS守護進程相結合。但是,雖然在chroot環境中運行守護進程和限制訪問可以限制暴露點,真正阻止緩沖區溢出需要一個從底層開始就安全的平臺。一個安全的操作系統和守護進程是減少緩沖區溢出的最好的工具。2.6 應用Bogon過濾攔截無效和無用的Internet IP地址,可以減少DoS攻擊時的網絡負擔,有助于通知網管關11、注網絡問題。在網絡邊界,防火墻和應用程序訪問控制列表內部,應用Rob Thomas的Bogon List,可以可靠地清除不需要的網絡流量,并防止濫用網絡。Bogon List見: 。2.7 Split DNS 采用Split DNS技術把DNS系統劃分為內部和外部兩部分,外部DNS系統位于公共服務區,負責正常對外解析工作:內部DNS系統則專門負責解析內部網絡的主機。當內部要查詢Internet上的域名時。就把查詢任務轉發到外部DNS服務器上,然后由外部DNS服務器完成查詢任務。把DNS系統分成內外兩個部分的好處在于Internet上其它用戶只能看到外部DNS系統中的服務器,而看不見內部的服務器12、。而且只有內外DNS服務器之間才交換DNS查詢信息,從而保證了系統的安全性。采用這種技術可以有效地防止信息泄漏。2.8 用路由器和防火墻做DNS的安全防護采用一些網絡及安全設備能更有效的保護DNS的安全。如果在沒有防火墻的情況下,可以直接在路由器上設置ACL訪問控制列表,只允許對DNS的TCP和UDP的53端口進行訪問,其余訪問一律丟棄;如果采用防火墻來保護則能起到更好效果,同樣的對DNS的訪問除了TCP和UDP的53端口開放之外,拒絕其他的所有訪問。同時,當前主流的防火墻如CheckPoint和Netcreen等都有防DNS欺騙的功能,即使其他非DNS的訪問或攻擊行為通過封裝成53端口偽造成13、正常的DNS請求,防火墻也可以對這些虛假請求進行檢查,只要是不符合DNS服務的標準,則一律過濾,保證攻擊行為無法通過53端口來穿透防火墻。3 安全配置DNS守護進程3.1 加固操作系統安裝任何守護進程之前,安全可靠的操作系統應該是一個先決條件。在UNIX/LINUX系統上,chroot是一種減小系統暴露程度來降低由后臺進程引起的安全問題的有效方法。chroot是一個相當簡單的概念,運行在chroot封閉環境中的應用程序,不能和封閉環境外的文件系統的任何部分進行交互。在這樣的環境中運行BIND,能夠增加DNS系統的安全性。對于Windows系統來說,應該及時安裝Windows系統關鍵安全更新補丁14、,防止利用Windows操作系統漏洞而造成的攻擊。3.2 BIND安全配置3.1 、配置環境: FreeBSD 4.1-RELEASE;。3.2、 啟動安全選項named進程啟動選項:-r:關閉域名服務器的遞歸查詢功能(缺省為打開)。該選項可在配置文件的options中使用recursion選項覆蓋。-u 和-g :定義域名服務器運行時所使用的UID和GID。這用于丟棄啟動時所需要的root特權。-t :指定當服務器進程處理完命令行參數后所要chroot()的目錄。3.3 、配置文件中的安全選項Solais、FreeBSD、Linux等系統,Bind的配置文件為:/etc/named.conf15、3.3.1、 安全日志文件操作方法:假如希望記錄安全事件到文件中,但同時還希望保持原有的日志模式,可以添加以下內容: logging channel my_security_channel file my_security_file.log versions 3 size 20m; severity info; ; category security my_security_channel; default_syslog; default_debug; ; 其中my_security_channel是用戶自定義的channel名字,my_security_file.log是安全事件日志文件,可16、包含全路徑(否則是以named進程工作目錄為當前目錄)。 安全事件日志文件名為my_security_file.log,保存三個最近的備份 (my_security_file.log0、my_security_file.log1、my_security_file.log2), 日志文件的最大容量為20MB,(如果達到或超這一數值,直到該文件被再次打開前,將不再記錄任何日志消息。缺省(省略)時是沒有大小限制的。) 操作結果:日志記錄完整,所有異常問題都會在日志文件記錄。3.3.2、 隱藏版本信息操作方法:在options節中增加自定義的BIND版本信息,可隱藏BIND服務器的真正版本號。 ver17、sion Who knows?; / version 9.9.9; 操作結果:此時如果通過DNS服務查詢BIND版本號時,返回的信息就是Who knows?,隱藏了真實的版本號。3.3.3、 禁止DNS域名遞歸查詢操作方法要禁止DNS域名遞歸查詢,在options(或特定的zone區域)節中增加: recursion no; fetch-glue no;操作結果防止了DNS域名的遞歸查詢。 3.3.4、 增加出站查詢請求的ID值的隨機性操作方法在options節中增加: use-id-pool yes; 則服務器將跟蹤其出站查詢ID值以避免出現重復,并增加隨機性。注意這將會 使服務器多占用超過18、128KB內存。(缺省值為no操作結果服務器將跟蹤其出站查詢ID值以避免出現重復,并增加隨機性。注意這將會 使服務器多占用超過128KB內存,缺省值為no。) 3.3.5、 限制對DNS服務器進行域名查詢的主機操作方法在options(或特定的zone區域)節中增加: allow-query ; address_match_list是允許進行域名查詢的主機IP列表,如1.2.3.4; 5.6.7/24;。操作結果限制對DNS服務器進行域名查詢的主機。 3.3.6、 限制對DNS服務器進行域名遞歸查詢的主機操作方法在options(或特定的zone區域)節中增加: allow-recursion19、 ; address_match_list是允許進行域名遞歸查詢的主機IP列表,如 1.2.3.4; 5.6.7/24;。 操作結果限制了對DNS進行域名遞歸查詢的主機。 3.3.7、 指定允許哪些主機向本DNS服務器提交動態DNS更新操作方法:在options(或特定的zone區域)節中增加: allow-update ; address_match_list是允許向本DNS服務器提交動態DNS更新的主機IP列表,如 1.2.3.4; 5.6.7/24;。 缺省時為拒絕所有主機的提交。操作結果 缺省時為拒絕所有主機的提交,完成操作后只有指定的主機可以提交動態DNS更新。 3.3.8、 限制對20、DNS服務器進行區域記錄傳輸的主機操作方法在options(或特定的zone區域)節中增加:allow-transfer ; address_match_list是允許進行區域記錄傳輸的主機IP列表,如1.2.3.4; 5.6.7/24;。操作結果只有特定的主機可以進行區域傳輸,降低了受區域傳輸攻擊的風險。 3.3.9、 指定不接受哪些服務器的區域記錄傳輸請求操作方法在options(或特定的zone區域)節中增加: blackhole ; address_match_list是不接受區域記錄傳輸請求的主機IP列表,如1.2.3.4; 5.6.7/24;。 操作結果不允許特定的主機 進行區域傳21、輸,降低了受區域傳輸攻擊的風險。3.3.10、 一些資源限制選項l 操作方法不同用戶可根據實際情況靈活設置,但一定要注意不當的設置會損失DNS服務的性能。 coresize ; / core dump的最大值。缺省為default。 datasize ; / 服務器所使用的最大數據段內存。缺省為 default。 files ; / 服務器能同時打開的最大文件數。缺省為 / unlimited(不限制)。 / (注意,并非所有操作系統都支持這一選項。) max-ixfr-log-size ; / (目前版本暫不使用。)限制增量區域記錄傳輸時會話日志的大小。 stacksize ; / 服務器所22、使用的最大堆棧段內存。缺省為 default。 操作結果 不同用戶可根據實際情況靈活設置,但一定要注意不當的設置會損失DNS服務的性能。3.3.11、 定義ACL地址名操作方法即用于上面的。注意,如果要使用這里定義的列表名,必須先定義,后使用! 例如: acl intranet 192.168/16; ; acl partner !172.16.0.1; 172.16/12; / 除外網絡中其它主機 ; BIND已內置以下四個ACL: all / 允許所有主機 none / 禁止所有主機 localhost / 本機的所有網絡接口 localnets / 本機所在網絡 操作結果此操作不會對系統23、產生不良影響。3.3.12、控制管理接口BIND域名服務器的一個有用功能 操作方法 控制管理接口controls節語法格式: controls inet ip_addr port ip_port allow ; ; unix path_name perm number owner number group number; ; controls節提供管理接口。如果使用第一種(inet),則在指定IP(接口)和端口上監聽,但只允許在allow中限定允許與其連接的IP地址列表。如果使用第二種(unix),則產生一個FIFO的控制管道,權限、屬主和用戶組都由其參數限定。 操作結果上述操作建議在正確配置24、時不會對系統造成不良影響,但建議謹慎使用。3.4、 通過TSIG對區域記錄傳輸進行認證和校驗 對區域傳輸進行認證和校驗可以降低DNS服務器遭受區域傳輸攻擊的風險。 首先確保BIND域名服務器軟件已更新到最新版本。 在BIND 8.2+中,能夠使用事務簽名(Transaction Signatures,即TSIG!) 來對區域記錄數據進行驗證和校驗。它要求在主域名服務器和輔助域名服務器上配置好加密密鑰,并通知服務器使用該密鑰與其它域名服務器通訊。(注意,TSIG的使用要求域名服務器必須進行時鐘同步。) 3.4.1、 用TSIG簽名來進行安全的DNS數據庫手工更新如果需要用TSIG簽名來進行安全的25、DNS數據庫手工更新,具體操作步驟很簡單:3.4.1.1、 使用BIND自帶的dnskeygen工具生成TSIG密鑰。 # dnskeygen -H 128 -h -n tsig-key.則會生成兩個文件。Ktsig-key.+157+00000.key內容如下:tsig-key. IN KEY 513 3 157 awwLOtRfpGE+rRKF2+DEiw= ;Kvip-key.+157+00000.private內容如下:Private-key-format: v1.2 Algorithm: 157 (HMAC) Key: awwLOtRfpGE+rRKF2+DEiw= 。注意這些密鑰都26、已經過BASE64編碼了。3.4.1.2 主域名服務器配置文件的相關內容將它們放到本地域名服務器的配置文件中。例如:key tsig-key. algorithm hmac-md5; secret awwLOtRfpGE+rRKF2+DEiw=; ; zone . . allow-update key tsig-key. ; ; 重啟named守護進程。 然后將這兩個密鑰文件復制到客戶端系統(或輔助域名服務器),例如為/var /named/tsig目錄。最后運行如下命令即可: nsupdate -k /var/named/tsig:tsig-key. 3.4.2、 對區域記錄傳輸(自動或手工27、)進行TSIG簽名如果需要對區域記錄傳輸(自動或手工)進行TSIG簽名,則:3.4.2.1、 用dnskeygen生成TSIG密鑰方法同4.1.1。 3.4.2.2、 主域名服務器配置文件的相關內容 / 定義認證的方法和共享密鑰 key master-slave algorithm hmac-md5; secret mZiMNOUYQPMNwsDzrX2ENw=; ; / 定義輔助域名服務器的一些特性 server 192.168.8.18 transfer-format many-answers; keys master-slave; ; ; / 區域記錄定義 zone type maste28、r; file ; allow-transfer 192.168.8.18; ; ; 3.4.2.3、 輔助域名服務器配置文件的內容(節選) / 定義認證的方法和共享密鑰 key master-slave algorithm hmac-md5; secret mZiMNOUYQPMNwsDzrX2ENw=; ; / 定義與主域名服務器通訊時的一些特性 server 192.168.8.19 transfer-format many-answers; keys master-slave; ; ; / 區域記錄定義 zone type slave; file ; masters 192.168.829、.19; ; allow-transfer none; ; ; 3.5、 實現BIND的chroot3.5.1 chroot虛擬根環境CHROOT虛擬根環境CHROOT就是Change Root,即虛擬根環境,也就是改變程序執行時所參考的根目錄位置。 chroot基本上重定義了一個程序的運行環境。更確切地說,它重定義了一個程序(或登錄會話)的“ROOT”目錄或“/”。 也就是說,對于chroot了的程序或shell來說,chroot環境之外的目錄是不存在的。一般的目錄結構是: 一般的目錄結構/ /bin /sbin /usr/bin /home CHROOT的目錄結構: Chroot的目錄結構30、/bind/ /bind/bin /bind/usr/bin /bind/home CHROOT的優點限制使用者所能執行的程序,如setuid程序。 防止使用者存取某些特定文件,如/etc/passwd。 防止入侵者運行/bin/rm -rf /。 提供Guest服務以及處罰破壞者。 增強系統的安全3.5.2 操作方法以FreeBSD系統平臺為例:步驟一:BIND-8的最新源代碼版本獲取和安裝 請到ISC FTP站點下載BIND的最新版本。 BIND 8: BIND 9:步驟二:構造靜態(static)的named和named-xfer二進制文件 在編譯和安裝后,你需要構造可執行文件的靜態鏈接31、版本。只要對%BIND%/src/port/freebsd目錄下的Makefile.set文件稍加修改后即可。 修改文件內容: CDEBUG= -O2 -g 替換為: CDEBUG= -O2 -static 切換到BIND的源代碼路徑,執行make clean和make命令。在下面的步驟中 將會把這些文件復制到chroot()目錄下。 # cd /tmp/bind/src # make clean ; make 本步驟構造的靜態鏈接執行文件在運行時無需裝載動態鏈接庫。在chroot()環 境中,這種“獨立”可執行文件可避免出現缺少鏈接庫文件問題。它在chroot()環 境中無需任何靜態鏈接庫,32、可使服務配置簡單化。其它所有的網絡守護進程也可以 編譯和使用這種靜態鏈接版本。 步驟三:構造BIND目錄 為chroot()環境構造BIND目錄。這個目錄將在chroot()環境中被BIND當作系統根目錄。在這里我使用/chroot/bind作為chroot后的根目錄。 # cd /chroot/bind # mkdir /chroot # mkdir /chroot/dev # mkdir /chroot/etc # mkdir /chroot/etc/namedb # mkdir /chroot/usr # mkdir /chroot/usr/sbin # mkdir /chroot/va33、r # mkdir /chroot/var/run 需要復制以下文件到其下的相應子目錄中,和進行一些必要的處理: # cp /etc/namedb/named.conf /chroot/bind/etc/ # cp /etc/localtime /chroot/bind/etc/ # grep bind /etc/group /chroot/bind/etc/group # cp -R /etc/namedb/ /chroot/bind/etc/namedb/ # mknod /chroot/bind/dev/null c 2 2 # chmod 666 /chroot/bin/dev/nul34、l # cp /tmp/bind/src/bin/named/named /chroot/bind/usr/sbin/ # cp /tmp/bind/src/bin/named-xfer/named-xfer /chroot/bind/ 另外還可根據需要指定日志記錄目錄(如/var/log),請參考下面的章節或 named.conf的手冊頁。 步驟四:添加bind用戶和組(如果沒有的話。如果已經有bind或named之類的用戶和組,請跳過本步驟。) 在/etc/passwd和/etc/group文件中添加bind用戶和組。它們是DNS服務器運行時的UID/GID。 此時,可以到chroot環境35、中執行chown -R bind.bind /chroot/bind/etc/ namedb命令。這樣當向系統發送中斷信號(kill -INT 時,named進程能夠保存 服務器緩存和統計信息。如果該目錄為root所有則named進程無法將輸出寫到目錄中,但不會影響named服務器功能。另一個選擇是僅改變目錄權限(使named用戶具有寫權限),而屬主仍然是root。這種方法也是可行的,但必須小心設置,確保其它用戶不會修改named記錄。* 重要警告* 不要用一個已存在的UID/GID(如nobody)運行named。記住,以chroot環境中使用任何已存在的UID/GID都可能會影響到服務的安36、全性。必須養成在chroot環境中為每一個守護進程提供獨立的UID/GID的習慣。 步驟五:其它必要調整 如果在named.conf中還指定了另外的目錄和文件,也要相應地在chroot()環境中(在本例中即/chroot/bind/目錄)進行設置。 步驟六:調試 1、終止系統中原有的syslogd和named守護進程。 # killall syslogd named 2、用適當的參數重新啟動syslogd守護進程。 # syslogd -s -p /chroot/bind/var/run/log 3、用適當參數重新啟動named守護進程。 # /chroot/bind/named -u bin37、d -g bind -t /chroot/bind 4、檢查syslogd/named守護進程、監聽端口是否正常,和/var/log/messages文件中named進程啟動時是否正常。 # ps auwx|grep syslogd root 5896 0.0 1.7 896 508 ? Ss 9:44PM 0:00.10 syslogd -s -p /chroot/bind/var/run/log # ps auwx|grep named bind 5941 0.0 4.9 1652 1444 ? Is 9:52PM 0:00.01 /chroot/bind/usr/sbin/named -38、u bind -g bind -t /chroot/bind # netstat -an|grep 53 tcp4 0 0 127.0.0.1.53 *.* LISTEN tcp4 0 0 192.168.8.19.53 *.* LISTEN udp4 0 0 127.0.0.1.53 *.* udp4 0 0 192.168.8.19.53 *.* 步驟七:修改系統啟動腳本 對于FreeBSD系統,在/etc/rc.conf文件中增加如下內容即可: syslogd_enable=YES # 如果希望禁止向外發送日志,將-s換成-ss。 syslogd_flags=-s -p /chroot/39、bind/var/run/log named_enable=YES named_program=/chroot/bind/usr/sbin/named named_flags=-u bind -g bind -t /chroot/bind 注:如果在其它系統平臺,如OpenBSD、Linux、Solaris,則可能會稍有不同。 主要是不同平臺上的syslog實現不盡相同。例如對于OpenBSD和Linux系統,打開日 志別名socket的命令是syslogd -a /chroot/bind/var/run/log,而Solaris的 syslogd守護進程則不支持別名。因此Solaris系統平40、臺上的chroot需要通過另外的方法實現。4 Windows 2000MS DNS安全配置(MSDNS)MSDNS可以根據幾種特殊的需求實施。依據物理網絡位置和想要的管理方法,有4種常見的實施方式(注意不推薦在企業外部環境實施MSDNS,尤其是在有活動目錄時):應用文本區域文件的內部解析和活動目錄集成的內部解析和活動目錄集成的外部解析應用文本區域文件的外部解析。根據基礎體系的需要,直接安裝所需的服務。安裝文本區域文件,要在最初的DNS服務器向導中選擇“標準主要區域”。如圖4-1。圖4-1 Windows 2000 DNS 服務器安裝安裝基于文本文件的DNS服務,修改幾個選項,包括日志、根服務器41、和區域傳輸,可以增強系統,防止大多數的惡意篡改。4.1 開啟日志功能因為每個網絡的基礎體系結構都不同,如何選擇合適的日志水平取決于系統管理員,如圖4-2。對不常見的DNS行為進行記錄,例如Write Through, Notify, TCP或Full Packets,會使日志審計的執行時間間隔更加符合實際。而常見的DNS行為,例如UDP,Update和Query,應該只在調試DNS服務器時,或者在服務器的流量非常少時才予以記錄。圖4-2 DNS日志4.2 定期更新根服務器信息根服務器經常會發生變化,例如,b.root-的基本IP地址在2004年1月變為:。DNS系統管理員應該跟蹤最新的變化( 42、),盡快更新根服務器的IP。如圖4-3。圖4-3 更新根服務器信息4.3 禁止區域文件動態更新完成了最初的服務配置后,應該單獨查看每個區域文件。每個區域的優先級應該重新考慮,并進行相應的修改。區域文件可以動態更新。這個選項默認是禁用的,通常不應該被更改。如圖4-4。圖4-4 禁用區域文件動態更新對于內部DNS解析,常見的部署是集成DHCP服務器和活動目錄。和活動目錄的集成非常穩健。在實施之前,應該全面徹底地檢驗活動目錄的安全性。如果需要運行外部的解析服務器,推薦使用文本區域文件。文本區域文件位于%SystemRoot%DNS。除了SYSTEM組外,DNS文件夾應該配置成拒絕所有訪問。除了修改目43、錄權限,還要隱藏區域文件位置。對HKEY_LOCAL_MACHINESystemCurrentControlSetServicesDNS這個注冊表鍵進行修改,只允許ADMINISTRATOR和SYSTEM組具有完全控制權。4.4 禁止區域傳輸要限制一個域的區域傳輸,右擊域,選擇Properties,然后單擊Zone Transfer標簽,如圖4-5。要禁用某個域的區域傳輸,需要清除Allow zone transfer復選框。圖4-5 禁用區域傳輸4.5 其它設置在Windows 環境下,應該特別重視對一些設置進行校驗。手動驗證區域文本文件。許多區域記錄也許和Windows DNS兼容,但并不44、和其它守護進程兼容。Responsible Person應該包含符號,因為它和其它DNS服務不兼容。如圖4-6。圖4-6 Responsible person區域語法Windows 2000 DNS服務可以通過在控制面板中啟動DNS服務,并配置成在重啟時自動啟動。增加區域記錄可以通過右擊Global DNS圖標,然后選擇Add Domain來完成。5 安全檢查列表根據檢查列表反復對細節進行檢查,可能會發現遺漏的配置。安全檢查DJBDNS安全配置列表的一個實例是RFC2870:Root Name Server Operational Requirements (http:/www.faqs.or45、g/rfcs/rfc2870.html),它是所有根服務器在投入使用前都必須滿足的要求。以下是一張所有守護進程和操作系統的通用列表。建立穩定的硬件環境確保系統運行的目的只有一個;驗證系統有滿足要求的處理器和RAM;討論使用冗余數據存儲的必要性;分配一個應急備份系統;制定數據備份和磁帶輪換時間表;確保穩定的網絡連接和必要的結構冗余。加固操作系統驗證所有最新的操作系統補丁已安裝;刪除或關閉所有不必要的系統服務;只允許必要的用戶訪問系統;記錄訪問系統的用戶;根據項目需求增加日志容量;啟用網絡時間協議(NTP)服務器;實施適當的23層網絡安全計劃;只通過加密的帶外(OOB)管理端口,維護系統通信。安全46、安裝守護進程校驗后臺軟件的MD5校驗和加固應用程序環境;盡可能實行chroot環境;確保守護進程賬戶不能登錄訪問;確保有服務失敗通知程序;驗證所有最新的守護進程補丁已經安裝,并且補丁的MD5校驗和正確;訂閱新聞組/郵件列表,獲得升級程序或漏洞風險的通知。配置DNS守護進程確保已經刪除所有的多余的特性;實施守護進程ACL;限制或關閉區域傳輸;如果需要區域傳輸,確保它們通過加密協議運行;修改守護進程的版本響應;確保記錄中使用的電子郵件聯系信息有效。日志確保可以管理日志的大小;檢驗日志錯誤處理程序;定期監控日志,保留查詢失敗記錄。監控數據維護一個監控數據基線統計;判斷和了解將來的需求;檢查為未來增長分配的預算。