DNS(Domain Name System,
域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),能夠使用戶更方便的訪問(wèn)互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。通過(guò)主機(jī)名,最終得到該主機(jī)名對(duì)應(yīng)的IP地址的過(guò)程叫做域名解析(或主機(jī)名解析)。DNS協(xié)議運(yùn)行在UDP協(xié)議之上,使用端口號(hào)53。
主機(jī)名到IP地址的映射有兩種方式:
1)靜態(tài)映射,每臺(tái)設(shè)備上都配置主機(jī)到IP地址的映射,各設(shè)備獨(dú)立維護(hù)自己的映射表,而且只供本設(shè)備使用;
2)動(dòng)態(tài)映射,建立一套域名解析系統(tǒng)(DNS),只在專門的DNS服務(wù)器上配置主機(jī)到IP地址的映射,網(wǎng)絡(luò)上需要使用主機(jī)名通信的設(shè)備,首先需要到DNS服務(wù)器查詢主機(jī)所對(duì)應(yīng)的IP地址。
域名結(jié)構(gòu)
通常 Internet 主機(jī)域名的一般結(jié)構(gòu)為:主機(jī)名.三級(jí)域名.
二級(jí)域名.頂級(jí)域名。 Internet 的頂級(jí)域名由 Internet網(wǎng)絡(luò)協(xié)會(huì)
域名注冊(cè)查詢負(fù)責(zé)網(wǎng)絡(luò)地址分配的委員會(huì)進(jìn)行登記和管理,它還為 Internet的每一臺(tái)主機(jī)分配唯一的 IP 地址。全世界現(xiàn)有三個(gè)大的網(wǎng)絡(luò)信息中心:位于美國(guó)的 Inter-NIC,負(fù)責(zé)美國(guó)及其他地區(qū);位于荷蘭的RIPE-NIC,負(fù)責(zé)歐洲地區(qū);位于日本的APNIC,負(fù)責(zé)亞太地區(qū)。
根域:DNS域名中使用時(shí),規(guī)定由尾部句點(diǎn)(.)來(lái)指定名稱位于根或者更高級(jí)別的域?qū)哟谓Y(jié)構(gòu)
頂級(jí)域:用來(lái)指示某個(gè)國(guó)家/地區(qū)或組織使用的名稱的類型名稱,如.com
二級(jí)域名:個(gè)人或組織在Internet上使用的注冊(cè)名稱,如qq.com
子域:已注冊(cè)的二級(jí)域名派生的域名,通俗的講就是網(wǎng)站名,如www.qq.com
主機(jī)名:通常情況下DNS域名最左側(cè)標(biāo)識(shí)網(wǎng)絡(luò)上特定計(jì)算機(jī),如h1.www.qq.com
DNS的解析過(guò)程
第一步,查詢本地host文件和緩存有沒(méi)有這個(gè)記錄,有就直接解析,沒(méi)有就訪問(wèn)DNS服務(wù)器,如果DNS服務(wù)器上沒(méi)這個(gè)域名或者域名不在你訪問(wèn)的DNS服務(wù)器管理區(qū)域內(nèi),那么DNS服務(wù)器就會(huì)向dot根
域名服務(wù)器發(fā)遞歸查詢,如果找到了記錄了,DNS就會(huì)返回給client,并且把記錄保存在自己緩存里,下次有client請(qǐng)求,他就會(huì)調(diào)用自己的緩存,直到這條記錄的生存期結(jié)束,就會(huì)丟棄這條記錄。
根域名服務(wù)器就13臺(tái)域名服務(wù)器,他負(fù)責(zé)管理頂級(jí)域。頂級(jí)域負(fù)責(zé)管理二級(jí)域,我們現(xiàn)在申請(qǐng)的一般是2級(jí)域名-3級(jí)域名。
用 nslookup 這個(gè)工具詳細(xì)來(lái)說(shuō)一下解析步驟:
第一行Server是:DNS服務(wù)器的主機(jī)名--114.114.114.114
第二行Address是: 它的IP地址--114.114.114.114#53
下面的Name是:解析的URL--www.baidu.com
會(huì)發(fā)現(xiàn)百度有一個(gè)cname=www.ashifen.com的別名
用dig工具來(lái)跟蹤一下(linux系統(tǒng)自帶有)
Dig工具會(huì)在本地計(jì)算機(jī)做迭代,然后記錄查詢的過(guò)程。
第一步是向我這臺(tái)機(jī)器的ISPDNS獲取到根域服務(wù)區(qū)的13個(gè)IP和主機(jī)名;
第二步是向其中的一臺(tái)根域服務(wù)器(Servername就是末行小括號(hào)里面的)發(fā)送www.baidu.com的查詢請(qǐng)求,他返回了com.頂級(jí)域的服務(wù)器IP(未顯示)和名稱;
第三步,便向com.域的一臺(tái)服務(wù)器192..5.5.241請(qǐng)求,www.baidu.com,他返回了baidu.com域的服務(wù)器IP(未顯示)和名稱,百度有四臺(tái)頂級(jí)域的服務(wù)器;
第四步呢,向百度的頂級(jí)域服務(wù)器(202.108.22.220)請(qǐng)求www.baidu.com,他發(fā)現(xiàn)這個(gè)www有個(gè)別名,而不是一臺(tái)主機(jī),別名是www.a.shifen.com。
使用dig +trace shifen.com,發(fā)現(xiàn)第三步時(shí)shifen.com這個(gè)頂級(jí)域的域名服務(wù)器和baidu.com這個(gè)域的域名服務(wù)器是同一臺(tái)主機(jī)。當(dāng)拿到www.baidu.com的別名www.a.shifen.com的時(shí)候,我本來(lái)需要重新到com域查找shifen.com域的NS,但是因?yàn)檫@兩個(gè)域在同一臺(tái)NS上,所以直接向本機(jī)發(fā)起了。
BIND是一種開(kāi)源的DNS(Domain Name System)協(xié)議的實(shí)現(xiàn),包含對(duì)域名的查詢和響應(yīng)所需的所有軟件。它是互聯(lián)網(wǎng)上最廣泛使用的一種DNS服務(wù)器,BIND這個(gè)縮寫(xiě)來(lái)自于使用的第一個(gè)域,Berkeley Internet Name Domain
BIND軟件包包括三個(gè)部分:
DNS服務(wù)器:這是一個(gè)叫做named的程序,代表name daemon的簡(jiǎn)寫(xiě)。它根據(jù)DNS協(xié)議標(biāo)準(zhǔn)的規(guī)定,響應(yīng)收到的查詢。
DNS解析庫(kù)(resolver library)。一個(gè)解析器是一個(gè)程序,通過(guò)發(fā)送請(qǐng)求到合適的服務(wù)器并且對(duì)服務(wù)器的響應(yīng)做出合適的回應(yīng),來(lái)解析對(duì)一個(gè)域名的查詢。一個(gè)解析庫(kù)是程序組件的集合,可以在開(kāi)發(fā)其它程序時(shí)使用,為這些程序提供域名解析的功能。
/etc/named.conf
named.conf是BIND使用的默認(rèn)配置文件
在每一次named啟動(dòng)與掛起時(shí)都會(huì)被讀取
一個(gè)簡(jiǎn)單的文本文件,其中記錄的可以包括options(全局參數(shù))、zone(區(qū)域定義)、access control lists(訪問(wèn)控制列表)等
區(qū)域配置(zone )
zone 語(yǔ)句作用是定義DNS 區(qū)域,在此語(yǔ)句中可定義DNS 區(qū)域選項(xiàng)
zone區(qū)域設(shè)置
第一步,設(shè)置根區(qū)域
當(dāng)DNS服務(wù)器處理遞歸查詢時(shí),如果本地區(qū)域文件不能進(jìn)行查詢的解析,就會(huì)轉(zhuǎn)到根DNS服務(wù)器查詢,所以在主配置文件named.conf文件中還要定義根區(qū)域。 指 定正向解析的配置文件
修改DNS服務(wù)器的輔助區(qū)域配置文件/etc/named.rfc1912.zones
用//注銷掉系統(tǒng)默認(rèn)配置的zone信息所有行或者刪除
在文件的尾部增加以下內(nèi)容
配置正向解析zone文件
將范例復(fù)制到正向解析文件,-p可以將源文件的屬性一起復(fù)制
service named restart重新啟動(dòng)DNS服務(wù)
service iptables stop關(guān)閉防火墻
測(cè)試DNS解析
使用nslookup測(cè)試下。
經(jīng)過(guò)簡(jiǎn)單的了解和配置DNS服務(wù),應(yīng)該知道DNS的工作原理了。DNS分為Client和Server,Client扮演發(fā)問(wèn)的角色,也就是問(wèn)Server一個(gè)Domain Name,而Server必須要回答此Domain Name的真正IP地址。而當(dāng)?shù)氐腄NS先會(huì)查自己的資料庫(kù)。如果自己的資料庫(kù)沒(méi)有,則會(huì)往該DNS上所設(shè)的的DNS詢問(wèn),依此得到答案之后,將收到的答案存起來(lái),并回答客戶。
DNS服務(wù)器會(huì)根據(jù)不同的授權(quán)區(qū)(Zone),記錄所屬該網(wǎng)域下的各名稱資料,這個(gè)資料包括網(wǎng)域下的次網(wǎng)域名稱及主機(jī)名稱。在每一個(gè)名稱服務(wù)器中都有一個(gè)快取緩存區(qū)(Cache),這個(gè)快取緩存區(qū)的主要目的是將該名稱服務(wù)器所查詢出來(lái)的名稱及相對(duì)的IP地址記錄在快取緩存區(qū)中,這樣當(dāng)下一次還有另外一個(gè)客戶端到次服務(wù)器上去查詢相同的名稱時(shí),服務(wù)器就不用在到別臺(tái)主機(jī)上去尋找,而直接可以從緩存區(qū)中找到該筆名稱記錄資料,傳回給客戶端,加速客戶端對(duì)名稱查詢的速度。
常見(jiàn)的DNS攻擊包括:
1) 域名劫持
通過(guò)采用黑客手段控制了
域名管理密碼和域名管理郵箱,然后將該域名的NS紀(jì)錄指向到黑客可以控制的DNS服務(wù)器,然后通過(guò)在該DNS服務(wù)器上添加相應(yīng)域名紀(jì)錄,從而使網(wǎng)民訪問(wèn)該域名時(shí),進(jìn)入了黑客所指向的內(nèi)容。
這顯然是DNS服務(wù)提供商的責(zé)任,用戶束手無(wú)策。遇到dns被劫持,讓dns服務(wù)提供者解決這個(gè)問(wèn)題,是比較矛盾的;因?yàn)椋俪终?,最有可能的就是他?另外一種最直接的解決辦法就是換用其他dns。更換dns服務(wù)器的方法非常簡(jiǎn)單,打開(kāi)網(wǎng)絡(luò)連接屬性,選擇Interner 協(xié)議(TCP/IP)的屬性頁(yè)里,不要選擇自動(dòng)獲取DNS,而要選擇“使用下面的DNS服務(wù)器地址”,推薦大家使用OpenDNS提供的DNS服務(wù)器,OpenDNS是一個(gè)提供免費(fèi)DNS服務(wù)的網(wǎng)站,口號(hào)是更安全、更快速、更智能。
2) 緩存投毒
DNS緩存投毒攻擊是指攻擊者欺騙DNS服務(wù)器相信偽造的DNS響應(yīng)的真實(shí)性。這種類型攻擊的目的是將依賴于此DNS服務(wù)器的受害者重定向到其他的地址。隨著惡意軟件傳播的增多,緩存投毒的方法也層出不窮。典型的一種是發(fā)送標(biāo)題吸引人的垃圾郵件并誘導(dǎo)你去打開(kāi)。點(diǎn)擊郵件中的圖片和廣告條幅也會(huì)將用戶指向被投毒的網(wǎng)站。一旦用戶的電腦被惡意代碼感染,他今后所有的URL請(qǐng)求都將被自動(dòng)指向惡意IP地址-哪怕被指向的“受害”服務(wù)器已經(jīng)在其網(wǎng)頁(yè)上清除了惡意代碼。
防止投毒
目前還沒(méi)有更好辦法阻止黑客的這種行為,只有使DNS緩存服務(wù)器發(fā)出的查詢請(qǐng)求使用動(dòng)態(tài)的UDP端口,UDP的端口號(hào)也是16位2進(jìn)制,這樣與DNS的ID號(hào)相結(jié)合,號(hào)碼的命中率就是1/4294967296(2的32次方)。
3)DDOS攻擊
一種攻擊針對(duì)DNS服務(wù)器軟件本身,通常利用BIND軟件程序中的漏洞,導(dǎo)致DNS服務(wù)器崩潰或拒絕服務(wù);另一種攻擊的目標(biāo)不是DNS服務(wù)器,而是利用DNS服務(wù)器作為中間的“攻擊放大器”,去攻擊其它互聯(lián)網(wǎng)上的主機(jī),導(dǎo)致被攻擊主機(jī)拒絕服務(wù)。
為了讓DNS拒絕服務(wù),惡意攻擊者向允許遞歸的開(kāi)放DNS解析器發(fā)送大量偽造的查詢請(qǐng)求。目前互聯(lián)網(wǎng)中存在著上百萬(wàn)開(kāi)放的DNS解析器,包括很多的家庭網(wǎng)關(guān)。開(kāi)放的DNS解析器會(huì)認(rèn)為這些偽造的查詢請(qǐng)求是真實(shí)有效的,并且會(huì)對(duì)這些請(qǐng)求進(jìn)行處理,在處理完成之后,便會(huì)向偽造的請(qǐng)求者(即,受害人)返回DNS響應(yīng)信息。如果查詢請(qǐng)求的數(shù)量巨大,DNS服務(wù)器很有可能會(huì)發(fā)送大量的DNS響應(yīng)信息。這也就是我們常說(shuō)的放大攻擊,這種方法利用的是DNS解析器中的錯(cuò)誤配置。由于DNS服務(wù)器配置錯(cuò)誤,那么DNS解析器很可能會(huì)在接收到一個(gè)非常小的DNS查詢請(qǐng)求之后,向目標(biāo)主機(jī)返回大量的攻擊流量。在另一種類型的攻擊中,是向DNS服務(wù)器發(fā)送未經(jīng)許可或不符合規(guī)則的查詢請(qǐng)求來(lái)進(jìn)行攻擊。
防御DDOS攻擊
不允許未經(jīng)過(guò)請(qǐng)求的DNS響應(yīng)
丟棄快速重傳數(shù)據(jù)包
丟棄異常來(lái)源的DNS請(qǐng)求和響應(yīng)
創(chuàng)建白名單,添加允許服務(wù)器處理的合法請(qǐng)求信息
啟動(dòng)DNS客戶端驗(yàn)證
使用ACL的權(quán)限
上面所說(shuō)的攻擊,其實(shí)并不在我們的可控范圍之內(nèi),內(nèi)網(wǎng)的入侵,大家首先都會(huì)想到中間人攻擊,中間人攻擊,也就會(huì)想到DNS欺騙和ARP欺騙了。
4) DNS欺騙
DNS欺騙就是攻擊者冒充域名服務(wù)器的一種欺騙行為。
原理:如果可以冒充域名服務(wù)器,然后把查詢的IP地址設(shè)為攻擊者的IP地址,這樣的話,用戶上網(wǎng)就只能看到攻擊者的主頁(yè),而不是用戶想要取得的網(wǎng)站的主頁(yè)了,這就是DNS欺騙的基本原理。DNS欺騙其實(shí)并不是真的“黑掉”了對(duì)方的網(wǎng)站,而是冒名頂替、招搖撞騙罷了。
現(xiàn)在的Internet上存在的DNS服務(wù)器有絕大多數(shù)都是用bind來(lái)架設(shè)的,使用的bind版本主要為bind 4.9.5+P1以前版本和bind 8.2.2-P5以前版本.這些bind有個(gè)共同的特點(diǎn),就是BIND會(huì)緩存(Cache)所有已經(jīng)查詢過(guò)的結(jié)果,這個(gè)問(wèn)題就引起了下面的幾個(gè)問(wèn)題的存在.
DNS欺騙就是攻擊者冒充域名服務(wù)器的一種欺騙行為。 原理:如果可以冒充域名服務(wù)器,然后把查詢的IP地址設(shè)為攻擊者的IP地址,這樣的話,用戶上網(wǎng)就只能看到攻擊者的主頁(yè),而不是用戶想要取得的網(wǎng)站的主頁(yè)了,這就是DNS欺騙的基本原理。DNS欺騙其實(shí)并不是真的“黑掉”了對(duì)方的網(wǎng)站,而是冒名頂替、招搖撞騙罷了。
DNS欺騙的防范
DNS欺騙是很難進(jìn)行有效防御的,因?yàn)榇蠖嗲闆r下都是被攻擊之后才會(huì)發(fā)現(xiàn),對(duì)于避免DNS欺騙所造成危害,本菜鳥(niǎo)提出以下建議
1.因?yàn)镈NS欺騙前提也需要ARP欺騙成功,所以首先做好對(duì)ARP欺騙攻擊的防范。
2.不要依賴于DNS,可以使用hosts文件來(lái)實(shí)現(xiàn)相同的功能。
3.使用安全檢測(cè)軟件定期檢查系統(tǒng)是否遭受攻擊。
4.使用DNSSEC。DNSSEC是替代DNS的更好選擇,它使用的是數(shù)字前面DNS記錄來(lái)確保查詢響應(yīng)的有效性,DNSSEC還沒(méi)有廣泛運(yùn)用,但是已被公認(rèn)為是DNS的未來(lái)方向,也正是如此,美國(guó)國(guó)防部已經(jīng)要求所有MIL和GOV域名都必須開(kāi)始使用DNSSEC。