Linux之DNS服务器搭建及常见DNS***和防御
DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP協議之上,使用端口號53。
?
?
主機名到IP地址的映射有兩種方式:
1)靜態映射,每臺設備上都配置主機到IP地址的映射,各設備獨立維護自己的映射表,而且只供本設備使用;
2)動態映射,建立一套域名解析系統(DNS),只在專門的DNS服務器上配置主機到IP地址的映射,網絡上需要使用主機名通信的設備,首先需要到DNS服務器查詢主機所對應的IP地址。
?
域名結構
通常 Internet 主機域名的一般結構為:主機名.三級域名.二級域名.頂級域名。 Internet 的頂級域名由 Internet網絡協會域名注冊查詢負責網絡地址分配的委員會進行登記和管理,它還為 Internet的每一臺主機分配唯一的 IP 地址。全世界現有三個大的網絡信息中心: 位于美國的 Inter-NIC,負責美國及其他地區; 位于荷蘭的RIPE-NIC,負責歐洲地區;位于日本的APNIC ,負責亞太地區
根域:DNS域名中使用時,規定由尾部句點(.)來指定名稱位于根或者更高級別的域層次結構
頂級域:用來指示某個國家/地區或組織使用的名稱的類型名稱,如.com
二級域名:個人或組織在Internet上使用的注冊名稱,如qq.com
子域:已注冊的二級域名派生的域名,通俗的講就是網站名,如www.qq.com
主機名:通常情況下,DNS域名的最左側的標識網絡上的特定計算機,如h1.www.qq.com
?
常見的頂級域服務器
com | 商業組織 |
edu | 教育機構 |
Gov | 政論組織 |
Mil | 軍事部門 |
net | 網絡機構 |
org | 非盈利性組織 |
int | 國際組織 |
Uk | 美國 |
Fr | 法國 |
au | 澳大利亞 |
ca | 加拿大 |
cn | 中國 |
jp | 日本 |
?
?
我國的頂級域名也只有cn
?
?
DNS的解析過程
第一步,查詢本地host文件和緩存有沒有這個記錄,有就直接解析,沒有就訪問DNS服務器,如果DNS服務器上沒這個域名或者域名不在你訪問的DNS服務器管理區域內,那么DNS服務器就會向dot根域名服務器發遞歸查詢,如果找到了記錄了,DNS就會返回給client,并且把記錄保存在自己緩存里,下次有client請求,他就會調用自己的緩存,直到這條記錄的生存期結束,就會丟棄這條記錄。
根域名服務器就13臺域名服務器,他負責管理頂級域。頂級域負責管理二級域,我們現在申請的一般是2級域名-3級域名。
?
?
用 nslookup 這個工具詳細來說一下解析步驟:
從上圖我們可以看到:
??????????第一行Server是:DNS服務器的主機名--114.114.114.114
??????????第二行Address是: 它的IP地址--114.114.114.114#53
??????????下面的Name是:解析的URL-- ???www.baidu.com
會發現百度有一個cname=www.ashifen.com的別名
用dig工具來跟蹤一下(linux系統自帶有)
?
?
Dig工具會在本地計算機做迭代,然后記錄查詢的過程。
第一步是向我這臺機器的ISPDNS獲取到根域服務區的13個IP和主機名
第二步是向其中的一臺根域服務器(Servername就是末行小括號里面的)發送www.baidu.com的查詢請求,他返回了com.頂級域的服務器IP(未顯示)和名稱
第三步,便向com.域的一臺服務器192..5.5.241請求,www.baidu.com,他返回了baidu.com域的服務器IP(未顯示)和名稱,百度有四臺頂級域的服務器
第四步呢,向百度的頂級域服務器(202.108.22.220)請求www.baidu.com,他發現這個www有個別名,而不是一臺主機,別名是www.a.shifen.com。
使用dig +trace ?shifen.com,發現第三步時shifen.com這個頂級域的域名服務器和baidu.com這個域的域名服務器是同一臺主機
當拿到www.baidu.com的別名www.a.shifen.com的時候,我本來需要重新到com域查找shifen.com域的NS,但是因為這兩個域在同一臺NS上,所以直接向本機發起了。
?
Linux DNS服務介紹
后臺進程:named
腳本:/etc/rc.d/init.d/named
使用端口:53(tcp,udp)
配置文件:/var/named/chroot/etc/named.conf
相關路徑:/var/named/
?
安裝bind服務器
yum install bind* (先配置yum源,yum源之前的實驗已經配置完成了)
vim??/etc/yum.repos.d/base.repo?????????????? [RHEL6]?????? name=?base baseurl=file:///mnt/cdrom???????? enabled=1?????????????????? gpgcheck=0????? 保持退出BIND是一種開源的DNS(Domain Name System)協議的實現,包含對域名的查詢和響應所需的所有軟件。它是互聯網上最廣泛使用的一種DNS服務器,BIND這個縮寫來自于使用的第一個域,Berkeley Internet Name Domain
?
BIND軟件包包括三個部分:
DNS服務器。這是一個叫做named的程序,代表name daemon的簡寫。它根據DNS協議標準的規定,響應收到的查詢。
DNS解析庫(resolver library)。一個解析器是一個程序,通過發送請求到合適的服務器并且對服務器的響應做出合適的回應,來解析對一個域名的查詢。一個解析庫是程序組件的集合,可以在開發其它程序時使用,為這些程序提供域名解析的功能。
?
/etc/named.conf
named.conf是BIND使用的默認配置文件
在每一次named啟動與掛起時都會被讀取
一個簡單的文本文件,其中記錄的可以包括options(全局參數)、zone(區域定義)、access control lists(訪問控制列表)等
根域
區域配置(zone )
zone 語句作用是定義DNS 區域,在此語句中可定義DNS 區域選項
zone區域設置,第一步,設置根區域
當DNS服務器處理遞歸查詢時,如果本地區域文件不能進行查詢的解析,就會轉到根DNS服務器查詢,所以在主配置文件named.conf文件中還要定義根區域。 (默認即可)
?
“.”?意思的根區域 IN?是internet記錄 type是類型?根的類型是hint file是根區域文件?
?
?
指定正向解析的配置文件
修改DNS服務器的輔助區域配置文件/etc/named.rfc1912.zones
?用//注銷掉系統默認配置的zone信息所有行或者刪除
?在文件的尾部增加以下內容??
配置正向解析zone文件
將范例復制到正向解析文件,-p可以將源文件的屬性一起復制
TTL是生存期,單位是秒? $TTL是全局定義的? 第二行?SOA記錄,@取代在/etc/named.conf中指定的域名。? SOA段中的數字,分別為:序列號、刷新、重試、過期、生存期 序列號:序列號用于DNS數據庫文件的版本控制。每當數據被改變,這個序列號就應該被增加。? 刷新:從服務器向主服務器查詢最新數據的間隔周期。每一次檢查時從服務器的數據是否需要更改,則根據序列號來判別。? 重試:一旦從服務器嘗試連接主服務器失敗,下一次查詢主服務器的延遲時間。? 過期:如果從服務器無法連通主服務器,則在經過此時間后,宣告其數據過期。? 生存期:服務器回答?‘無此域名’?的間隔時間。 數字的默認單位為秒。否則:W=?周、D=?日、H=?小時、M=?分鐘。 NS(name?server):設置域名服務器的域名 IN?是internet記錄
?
?
service ?named ?restart ???重新啟動DNS服務
service ?iptables ?stop ????關閉防火墻
?
測試DNS解析
使用nslookup測試下。
經過簡單的了解和配置DNS服務,應該知道DNS的工作原理了。
?DNS分為Client和Server,Client扮演發問的角色,也就是問Server一個Domain Name,而Server必須要回答此Domain Name的真正IP地址。而當地的DNS先會查自己的資料庫。如果自己的資料庫沒有,則會往該DNS上所設的的DNS詢問,依此得到答案之后,將收到的答案存起來,并回答客戶。
?
DNS服務器會根據不同的授權區(Zone),記錄所屬該網域下的各名稱資料,這個資料包括網域下的次網域名稱及主機名稱。
?
在每一個名稱服務器中都有一個快取緩存區(Cache),這個快取緩存區的主要目的是將該名稱服務器所查詢出來的名稱及相對的IP地址記錄在快取緩存區中,這樣當下一次還有另外一個客戶端到次服務器上去查詢相同的名稱 時,服務器就不用在到別臺主機上去尋找,而直接可以從緩存區中找到該筆名稱記錄資料,傳回給客戶端,加速客戶端對名稱查詢的速度。
常見的DNS***包括:
?
1) 域名劫持
?
通過采用***手段控制了域名管理密碼和域名管理郵箱,然后將該域名的NS紀錄指向到***可以控制的DNS服務器,然后通過在該DNS服務器上添加相應域名紀錄,從而使網民訪問該域名時,進入了***所指向的內容。
?
這顯然是DNS服務提供商的責任,用戶束手無策。遇到dns被劫持,讓dns服務提供者解決這個問題,是比較矛盾的;因為,劫持者,最有可能的就是他們;另外一種最直接的解決辦法就是換用其他dns。更換dns服務器的方法非常簡單,打開網絡連接屬性,選擇Interner 協議(TCP/IP)的屬性頁里,不要選擇自動獲取DNS,而要選擇“使用下面的DNS服務器地址”,推薦大家使用OpenDNS提供的DNS服務器,OpenDNS是一個提供免費DNS服務的網站,口號是更安全、更快速、更智能。
?
2) 緩存投毒
?
DNS緩存投毒***是指***者欺騙DNS服務器相信偽造的DNS響應的真實性。這種類型***的目的是將依賴于此DNS服務器的受害者重定向到其他的地址。隨著惡意軟件傳播的增多,緩存投毒的方法也層出不窮。典型的一種是發送標題吸引人的垃圾郵件并誘導你去打開。點擊郵件中的圖片和廣告條幅也會將用戶指向被投毒的網站。一旦用戶的電腦被惡意代碼感染,他今后所有的URL請求都將被自動指向惡意IP地址-哪怕被指向的“受害”服務器已經在其網頁上清除了惡意代碼。
?
? ?防止投毒
?
目前還沒有更好辦法阻止***的這種行為,只有使DNS緩存服務器發出的查詢請求使用動態的UDP端口,UDP的端口號也是16位2進制,這樣,與DNS的ID號相結合,號碼的命中率就是1/4294967296(2的32次方)。
?
3)DDOS***
?
一種***針對DNS服務器軟件本身,通常利用BIND軟件程序中的漏洞,導致DNS服務器崩潰或拒絕服務;另一種***的目標不是DNS服務器,而是利用DNS服務器作為中間的“***放大器”,去***其它互聯網上的主機,導致被***主機拒絕服務。
為了讓DNS拒絕服務,惡意***者向允許遞歸的開放DNS解析器發送大量偽造的查詢請求。目前互聯網中存在著上百萬開放的DNS解析器,包括很多的家庭網關。開放的DNS解析器會認為這些偽造的查詢請求是真實有效的,并且會對這些請求進行處理,在處理完成之后,便會向偽造的請求者(即,受害人)返回DNS響應信息。如果查詢請求的數量巨大,DNS服務器很有可能會發送大量的DNS響應信息。這也就是我們常說的放大***,這種方法利用的是DNS解析器中的錯誤配置。由于DNS服務器配置錯誤,那么DNS解析器很可能會在接收到一個非常小的DNS查詢請求之后,向目標主機返回大量的***流量。在另一種類型的***中,是向DNS服務器發送未經許可或不符合規則的查詢請求來進行***。
?
防御DDOS***
不允許未經過請求的DNS響應
丟棄快速重傳數據包
丟棄異常來源的DNS請求和響應
創建白名單,添加允許服務器處理的合法請求信息
啟動DNS客戶端驗證
使用ACL的權限
上面所說的***,其實并不在我們的可控范圍之內,內網的***,大家首先都會想到中間人***,中間人***,也就會想到DNS欺騙和ARP欺騙了。
4) DNS欺騙
?
DNS欺騙就是***者冒充域名服務器的一種欺騙行為。
?
原理:如果可以冒充域名服務器,然后把查詢的IP地址設為***者的IP地址,這樣的話,用戶上網就只能看到***者的主頁,而不是用戶想要取得的網站的主頁了,這就是DNS欺騙的基本原理。DNS欺騙其實并不是真的“黑掉”了對方的網站,而是冒名頂替、招搖撞騙罷了。
?
現在的Internet上存在的DNS服務器有絕大多數都是用bind來架設的,使用的bind版本主要為bind 4.9.5+P1以前版本和bind 8.2.2-P5以前版本.這些bind有個共同的特點,就是BIND會緩存(Cache)所有已經查詢過的結果,這個問題就引起了下面的幾個問題的存在.
?
DNS欺騙就是***者冒充域名服務器的一種欺騙行為。 原理:如果可以冒充域名服務器,然后把查詢的IP地址設為***者的IP地址,這樣的話,用戶上網就只能看到***者的主頁,而不是用戶想要取得的網站的主頁了,這就是DNS欺騙的基本原理。DNS欺騙其實并不是真的“黑掉”了對方的網站,而是冒名頂替、招搖撞騙罷了。
DNS欺騙的防范
?
DNS欺騙是很難進行有效防御的,因為大多情況下都是被***之后才會發現,對于避免DNS欺騙所造成危害,本菜鳥提出以下建議
?
1.因為DNS欺騙前提也需要ARP欺騙成功。所以首先做好對ARP欺騙***的防范。
?
2.不要依賴于DNS,盡管這樣會很不方便,可以使用hosts文件來實現相同的功能(但首先確保host文件沒有被修改)
3.使用安全檢測軟件定期檢查系統是否遭受***
?
4.使用DNSSEC。DNSSEC是替代DNS的更好選擇,它使用的是數字前面DNS記錄來確保查詢響應的有效性,DNSSEC還沒有廣泛運用,但是已被公認為是DNS的未來方向,也正是如此,美國國防部已經要求所有MIL和GOV域名都必須開始使用DNSSEC。
轉載于:https://blog.51cto.com/wt7315/1852795
總結
以上是生活随笔為你收集整理的Linux之DNS服务器搭建及常见DNS***和防御的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#图片压缩的实现方法
- 下一篇: linux 其他常用命令