<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[小小工程師的日常筆記]]></title> 
<link>https://xdeath.tw/index.php</link> 
<description><![CDATA[]]></description> 
<language>zh-tw</language> 
<copyright><![CDATA[小小工程師的日常筆記]]></copyright>
<item>
<link>https://xdeath.tw/read.php?80</link>
<title><![CDATA[Extensible Provisioning Protocol(EPP)]]></title> 
<author>admin &lt;tszheng@twnic.net.tw&gt;</author>
<category><![CDATA[DNS]]></category>
<pubDate>Tue, 14 May 2019 02:15:43 +0000</pubDate> 
<guid>https://xdeath.tw/read.php?80</guid> 
<description>
<![CDATA[ 
	Extensible Provisioning Protocol(EPP)是一個網域名稱註冊的一個標準的協定<br/><br/>早期的每一家註冊局(registry)都有自己的註冊域名的API或是格式<br/><br/>當一家代理註冊商(registrar)要能夠代理不同註冊局的域名時，就會<br/><br/>碰到程式不通用的問題。為了解決這個問題，IETF推出了一個通用格式<br/><br/>Extensible Provisioning Protocol(EPP)，他是一種以XML的標準格式<br/><br/>讓registrar在與各家registry溝通時能夠更方便的傳輸資料。<br/><br/>完整的資料傳輸流程大概是這樣，首先client與EPP server端先建立TCP三方<br/><br/>交握連線，接著進行加密憑證的交換(一般是走加密連線啦，應該很少是明文<br/><br/>傳送)，連線完成之後，首先是SERVER端或傳送一個HELLO，內容是這個EPP SERVER<br/><br/>的相關資訊，使用的EPP版本，是否有extension以及schema，接著client端每<br/><br/>發送一個request，server端就會回應一個response。client首先必須先作login<br/><br/>，server回應登入成功，後續就夠發送要執行動作的request，當連線結束後，client<br/><br/>需要在發送一個logout的指令，或是直接斷開連線，server仍然會發送一個斷開<br/><br/>連線的Response。<br/><br/>整個EPP的指令大概可以分成兩類，一類是連線用指令(login、logout、greet)，<br/><br/>另一類是操作相關物件用(create建立、update更新、delete刪除、transfer移轉<br/><br/>、info查詢資料、check檢查是否存在、renew續用、poll通知)。<br/><br/><br/>一個網域名稱主要分成三個物件，網域名稱(Domain)、聯繫資訊(Contact)、主機資訊(Host)。<br/><br/>當我們要註冊一個網域名稱，因為網域的資料中一定要帶擁有者等相關聯繫資訊<br/><br/>因此必須要先建立個人資料(contact create)，接著才能夠註冊網域名稱(domain create)，<br/><br/>網域建立成功之後僅表示這個網域名稱已經屬於某個人，但是仍然無法運作，接著要建立<br/><br/>Host(Host create)資訊，也就是指定你的DNS主機，DNS才能夠正常解析，才能夠讓這個域<br/><br/>名能夠真正的發揮作用。<br/><br/>所以一個完整註冊的流程大概是這樣的<br/><br/>檢查contact是否存在(contact check)->不存在則註冊contact(contact create)->檢查contact是否存在<br/><br/>要註冊的域名是否存在(domain check)->不存在則註冊域名(domain create)->建立自己的host主機資訊<br/><br/>(host create)->更新域名設定NS(domain update)<br/><br/><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-1292700168892016" data-ad-slot="3191226934" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle = window.adsbygoogle &#124;&#124; []).push(&#123;&#125;);</script>&nbsp;&nbsp;<br/><br/>xml範例：<br/><br/><span style="color: #FF0000;">REQUEST:</span><br/><div class="code"><br/>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;<br/>&nbsp;&nbsp;&lt;epp xmlns=&quot;urn:ietf:params:xml:ns:epp-1.0&quot;&nbsp;&nbsp;<br/>&nbsp;&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<br/>&nbsp;&nbsp;xsi:schemaLocation=&quot;urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd&quot;&gt;<br/>&nbsp;&nbsp;&lt;command xmlns=&quot;urn:ietf:params:xml:ns:epp-1.0&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;create&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:create xmlns:domain=&quot;urn:ietf:params:xml:ns:domain-1.0&quot; <br/>&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; <br/>&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation=&quot;urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:name&gt;test.com.tw&lt;/domain:name&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:period unit=&quot;y&quot;&gt;1&lt;/domain:period&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:registrant&gt;test-contact-001&lt;/domain:registrant&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:contact type=&quot;admin&quot;&gt;test-contact-001&lt;/domain:contact&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:contact type=&quot;tech&quot;&gt;test-contact-001&lt;/domain:contact&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:contact type=&quot;billing&quot;&gt;test-contact-001&lt;/domain:contact&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:authInfo&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:pw&gt;testpass&lt;/domain:pw&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/domain:authInfo&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/domain:create&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/create&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;clTRID&gt;ABC-96803-XYZ&lt;/clTRID&gt;<br/>&nbsp;&nbsp;&lt;/command&gt;<br/>&lt;/epp&gt;<br/></div><br/><span style="color: #FF0000;">RESPONSE:</span><br/><div class="code"><br/>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br/>&lt;epp xmlns=&quot;urn:ietf:params:xml:ns:epp-1.0&quot; <br/>&nbsp;&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<br/>&nbsp;&nbsp;xsi:schemaLocation=&quot;urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd&quot;&gt;<br/>&nbsp;&nbsp;&lt;response&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;result code=&quot;1000&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;msg lang=&quot;en-US&quot;&gt;Command completed successfully&lt;/msg&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/result&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;resData&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:creData xmlns:domain=&quot;urn:ietf:params:xml:ns:domain-1.0&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:name&gt;test.com.tw&lt;/domain:name&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:crDate&gt;2019-05-13T16:21:58.0Z&lt;/domain:crDate&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:exDate&gt;2020-05-13T16:21:58.0Z&lt;/domain:exDate&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/domain:creData&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/resData&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;trID&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;clTRID&gt;ABC-96803-XYZ&lt;/clTRID&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svTRID&gt;1557764518-3829-2515&lt;/svTRID&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/trID&gt;<br/>&nbsp;&nbsp;&lt;/response&gt;<br/>&lt;/epp&gt;<br/></div><br/><br/>以上是一個domain create的範例，相關的XML schema都可以在網路上找的到<br/><br/>可以看到要做的動作基本上是被包在command這個tag中，回應中會有一個<br/><br/>result code，1XXX開頭基本上就是成功，其他開頭就是失敗，這個資料在RFC<br/><br/>中都有說明。<br/><br/>使用者的request中必須帶有一個<clTRID>ABC-96803-XYZ</clTRID>，這是一個<br/><br/>代表連線的資訊，回應的時候同時也會帶上這個資訊，表示是回應哪一個request<br/><br/>同時會加上server的一個唯一的連線ID。<br/><br/>如果註冊商有自己特殊的規定或是資訊，EPP也可以另外增加一個extension的欄位<br/><br/>以DNSSEC為例，XML就會多出一個與create同階層的extension的欄位如下<br/><br/><div class="code"><br/>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;<br/>&nbsp;&nbsp;&lt;epp xmlns=&quot;urn:ietf:params:xml:ns:epp-1.0&quot;&nbsp;&nbsp;<br/>&nbsp;&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<br/>&nbsp;&nbsp;xsi:schemaLocation=&quot;urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd&quot;&gt;<br/>&nbsp;&nbsp;&lt;command xmlns=&quot;urn:ietf:params:xml:ns:epp-1.0&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;create&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:create xmlns:domain=&quot;urn:ietf:params:xml:ns:domain-1.0&quot; <br/>&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; <br/>&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation=&quot;urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:name&gt;test.com.tw&lt;/domain:name&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:period unit=&quot;y&quot;&gt;1&lt;/domain:period&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:registrant&gt;test-contact-001&lt;/domain:registrant&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:contact type=&quot;admin&quot;&gt;test-contact-001&lt;/domain:contact&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:contact type=&quot;tech&quot;&gt;test-contact-001&lt;/domain:contact&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:contact type=&quot;billing&quot;&gt;test-contact-001&lt;/domain:contact&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:authInfo&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;domain:pw&gt;testpass&lt;/domain:pw&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/domain:authInfo&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/domain:create&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/create&gt;<br/>&nbsp;&nbsp;&lt;extension&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;secDNS:create xmlns:secDNS=&quot;urn:ietf:params:xml:ns:secDNS-1.1&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation=&quot;urn:ietf:params:xml:ns:secDNS-1.1 secDNS-1.1.xsd&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;secDNS:dsData&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;secDNS:keyTag&gt;9765&lt;/secDNS:keyTag&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;secDNS:alg&gt;5&lt;/secDNS:alg&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;secDNS:digestType&gt;1&lt;/secDNS:digestType&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;secDNS:digest&gt;4141674BFF957211D129B0DFE9410AF753559D4B&lt;/secDNS:digest&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/secDNS:dsData&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/secDNS:create&gt;<br/>&nbsp;&nbsp;&lt;/extension&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;clTRID&gt;ABC-96803-XYZ&lt;/clTRID&gt;<br/>&nbsp;&nbsp;&lt;/command&gt;<br/>&lt;/epp&gt;<br/></div><br/><br/>最後附上筆者從github上下載的php client修改後的一個簡單版的client<a href="attachment.php?fid=9">點擊這裡下載檔案</a><br/><br/>解壓縮之後填寫設定檔settings.ini，執行php request.php就可以傳送相關命令了，歡迎大家下載使用。
]]>
</description>
</item><item>
<link>https://xdeath.tw/read.php?53</link>
<title><![CDATA[使用iptables 的--string阻擋特定網域名稱查詢]]></title> 
<author>admin &lt;tszheng@twnic.net.tw&gt;</author>
<category><![CDATA[DNS]]></category>
<pubDate>Wed, 27 Jul 2016 02:38:04 +0000</pubDate> 
<guid>https://xdeath.tw/read.php?53</guid> 
<description>
<![CDATA[ 
	linux的iptables可以針對封包的pattern直接進行比對進行阻擋<br/><br/>這個網路上可以查詢到相當多的資料<br/><br/>所以如果我們要針對DNS的惡意域名查詢在前端iptables做攔阻的話<br/><br/>首先我們必須要知道DNS查詢中的域名是在封包的哪一段<br/><br/>tcpdump -i eth0 -vv -nnn -X port 53&nbsp;&nbsp;我們先針對自己的53 port做監聽<br/><br/>然後對自己查詢一個a.atest.tw A紀錄<br/><br/><div class="code">0x0000:&nbsp;&nbsp;4500 0070 c347 0000 4011 0a6f 3cfb 1968&nbsp;&nbsp;E..p.G..@..o&lt;..h<br/>0x0010:&nbsp;&nbsp;3cfb 1969 0035 9ebe 005c ad34 4493 8183&nbsp;&nbsp;&lt;..i.5...&#92;.4D...<br/>0x0020:&nbsp;&nbsp;0001 0000 0001 0000 0161 0561 7465 7374&nbsp;&nbsp;.........a.atest<br/>0x0030:&nbsp;&nbsp;0274 7700 0001 0001 c014 0006 0001 0000&nbsp;&nbsp;.tw.............</div><br/><br/>每行是16byte，所以網域名稱是在第40個byte開始<br/><br/>編碼方式是將字串做hex，所以a.atest.tw就是6105617465737402747700<br/><br/>-A INPUT -p udp --dport 53 -m string --from 41 --to 48--alg bm --hex-string &#124;6105617465737402747700&#124; -j DROP<br/><br/>但是如果仔細觀察第一個點編碼後是01，第二個點編碼後是05，第三個點編碼後是02<br/><br/>一開始真的是讓我百思不得其解<br/><br/>測試了七八個域名之後才發現，他是一個shift的量<br/><br/>最後一個 . 一定是00，第二個點如果前面是tw(長度2)，那就是02...依此類推<br/><br/>所以最後用php做轉換的程式碼大概是像下面<br/><br/><div class="code">&lt;?php<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str = $argv&#91;1&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo hexstring($str).&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function hexstring($str)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$var = explode(&quot;.&quot;,$str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($i = 0;$i &lt; count($var);$i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str .= &quot;0&quot;.strlen($var&#91;$i&#93;).tohex($var&#91;$i&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str .= &quot;00&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rule = &quot;-A INPUT -p udp --dport 53 -m string --from 42 --to 100 --alg bm --hex-string &#124;$str&#124; -j DROP&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $rule;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;function tohex($string)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$hex = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i &lt; strlen($string); $i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$hex .= dechex(ord($string&#91;$i&#93;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $hex;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;function toStr($hex)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$string = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i &lt; strlen($hex)-1; $i+=2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$string .= chr(hexdec($hex&#91;$i&#93;.$hex&#91;$i+1&#93;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $string;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>?&gt;</div><br/><br/>當然你也可以使用cronjob定時去檢查log把一些惡意的攻擊做阻擋。<br/><br/><br/><br/><br/><br/>
]]>
</description>
</item><item>
<link>https://xdeath.tw/read.php?49</link>
<title><![CDATA[DNS壓力測試]]></title> 
<author>admin &lt;tszheng@twnic.net.tw&gt;</author>
<category><![CDATA[DNS]]></category>
<pubDate>Wed, 22 Jun 2016 02:09:42 +0000</pubDate> 
<guid>https://xdeath.tw/read.php?49</guid> 
<description>
<![CDATA[ 
	這一兩年DNS與NTP的反射放大攻擊實在太好用了<br/><br/>透過殭屍電腦與cache server可以打出100倍以上的流量<br/><br/>讓DNS server的管理上變得非常困難，大家又尤其愛攻擊DNS(IP容易造假)<br/><br/>我們在裝DNS以及選擇DNS軟體的時候，就常常需要做一下壓力測試<br/><br/>==========第一種是用bind本身的工具進行測試==========<br/><br/>而bind本身就有提供壓力測試的工具，首先我們到ISC下載bind9.10 <br/><br/>https://www.isc.org/downloads/<br/><br/>把它改檔名變成bind.tar.gz，然後解壓縮 <br/><br/>tar zxvf bind.tar.gz<br/><br/>進入資料夾<br/><br/>cd bind/contrib/queryper/<br/><br/>進行編譯<br/><br/>make<br/><br/>就會看到有一個queryperf出來<br/><br/>一般我是產生一個要測試的檔案<br/><br/>1.test.tw A<br/>2.test.tw A<br/>1.test.tw NS<br/>.........<br/><br/>./queryperf -d 測試檔案名稱 -s 目標IP<br/><br/>==========另外一種使用tcpreplay==========<br/><br/>首先我們需要用tcpdump錄下一段流量 test.pcap<br/><br/>tcpreplay只要改幾個參數就可以模擬送出大量的流量<br/><br/>-x&nbsp;&nbsp;攻擊的速度(-x 5&nbsp;&nbsp;五倍速)<br/><br/>-s&nbsp;&nbsp;產生隨機的source ip<br/><br/>-i&nbsp;&nbsp;哪一個interface(實體網孔)<br/><br/>這樣我們只需要將當初DNS的流量用10或100倍速重新replay就可以了
]]>
</description>
</item><item>
<link>https://xdeath.tw/read.php?47</link>
<title><![CDATA[knot安裝與設定]]></title> 
<author>admin &lt;tszheng@twnic.net.tw&gt;</author>
<category><![CDATA[DNS]]></category>
<pubDate>Tue, 21 Jun 2016 09:12:08 +0000</pubDate> 
<guid>https://xdeath.tw/read.php?47</guid> 
<description>
<![CDATA[ 
	在linux上的DNS除了bind以外，另外還有另外幾種DNS軟體<br/><br/>因為knot的效能聽說比較好，所以就裝起來測試看看<br/><br/>現在knot版本大概是2.2版，不過在ubuntu上apt-get安裝最簡單<br/><br/>可以裝到1.4.2版，雖然不夠新，但是似乎還堪用<br/><br/>另外在centos OS上似乎沒辦法用yum安裝，只能rpm，會麻煩很多<br/><br/>首先裝好ubuntu之後先做更新<br/><br/>apt-get update<br/><br/>接著直接安裝knot<br/><br/>apt-get install knot<br/><br/>他的設定檔會放在/etc/knot/knot.conf，就這樣一個檔案<br/><br/>點開來看listen的部分在interfaces裡<br/><br/>zone寫在zones區塊內如下<br/><br/>zones&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test.tw&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "test.tw";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/><br/>那允許的slave清單就寫在remote內<br/><br/>remotes &#123;<br/>&nbsp;&nbsp;slave &#123; address x.x.x.x;&#125;<br/>&nbsp;&nbsp;slave2 &#123;address y.y.y.y@port;&#125;<br/>&#125;<br/><br/>那如果是slave呢<br/><br/>remotes &#123;<br/>&nbsp;&nbsp;master &#123; address x.x.x.x@53; &#125;<br/>&#125;<br/><br/>zones&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test.tw&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "test.tw";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xfr-in master;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notify-in master;&nbsp;&nbsp;&nbsp;&nbsp; <---這邊的master要對映remotes的master<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/><br/>所以你也可以針對特定的domain去跟不同的master做zone transfer<br/><br/>甚至你的master可以開其他的port(非53)，修改為address x.x.x.x@port即可<br/><br/>knot的啟動一樣是service knot start (stop, restart)<br/><br/>重新讀取zonefile<br/><br/>knotc reload<br/><br/>如果做cache server也可以清除某個domain的cache資料<br/><br/>knotc flush domain1 domain2 ...&nbsp;&nbsp; (2.x版是zone-flush)<br/><br/>另外假如zonefile太多同樣也可以把所有zonefile放到一個資料夾用include的方式<br/><br/>在knot.conf中include "zonefile"<br/><br/>zonefile中寫入所有的domain record位置<br/><br/>zones &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0test.tw &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "/etc/knot/file/0test.tw";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1test.tw &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "/etc/knot/file/1test.tw";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.........<br/>&#125;<br/><br/>另外knot現在github還有進行升級與維護<br/><br/>在https://www.knot-dns.cz/download/有提到<br/><br/>ubuntu加入他的repository就可以更新到最新版<br/><br/>sudo add-apt-repository ppa:cz.nic-labs/knot-dns<br/><br/>sudo apt-get update<br/><br/>sudo apt-get install knot
]]>
</description>
</item><item>
<link>https://xdeath.tw/read.php?46</link>
<title><![CDATA[bind安裝]]></title> 
<author>admin &lt;tszheng@twnic.net.tw&gt;</author>
<category><![CDATA[DNS]]></category>
<pubDate>Tue, 21 Jun 2016 03:56:19 +0000</pubDate> 
<guid>https://xdeath.tw/read.php?46</guid> 
<description>
<![CDATA[ 
	環境：ubuntu 14.04 server<br/><br/>直接使用apt-get安裝bind<br/><br/>apt-get bind9<br/><br/>他的設定檔預設放在/etc/bind底下，下面有幾個檔案但是基本上只要動到兩個<br/><br/>named.conf.options <-- 負責你的zonefile目錄，監聽的port，IP範圍<br/><br/>是否forward，簽署dnssec等<br/><br/>named.conf.default-zones <-- 管理你的域名紀錄等資料<br/><br/>如果你的dns server裡面存放很多域名，建議另外獨立一個檔案，使用include如下<br/><br/>include "/etc/bind/zonefile";<br/><br/>在/etc/bind/zonefile裡面就可以寫每個zone的相關資料如下<br/><br/>zone "donain.tw" &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type master;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<--master或是slave<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "/var/cache/bind/domain.tw";&nbsp;&nbsp; <--存放record的檔案位置<br/>&#125;;<br/><br/>zone .....<br/><br/>存放record的檔案寫法如下<br/><code><br/>$TTL&nbsp;&nbsp;&nbsp;&nbsp;86400<br/>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOA&nbsp;&nbsp;&nbsp;&nbsp; test.tw.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root.test.tw.&nbsp;&nbsp; (<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2004102902&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; Serial<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;28800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Refresh<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Retry<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;720000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; Expire<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;86400&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; minimum<br/>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ns1.test.tw.<br/>ns1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;自己的IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#這兩行非常重要，不加的話是不會回應的#<br/>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail.test.tw.<br/>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;MX&nbsp;&nbsp;20&nbsp;&nbsp;mail2.test.tw.<br/></code><br/><br/>root.test.tw為管理者email，serial代表序號，讓slave更新時可以比對<br/><br/>記得寫主機名稱的時候，最後的地方 ns1.test.tw. 最後面加上"."<br/><br/>在DNS裡面他代表root的意思<br/><br/>以mail.test.tw.為例，如果寫成mail.test.tw<br/><br/>解析出來就會變成mail.test.tw為test.tw這個域名的郵件主機名稱<br/><br/>test.tw.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;86400&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10 mail.test.tw.test.tw.<br/><br/>測試的時候用dig @dns-server-ip domain record-type<br/><br/>dig @localhost test.tw A即可
]]>
</description>
</item><item>
<link>https://xdeath.tw/read.php?43</link>
<title><![CDATA[DNS簡介與攻擊/防禦手法]]></title> 
<author>admin &lt;tszheng@twnic.net.tw&gt;</author>
<category><![CDATA[DNS]]></category>
<pubDate>Thu, 17 Mar 2016 07:30:22 +0000</pubDate> 
<guid>https://xdeath.tw/read.php?43</guid> 
<description>
<![CDATA[ 
	DNS簡介與攻擊/防禦手法<br/><br/>這個檔案只能在登入之後下載。請先 <a href="https://xdeath.tw/login.php?job=register">註冊</a> 或 <a href="https://xdeath.tw/login.php">登入</a>
]]>
</description>
</item>
</channel>
</rss>