<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>guzik &#187; BIND</title>
	<atom:link href="http://guzik.net.pl/blog/tag/bind/feed/" rel="self" type="application/rss+xml" />
	<link>http://guzik.net.pl/blog</link>
	<description>Mój blog</description>
	<lastBuildDate>Fri, 27 Jan 2012 22:13:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Some things might become overridden</title>
		<link>http://guzik.net.pl/blog/2010/09/some-things-might-become-overridden/</link>
		<comments>http://guzik.net.pl/blog/2010/09/some-things-might-become-overridden/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 14:22:08 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Gentoo Linux]]></category>
		<category><![CDATA[named]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=2199</guid>
		<description><![CDATA[To był kolejny leniwy dzień&#8230; Zaczęło się od aktualizacji oprogramowania, wśród którego był również BIND: [...] 1285757303: &#62;&#62;&#62; emerge (10 of 11) net-dns/bind-9.7.1_p2 to / 1285757305: === (10 of 11) Cleaning (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild) 1285757305: === (10 of 11) Compiling/Merging (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild) 1285757568: === (10 of 11) Merging (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild) 1285757573: &#62;&#62;&#62; AUTOCLEAN: net-dns/bind:0 1285757573: === Unmerging... (net-dns/bind-9.4.3_p5) 1285757574: [...]]]></description>
			<content:encoded><![CDATA[<p>To był kolejny leniwy dzień&#8230;<br />
Zaczęło się od aktualizacji oprogramowania, wśród którego był również <a title="http://guzik.net.pl/blog/tag/bind/" href="http://guzik.net.pl/blog/tag/bind/">BIND</a>:</p>
<blockquote><p><code>[...]<br />
1285757303:  &gt;&gt;&gt; emerge (10 of 11) net-dns/bind-9.7.1_p2 to /<br />
1285757305:  === (10 of 11) Cleaning (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild)<br />
1285757305:  === (10 of 11) Compiling/Merging (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild)<br />
1285757568:  === (10 of 11) Merging (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild)<br />
1285757573:  &gt;&gt;&gt; AUTOCLEAN: net-dns/bind:0<br />
1285757573:  === Unmerging... (net-dns/bind-9.4.3_p5)<br />
1285757574:  &gt;&gt;&gt; unmerge success: net-dns/bind-9.4.3_p5<br />
1285757576:  === (10 of 11) Post-Build Cleaning (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild)<br />
1285757576:  ::: completed emerge (10 of 11) net-dns/bind-9.7.1_p2 to /<br />
[...]</code></p></blockquote>
<p><span id="more-2199"></span><br />
<code>etc-update</code> jakoś przeszło, ale restart nie udał się, bo <em>chroot dir</em> okazał się <em>inconsistent</em>.<br />
Wykonałem więc zalecane wskazówki, ale nie skupiłem się na wyniku, bo zajęty byłem rozmową o pogodzie czy kobietach. A wynik wyglądał tak:</p>
<blockquote><p><code>dns ~ # emerge --config net-dns/bind</code></p>
<p><code>Configuring pkg...</code></p>
<p><code>* NOTE: As of net-dns/bind-9.4.3_p5-r1 the chroot part of the init-script got some major changes!<br />
*<br />
* /chroot/dns already exists... some things might become overridden<br />
* <strong>press CTRL+C if you don't want to continue</strong></code></p></blockquote>
<p>Potem coś tam jeszcze, co nadpisało powyższe linijki, więc nie dotarły do mnie za pierwszym razem. Próba restartu usługi i&#8230; $!#$!%#@%! &#8211; coś nie działa. Przegląd konfiguracji i jeszcze bardziej ~^%$!%^$#! Nie ma mojej starej konfiguracji! Przecież tylko <em>might become overridden</em>!</p>
<p>Tylko spokojnie. Sytuacja do opanowania.<br />
Myślicie, że była poprawna kopia zapasowa? Ja też tak myślałem.</p>
<p>Jest ciepło, ale nie gorąco. A może jednak? Przecież jest zapasowy serwer nazw, z którego można sobie ściągnąć wszystkie strefy.<br />
Jest, ale nie pozwala na <a title="http://en.wikipedia.org/wiki/DNS_zone_transfer" href="http://en.wikipedia.org/wiki/DNS_zone_transfer">AXFR</a>. Huh. Kontaktu z administratorami nie ma (ja niestety nim nie zarządzam).</p>
<p>Dobra, sprawdźmy co robią te komendy, bo może jednak gdzieś na boku zrobiły kopię.</p>
<p>W pliku <code>/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild</code> funkcja <code>pkg_config()</code> wygląda następująco:</p>
<blockquote><p><code>294 pkg_config() {<br />
295     CHROOT=$(source /etc/conf.d/named 2&gt;/dev/null; echo ${CHROOT})<br />
[...]<br />
303     if [[ -d "${CHROOT}" ]]; then<br />
304         ewarn "NOTE: As of net-dns/bind-9.4.3_p5-r1 the chroot part of the init-script got some major changes!"<br />
305         ewarn<br />
306         ewarn "${CHROOT} already exists... some things might become overridden"<br />
307         ewarn "press CTRL+C if you don't want to continue"<br />
308         <strong>sleep 10</strong><br />
309     fi<br />
[...]<br />
337 }<br />
</code></p></blockquote>
<p>O! czyli miałem 10 sekund na reakcję. Poza tym niewiele ciekawego w tym pliku (ani słowa o usuwaniu plików).<br />
Idźmy dalej, to <code>/etc/init.d/named</code> namówił mnie na <code>emerge --config</code>. Odnaleźć w nim można funkcję <code>start()</code>, a w niej taką zawartość:</p>
<blockquote><p><code> 91 start() {<br />
92     ebegin "Starting ${CHROOT:+chrooted }named"<br />
93<br />
94     if [[ -n ${CHROOT} ]];<br />
95     then<br />
96         check_chroot || {<br />
97             eerror "Your chroot dir ${CHROOT} is inconsistent, please run 'emerge --config net-dns/bind' first"<br />
98             return 1<br />
99         }<br />
100         einfo "Mounting chroot dirs"<br />
101         _mount /etc/bind ${CHROOT}/etc/bind -o bind<br />
102         _mount /var/bind ${CHROOT}/var/bind -o bind<br />
103         _mount /var/log/named ${CHROOT}/var/log/named -o bind<br />
104     fi<br />
[...]<br />
113 }</code></p></blockquote>
<p>O! Jakieś <code>mount -o bind</code> (działania funkcji <code>_mount()</code> można się domyśleć). Więc zatrzymanie usługi wywoła <code>_umount()</code> i jest nadzieja, że znajdą się pliki!</p>
<p>Ufff! Udało się. Od teraz będę wykonywał kopie ważnych plików konfiguracyjnych, jeśli nie całego serwera. Przynajmniej do końca miesiąca.</p>
<p>Czemu przytrafiło mi się to teraz? Jak było wcześniej?<br />
W <code>/usr/portage/net-dns/bind/bind-9.4.3_p5.ebuild</code> mamy:</p>
<blockquote><p><code>243 pkg_config() {<br />
244     CHROOT=`sed -n 's/^[[:blank:]]\?CHROOT="\([^"]\+\)"/\1/p' /etc/conf.d/named 2&gt;/dev/null`<br />
245     EXISTS="no"<br />
246<br />
247     if [ -z "${CHROOT}" -a ! -d "/chroot/dns" ]; then<br />
248         CHROOT="/chroot/dns"<br />
249     elif [ -d ${CHROOT} ]; then<br />
250         eerror; eerror "${CHROOT:-/chroot/dns} already exists. Quitting."; eerror; EXISTS="yes"<br />
251     fi<br />
252<br />
253     if [ ! "$EXISTS" = yes ]; then<br />
254         einfo ; einfon "Setting up the chroot directory..."<br />
255         mkdir -m 700 -p ${CHROOT}<br />
256         mkdir -p ${CHROOT}/{dev,etc,var/run/named}<br />
257         chown -R named:named ${CHROOT}/var/run/named<br />
258         cp -R /etc/bind ${CHROOT}/etc/<br />
259         cp /etc/localtime ${CHROOT}/etc/localtime<br />
260         chown named:named ${CHROOT}/etc/bind/rndc.key<br />
261         cp -R /var/bind ${CHROOT}/var/<br />
262         chown -R named:named ${CHROOT}/var/</code></p></blockquote>
<p>Czyli oprócz <code>mkdir -p</code> było również <code>cp -R</code>. Zmieniło się począwszy od wersji 9.4.3_p5-r1, ale wcześniej był jeszcze rozszerzony komunikat:</p>
<blockquote><p><code>291         ewarn "NOTE: As of net-dns/bind-9.4.3_p5-r1 the chroot part of the init-script got some major changes!"<br />
292         ewarn "To enable the old behaviour (without using mount) uncomment the"<br />
293         ewarn "CHROOT_NOMOUNT option in your /etc/conf.d/named config."<br />
</code></p></blockquote>
<p>Uczcie się na moich błędach i pokażcie mi swoje. Dojdziemy do doskonałości.</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2010/09/some-things-might-become-overridden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>query (cache) &#8216;./NS/IN&#8217; denied</title>
		<link>http://guzik.net.pl/blog/2009/02/query-cache-nsin-denied/</link>
		<comments>http://guzik.net.pl/blog/2009/02/query-cache-nsin-denied/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 11:21:51 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BIND]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=525</guid>
		<description><![CDATA[Zaczęło się 6 stycznia (wcześniej tylko moje próby i IANA &#8211; patrz. Zamieszanie z DNS). W logach w pełni wygląda to tak: Jan  6 16:16:17 dns named[2420]: client 63.217.28.226#59110: query (cache) './NS/IN' denied Jan  6 16:16:23 dns named[2420]: client 63.217.28.226#5401: query (cache) './NS/IN' denied Jan  6 16:16:29 dns named[2420]: client 63.217.28.226#42293: query (cache) './NS/IN' denied [...]]]></description>
			<content:encoded><![CDATA[<p>Zaczęło się 6 stycznia (wcześniej tylko moje próby i IANA &#8211; patrz. <a title="http://guzik.net.pl/blog/2008/08/zamieszanie-z-dns/" href="http://guzik.net.pl/blog/2008/08/zamieszanie-z-dns/">Zamieszanie z DNS</a>). W logach w pełni wygląda to tak:</p>
<blockquote><p><code>Jan  6 16:16:17 dns named[2420]: client 63.217.28.226#59110: query (cache) './NS/IN' denied<br />
Jan  6 16:16:23 dns named[2420]: client 63.217.28.226#5401: query (cache) './NS/IN' denied<br />
Jan  6 16:16:29 dns named[2420]: client 63.217.28.226#42293: query (cache) './NS/IN' denied<br />
[...]<br />
Feb  5 11:01:33 dns named[2422]: client 89.149.221.182#33910: query (cache) './NS/IN' denied<br />
Feb  5 11:01:37 dns named[2422]: client 89.149.221.182#5760: query (cache) './NS/IN' denied<br />
Feb  5 11:01:39 dns named[2422]: client 89.149.221.182#39304: query (cache) './NS/IN' denied</code></p></blockquote>
<p>Patrząc po ilości (1&#8217;174&#8217;755 sztuk w tym okresie z ok. 30 źródeł), nie nazwał bym tego atakiem typu DOS, a tym bardziej DDOS. Roboty próbują truć masowo, ale na razie nie blokuję tego w żaden sposób.</p>
<p>O odczuciach innych można poczytać tutaj:</p>
<ul>
<li> <a title="http://www.uno-code.com/?q=node/160" href="http://www.uno-code.com/?q=node/160">Potential DNS DDoS (query (cache) &#8216;./NS/IN&#8217; denied) | Uno-Code</a></li>
<li> <a title="http://www.dshield.org/diary.html?storyid=5773" href="http://www.dshield.org/diary.html?storyid=5773">DShield: DNS DDoS &#8211; let&#8217;s use a long term solution</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2009/02/query-cache-nsin-denied/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zamieszanie z DNS</title>
		<link>http://guzik.net.pl/blog/2008/08/zamieszanie-z-dns/</link>
		<comments>http://guzik.net.pl/blog/2008/08/zamieszanie-z-dns/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 22:40:46 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[cache poisoning]]></category>
		<category><![CDATA[Dan Kaminski]]></category>
		<category><![CDATA[djbdns]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[IANA]]></category>
		<category><![CDATA[ICANN]]></category>
		<category><![CDATA[PowerDNS]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=134</guid>
		<description><![CDATA[Zrobiło się ostatnio trochę szumu wokół DNS za sprawą Dana Kaminskiego. Więcej, prócz wpisów w jego blogu, można poczytać tutaj: NASK &#8211; Analiza problemu DNS cache poisoning w polskim Internecie IANA &#8211; Frequently Asked Questions on Cache Poisoning and Cross Pollination US &#8211; CERT &#8211; Multiple DNS implementations vulnerable to cache poisoning CERT Polska &#8211; [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_140" class="wp-caption alignleft" style="width: 160px"><a href="http://guzik.net.pl/blog/wp-content/uploads/2008/08/bskcompl.png"><img class="size-thumbnail wp-image-140" title="bsk.com.pl" src="http://guzik.net.pl/blog/wp-content/uploads/2008/08/bskcompl1-150x150.png" alt="bsk.com.pl" width="150" height="150" /></a><p class="wp-caption-text">bsk.com.pl</p></div>
<p>Zrobiło się ostatnio trochę szumu wokół DNS za sprawą <a title="http://www.doxpara.com/" href="http://www.doxpara.com/">Dana Kaminskiego</a>. Więcej, prócz wpisów w jego blogu, można poczytać tutaj:</p>
<ul>
<li><a title="http://www.dns.pl/cachepoisoning.html" href="http://www.dns.pl/cachepoisoning.html">NASK &#8211; Analiza problemu DNS cache poisoning w polskim Internecie</a></li>
<li><a title="http://www.iana.org/reports/2008/cross-pollination-faq.html" href="http://www.iana.org/reports/2008/cross-pollination-faq.html">IANA &#8211; Frequently Asked Questions on Cache Poisoning and Cross Pollination</a></li>
<div id="attachment_142" class="wp-caption alignright" style="width: 160px"><a href="http://guzik.net.pl/blog/wp-content/uploads/2008/08/wppl2.png"><img class="size-thumbnail wp-image-142" title="wp.pl" src="http://guzik.net.pl/blog/wp-content/uploads/2008/08/wppl2-150x150.png" alt="wp.pl" width="150" height="150" /></a><p class="wp-caption-text">wp.pl</p></div>
<li><a title="http://www.kb.cert.org/vuls/id/800113" href="http://www.kb.cert.org/vuls/id/800113">US &#8211; CERT &#8211; Multiple DNS implementations vulnerable to cache poisoning</a></li>
<li><a title="http://cert.pl/index2.html?action=show_news_more&amp;nid=862" href="http://cert.pl/index2.html?action=show_news_more&amp;nid=862">CERT Polska &#8211; Błędy w DNS dotyczące większości producentów</a></li>
</ul>
<p><a title="http://iana.org/" href="http://iana.org/">IANA</a> udostępniła <a title="http://recursive.iana.org/" href="http://recursive.iana.org/">narzędzie</a>, dzięki któremu możemy sprawdzić czy jesteśmy bezpieczni czy nie. Technicznie ten test wygląda mniej więcej tak (linie nieparzyste pytania, linie parzyste &#8211; odpowiedzi):</p>
<blockquote>
<pre>1: [udp sum ok] 59142 [1au] NS? DOMAIN.TLD. ar: . OPT UDPsize=4096 (40) (DF) (ttl
    52, id 0, len 68)
2: 59142*- q: NS? DOMAIN.TLD. 2/0/3 DOMAIN.TLD. NS[|domain] (ttl 63, id 45373, len
    154)
3: [udp sum ok] 29369+ SOA? iana.org. (26) (DF) (ttl 52, id 0, len 54)
4: [udp sum ok] 29369 ServFail- q: SOA? iana.org. 0/0/0 (26) (ttl 63, id 0, len 54)
5: [udp sum ok] 62488+ SOA? iana.org. (26) (DF) (ttl 52, id 0, len 54)
6: 62488- q: SOA? iana.org. 0/5/3 ns: iana.org. NS[|domain] (ttl 63, id 45375, len
    218)</pre>
</blockquote>
<p>Konwersacja z moim pierwszym serwerem (linie 3 i 4) kończy się odpowiedzią <em>SERVFAIL</em>, z drugim (linie 5 i 6) &#8211; <em>iana.org has no SOA record</em>. Pierwszy to bind 9.3.5, drugi &#8211; PowerDNS 2.9.21. Oba mają wyłączone rekursywne zapytania. W przypadku bind:</p>
<blockquote>
<pre>allow-recursion { 127.0.0.1; };</pre>
</blockquote>
<p>PowerDNS to:</p>
<blockquote>
<pre>allow-recursion=127.0.0.1/8</pre>
</blockquote>
<p>Wobec czego możemy się pocieszyć komunikatem:</p>
<div style="background-color: #393; border: 1px solid #ded;">
<h2>Safe.</h2>
<p>The servers tested for DOMAIN.TLD are not vulnerable to cache poisoning. </p>
<p><b></b></div>
<p>djbdns (w wersji 1.05) nie odpowiada w ogóle na takie &#8216;zaczepki&#8217; i IANA uznaje, że <em>Appears to not respond to recursive lookups</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2008/08/zamieszanie-z-dns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BIND&#8217;s views</title>
		<link>http://guzik.net.pl/blog/2008/07/binds-views/</link>
		<comments>http://guzik.net.pl/blog/2008/07/binds-views/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 06:25:47 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[PowerDNS]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=18</guid>
		<description><![CDATA[Swego czasu opracowałem metodę zabezpieczenia łącz (w sensie dostępu do sieci / hosta, gdy protokoły takie jak BGP są niedostępne) za pomocą kierowania ruchem i odpowiedniej konfiguracji DNS. Na widokach w BIND działało to bardzo dobrze. Konfiguracja sprowadza się do podania warunków, dla których dane strefy będą przetwarzane. Mając do dyspozycji match-clients i match-destinations możemy [...]]]></description>
			<content:encoded><![CDATA[<p>Swego czasu opracowałem metodę zabezpieczenia łącz (w sensie dostępu do sieci / hosta, gdy protokoły takie jak BGP są niedostępne) za pomocą kierowania ruchem i odpowiedniej konfiguracji DNS.</p>
<p>Na widokach w <a title="http://www.isc.org/sw/bind/" href="http://www.isc.org/sw/bind/">BIND</a> działało to bardzo dobrze. <a title="http://www.isc.org/sw/bind/arm95/Bv9ARM-all.html#view_statement_grammar" href="http://www.isc.org/sw/bind/arm95/Bv9ARM-all.html#view_statement_grammar">Konfiguracja</a> sprowadza się do podania warunków, dla których dane strefy będą przetwarzane. Mając do dyspozycji <em>match-clients</em> i <em>match-destinations</em> możemy naprawdę wiele zrobić. Skorzystanie z tej funkcjonalności oszczędzi nam uruchamiania drugiego serwera nazw np. dla sieci lokalnej czy dla konkretnego łącza.</p>
<p>Z czasem zacząłem wykorzystywać <a title="http://www.powerdns.com/" href="http://www.powerdns.com/">PowerDNS</a> (z racji świetnie działającej natywnej obsługi baz danych) i właśnie funkcjonalności widoków mi brakuje. Co prawda można mieć jedną bazę z dodatkową kolumną <em>content</em>, ale i tak trzeba uruchomić dwa serwery. Nadzieją mogło by być wykorzystanie adresu IP klienta (odpowiedni warunek w zapytaniu SQL), ale to niemożliwe sądząc po (niejednej) wypowiedzi <em>developerów</em> na liście dyskusyjnej PowerDNS.</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2008/07/binds-views/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

