<?xml version="1.0" encoding="iso-8859-1"?>
        <?xml-stylesheet type="text/css" href="http://www.miek.nl/blog/"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title>Filed under: dutch | Miek</title>
<atom:link href="http://www.miek.nl/blog/archives/dutch/index-rss.xml" rel="self" type="application/rss+xml" />
<link>http://www.miek.nl/blog</link>
<description>Thoughts on (technical) stuff</description>
<dc:language>en-us</dc:language>
<dc:creator>Miek Gieben</dc:creator>
<dc:date>2013-03-26T22:21:51+01:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />

<item>
<link>http://www.miek.nl/blog/archives/2012/10/31/dnssec_storing_28_oktober_2012/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2012/10/31/dnssec_storing_28_oktober_2012/index.html</guid>
<title>DNSSEC Storing 28 oktober 2012</title>
<dc:date>2012-10-31T12:39:41+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dutch, dns(sec)</dc:subject>
<description><![CDATA[<h1 id="samenvatting">Samenvatting</h1>
<p>In de loop van zondag 28 oktober is er een foutsituatie ontstaan bij het<br />publiceren van een nieuwe ZSK (met key tag: 20331). Deze nieuwe ZSK was<br />namelijk nog niet gepubliceerd in het DNS, terwijl de door SIDN gebruikte<br />software (OpenDNSSEC) ervan uitging dat dit wel het geval was.</p>
<p>Als gevolg hiervan was de zogenaamde 'pre-publication'-tijd van de nieuwe ZSK<br />te kort. Toen er RRSIG's in de .nl-zone verschenen die waren gemaakt met de<br />nieuwe ZSK, was de TTL van de oude DNSKEY RRset nog niet verstreken, waardoor<br />deze nog werd gebruikt door validerende resolvers, met DNSSEC validatiefouten<br />tot gevolg. Deze validatie problemen ontstonden ongeveer om 20:45 u.</p>
<h2 id="getroffen">Getroffen:</h2>
<p>Zij die gebruik maken van DNSSEC-validatie.</p>
<h2 id="oplossing">Oplossing:</h2>
<p>Na het verstrijken van de TTL (maximaal 2 uur), of het anderszins verversen van de cache (bijvoorbeeld door een herstart van de resolver), werd het juiste sleutelmateriaal gebruikt en werkte validatie weer.</p>
<h1 id="oorzaken">Oorzaken</h1>
<p>SIDN heeft de samenloop van omstandigheden onderzocht, de volgende factoren speelden een rol:</p>
<ul>
<li>Een fout (vastloper) in OpenDNSSEC, waardoor de zonefile-publicatie stil kwam te liggen.</li>
<li>Discrepantie tussen de vermeende situatie volgens OpenDNSSEC en de werkelijke situatie in het DNS, met als gevolg een te korte pre-publish periode van de nieuwe ZSK.</li>
</ul>
<p>SIDN zal maatregelen treffen om herhaling te voorkomen.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2011/05/15/nluug_go_presentatie/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2011/05/15/nluug_go_presentatie/index.html</guid>
<title>NLUUG Go presentatie</title>
<dc:date>2011-05-15T10:17:37+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dutch, go</dc:subject>
<description><![CDATA[<p>Dit <a href="http://www.miek.nl/downloads/2011/NLUUG-Go.pdf">zijn de slides</a> van de presentatie 
die ik afgelopen donderdag heb gegeven op de 
<a href="http://www.nluug.nl/activiteiten/events/vj11/abstracts/ab30.html">NLUUG voorjaars
conferentie</a>.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2011/02/19/remote_backups_met_sshfs/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2011/02/19/remote_backups_met_sshfs/index.html</guid>
<title>Remote backups met sshfs</title>
<dc:date>2011-02-19T18:41:44+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dutch, linux</dc:subject>
<description><![CDATA[<p>In de buurt waar ik woon heeft iedereen een 100Mb/s glasvezel
verbinding en dat biedt leuke mogelijkheden, waarvan ik
er eentje wil uitlichten, namelijk remote backups.</p>

<p>Nu moet je altijd backups maken, maar als er bijvoorbeeld
wordt ingebroken (of erger: bijvoorbeeld brand) dan ben
je waarschijnlijk je server kwijt en ook je mooie USB backup
disk die er naast lag. </p>

<p>De backups die we hier inrichten gaan we maken met
<a href="http://fuse.sourceforge.net/sshfs.html">sshfs</a>
een filesysteem boven op <code>ssh</code>. Je buurtgenoot hoeft
alleen maar <code>ssh</code> "open" te zetten en kun je zijn disks
benaderen alsof je ze in je eigen computer zitten. Verder gebruik
ik <code>rdup</code> om de backup te maken, maar (natuurlijk) vrij om je eigen oplossing
te kiezen.</p>

<p>Om alles met <code>rdup</code> perfect te laten werken
heb je vrij nieuwe packages nodig.
Die heb ik klaar
staan <a href="http://www.miek.nl/blog/archives/2011/02/19/openssh_5_7_for_ubuntu_10_10/index.html">op dit adres</a>.
Ook heb je een <code>sshfs</code> nodig die hardlinks snapt, zie <a href="http://www.miek.nl/blog/archives/2011/02/19/hardlink_support_in_sshfs/index.html">daarvoor
hier</a>.</p>

<blockquote>
  <p>In principe zou je ook met huidige packages in Ubuntu ook aan de slag moeten kunnen.</p>
</blockquote>

<p>Aan dit verhaal zitten verder twee kanten:</p>

<ol>
<li>de server kant; daar waar de OpenSSH server draait en de diskruimte bestaat voor
de backup, en;</li>
<li>de client kant, waar diegene zit die een backup wilt maken.</li>
</ol>

<p>Om een remote backup te laten werken moet je volgende doen aan de server kant:</p>

<ul>
<li><code>ssh</code> instellen;</li>
<li>backup gebruiker aanmaken;</li>
<li><code>sftp</code> instellen, dit staat voor <em>s</em>ecure <em>ftp</em> en is een onderdeel van ssh;</li>
</ul>

<p>Aan de client kant doe je dit:</p>

<ul>
<li><code>sshfs</code> installeren en remote disk mounten;</li>
<li><code>rdup</code> installeren of een andere backup tool;</li>
<li>backup maken.</li>
</ul>

<h1>Server</h1>

<h2>ssh instellen</h2>

<p>Installeer OpenSSH (liefst de niewste, maar ouder mag ook), op Ubuntu:</p>

<pre><code>sudo apt-get install openssh-server openssh-client
</code></pre>

<p>Als het goed is wordt de server ook automatisch gestart en zou je op je 
eigen server moeten kunnen inloggen met:</p>

<pre><code>ssh localhost
</code></pre>

<h2>backup gebruiker aanmaken</h2>

<p>Het is handig om een aparte gebruiker aan te maken waarmee de backups
worden gemaakt. We doen dat als volgt:</p>

<pre><code>sudo adduser backup
</code></pre>

<p>Je moet dan een aantal vragen beantwoorden en een wachtwoord instellen.
Als dit gelukt is gaan we een nieuwe gebruikers groep maken en de 
gebruiker <code>backup</code> daar lid van maken.</p>

<pre><code>sudo addgroup sftp
</code></pre>

<p>Gebruiker lid van de groep maken:</p>

<pre><code>sudo addgroup backup sftp
</code></pre>

<h2>sftp instellen</h2>

<p>In de file <code>/etc/ssh/sshd_config</code> staat onderaan iets genoemd
over:</p>

<pre><code>Subsystem sftp /usr/lib/openssh/sftp-server
</code></pre>

<p>Dit moet je weghalen en vervangen door:</p>

<pre><code>Subsystem sftp internal-sftp
Match group sftp
         ChrootDirectory /mnt/backup/%u
         X11Forwarding no
         AllowTcpForwarding no
         ForceCommand internal-sftp
</code></pre>

<p>Let op wat je bij <code>ChrootDirectory</code> invult, hier staan de instellingen
die <em>ik</em> gebruik. Bij jou moet daar de plek staan waar jij wilt dat
gebruiker <code>backup</code> zijn backups heen schrijft. Let er ook op dat de gebruiker
<code>backup</code> <em>schrijfrechten</em> heeft in die directory. 
(De <code>%u</code> wordt door de ssh server geexpandeerd naar de gebruikers naam.)</p>

<p>De instellingen van hierboven zeggen zoveel als: Alleen gebruikers
in de <code>sftp</code> groep mogen gebruik maken van <code>sftp</code> en ze komen dan
uit in <code>/mnt/backup/&lt;gebruikersnaam&gt;</code>.</p>

<h1>Client</h1>

<p>Op de client kant heb je alleen <code>sshfs</code> nodig en verder "iets" om backups
mee te maken. Ik laat hier kort <code>rdup</code> zien, maar er zijn natuurlijk zat
andere oplossingen.</p>

<h2>sshfs installeren</h2>

<p>Kan weer makkelijk met <code>apt-get</code>:</p>

<pre><code>sudo apt-get install sshfs
</code></pre>

<p>Daarna kun je met <code>sshfs</code> kijken of e.a. ook echt werkt. Hier
mounten we de remote "disk" via <code>sshfs</code> op de locale directory <code>/mijn/backup</code>:</p>

<pre><code>sshfs backup@remote.org: /mijn/backup
</code></pre>

<p>Na het ingeven van je wachtwoord kun je nu <code>/mijn/backup</code> benaderen als lokale
disk.</p>

<p>Eventueel kun je dit ook opnemen in de <code>/etc/fstab</code>:</p>

<pre><code>sshfs#backup@remote.org:    /mijn/backup/ fuse comment=sshfs,noauto,reconnect,password_stdin 0 0
</code></pre>

<p>Nu kun gewoon zeggen:</p>

<pre><code>sudo mount /mijn/backup
</code></pre>

<p>en wordt het remote systeem gemount via sshfs. </p>

<h2>rdup</h2>

<p>Ik wil niet dat mijn data op een computer komt staan die niet van mij is zonder encryptie. Dus
gebruik ik <code>rdup</code> met encryptie en voor de aardigheid <code>gzip</code> ik ook alle bestanden zodat
er iets minder ruimte wordt ingenomen. Ik zal het hier heel kort houden, want misschien
wil je wel gewoon <code>rsync</code> gebruiken.</p>

<p>Een backup van mijn home-directory is als volgt te maken:</p>

<pre><code>sudo rdup-simple -z -k /etc/rdup/sleutel /home/miekg /mijn/backup
</code></pre>

<p><a href="http://miek.nl/projects/rdup/">Klik hier</a> voor meer informatie over <code>rdup</code>.</p>

<p>Een andere manier zou kunnen zijn:</p>

<pre><code>sudo cp -rap /home/miekg /mijn/backup
</code></pre>

<p>Maar deze kopie is niet gecomprimeerd, noch geencrypt.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2010/09/04/android_2_2_froyo_op_je_foon/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2010/09/04/android_2_2_froyo_op_je_foon/index.html</guid>
<title>Android 2.2 (Froyo) op je foon</title>
<dc:date>2010-09-04T20:43:10+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dutch, android</dc:subject>
<description><![CDATA[<p>Deze <a href="http://forum.xda-developers.com/showthread.php?t=764530">excellente howto</a> heeft
ervoor gezorgd dat ik nu Android 2.2 (<em>nicknamed</em> Froyo) op mijn oude
HTC magic draai. Ik hoef dus nog lang geen nieuwe telefoon. Het upgraden
zelf is met de ROM van <a href="http://www.cyanogenmod.com/">CyanogenMod</a> gedaan.</p>

<p>Een Nederlandse howto kun je bij
<a href="http://www.techzine.nl/tutorials/364/android-froyo-2-2-installeren-op-een-htc-magic.html">techzine.nl</a>
vinden. Maar het <em>rooten</em> van je phone is daar wat omslachtiger
omschreven dan hier. </p>

<blockquote>
  <p>Het flashen van je telefoon kan deze dusdanig beschadigen dat 'ie
kapot is. Hij is dan zogenaamd <em>gebricked</em> en alleen nog maar nuttig
als <em>paperweight</em>. Je hebt er dan dus <strong>helemaal</strong> niks meer aan! </p>
</blockquote>

<p>Na deze waarschuwing wil je natuurlijk <em>ook</em> naar Froyo upgraden. De stappen zijn als volgt:</p>

<ul>
<li>Root je phone;</li>
<li><em>Recovery</em> installeren (soort bootloader);</li>
<li>Booten naar <em>recovery</em>;</li>
<li>Je telefoon <em>flashen</em>;</li>
<li>Klaar!</li>
</ul>

<p>In detail komt dat op het volgende neer. Eerst de voorbereidende stappen:</p>

<ol>
<li><p>In de Android Market zoek en installeer:</p></li>
<li><p><code>AppInstaller</code> van modmymobile;</p></li>
<li><p><code>ROM Manager</code>.</p></li>
<li><p>Download <code>universalandroot</code> van
<a href="http://blog.23corner.com/tag/universalandroot/">blog.23corner.com/tag/universalandroot/</a>.
Dit is een <a href="http://bit.ly/aa4jxJ">directe link</a>;</p></li>
<li><p>Download de juiste "Stable Mod" ROM voor je telefoon van
<a href="http://forum.cyanogenmod.com/files/">Cyanongenmod/files</a>.</p></li>
<li><p>Download "Google Addon pack" voor jouw telefoon. Hier zitten de
standaard Google Apps in.</p></li>
<li><p>Zet de <code>universalandroot</code>, "Google Addon pack" en de ROM in de root
directory op de SD kaart van je telefoon.</p></li>
</ol>

<h2>Rooten en flashen</h2>

<ol>
<li><p>Open <code>AppInstaller</code> en laat de <code>androot.apk</code> vinden op je SD kaart.
Selecteer die <code>.apk</code> en laat hem installeren.</p></li>
<li><p>Open dan <code>Universal AndRoot</code>. Die moet het type van je telefoon herkennen, zo
niet, dan zo ik nu maar ophouden. Herkent die je telefoon klik dan op
'root'. Als dat lukt, ben je eindelijk super user op je <em>eigen</em>
telefoon.</p></li>
</ol>

<p>Nu een custom ROM installeren:</p>

<ol>
<li><p>Open <code>ROM Manager</code> en installeer <em>Recovery</em>. Wat ik er van begrijp is
dit een soort custom boot loader. Met deze loader kun je dan weer een
ROM in je telefoon schieten. Ik heb <code>ClockworkMod Recovery</code> gebruikt en
bij mij werkte dat goed. Enige moeilijke was ontdekken welke telefoon ik
nu precies had.</p></li>
<li><p>Als je een recovery hebt geinstalleerd, selecteer dan "Backup Current ROM". Dit is mij
niet gelukt, maar toen dacht dat ik mijn oude ROM toch nooit meer nodig
zou hebben. (Gelukkig ging het flashen goed).</p></li>
<li><p>Daarna kies je voor "Reboot Into Recovery". Dit lukte bij mij niet
meteen goed, maar na een aantal keer de battery eruit gehaald te hebben,
zat ik eindelijk de <em>recovery</em>. Krijg je ipv de <em>Recovery</em> een geel
uitroep teken te zien, dan is er iets mis gegaan met de installatie
hiervan. Reboot dan je telefoon weer een keer en ga terug naar stap 1.
Mocht je niet in de <em>recovery</em> eindigen, dan kun je ook nog proberen
om te rebooten en dan de "Home" en de "Power" toets tegelijk ingedrukt
te houden.</p></li>
<li><p>In de <em>recovery</em> selecteer:</p></li>
<li><p>"wipe data/factory reset" en dan;</p></li>
<li><p>"wipe cache partition". Dit een belangrijke stap, als je dit niet
doet kun je in een reboot-loop terecht komen en is je telefoon stuk.</p></li>
<li><p>"install zip from sdcard". Navigeer naar je ROM op je SD en laat je
telefoon ermee flashen.</p></li>
<li><p>"reboot". Reboot je telefoon. Dit kan wat langer duren na  zo'n firmware upgrade. </p>

<blockquote>
  <p>Als de stap lukt. Gefeliciteerd: Je draait nu CyanogenMod 6.0</p>

<p>Als het mislukt. Gefelictieerd: Je telefoon is nu kapot. (Misschien helpt nog een keer flashen).</p>
</blockquote></li>
<li><p>Je kunt nu ook via de <em>recovery</em> een <code>nandroid</code> backup maken;</p></li>
<li><p>Reboot naar de <em>recovery</em> en installeer de "Google Addon pack";</p></li>
</ol>

<h2>Resterende issues</h2>

<p>Mijn Nederlands woordenboek deed het niet goed, maar <a href="http://blog.cone.be/2010/08/20/creating-dutch-dictionary-for-android/">gelukkig is dat ook opgelost</a>. 
Installeer <a href="http://www.miek.nl/downloads/2010/LatinIME.apk">deze .apk</a>,
met:</p>

<pre><code>adb install -r LatinIME.apk
</code></pre>

<p>Je kunt ook nog <code>Swype</code> installeren en waarschijnlijk moet je de
<code>Android Market</code> nog fixen. Zie daarvoor: <a href="http://www.techzine.nl/tutorials/364/android-froyo-2-2-installeren-op-een-htc-magic.html">techzine.nl</a></p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2010/08/23/dnssec_voor_miek_nl/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2010/08/23/dnssec_voor_miek_nl/index.html</guid>
<title>DNSSEC voor miek.nl</title>
<dc:date>2010-08-23T11:35:37+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dutch, dns(sec)</dc:subject>
<description><![CDATA[<p>Aangezien gister avond (22 augustus) om 5 voor half 1 's nachts 
<a href="http://www.miek.nl/blog/archives/2010/08/23/it_is_there/index.html">de eerste gesignde versie van .NL is
gepubliceerd</a>
is het natuurlijk de hoogste tijd om
je eigen zone te signen. Je kunt vooralsnog geen secure delegatie
aanvragen, maar dat proces zit in de pijplijn bij
<a href="http://www.sidn.nl">SIDN</a>.</p>

<p>Ik ga er van uit dat je redelijk bekent bent met DNS. Deze <em>howto</em> neemt
een recent <a href="http://www.isc.org/software/bind">BIND9</a> als uitgangspunt, maar met
<a href="http://www.nlnetlabs.nl/projects/nsd/">NSD</a> kom je ook een heel
eind.</p>

<p>Er zijn een aantal stappen die je moet zetten voordat je DNSSEC aan hebt staan:</p>

<ol>
<li>Maak een sleutel paar, liefst een KSK (Key signing key) en een ZSK
(zone signing key). Dus in totaal twee sleutel paren;</li>
<li>Sign je zone met die sleutels;</li>
<li>Configureer je nameserver zodat de gesignde zone wordt geserveerd;</li>
<li>Configureer CRON zodat elke dag je zone wordt ge-resigned;</li>
<li>Test het.</li>
</ol>

<p>Deze sleutels zijn statisch. We gaan dus geen <em>key rollovers</em>
implementeren.</p>

<h2>Maak de sleutels:</h2>

<p>Sleutels maken gaat met <code>dnssec-keygen</code>, dit programma heeft nogal wat
opties. De belangrijkste zijn: <code>-a ALG</code> om het algoritme van je sleutel
te specificeren, <code>-b BITS</code>: hoe lang moet je sleutel zijn, <code>-f KSK</code>
specificeert een KSK en <code>-n ZONE</code> zegt dat er een DNS sleutel moet
worden gemaakt. Voor <a href="http://www.miek.nl">miek.nl</a>, komen we tot:</p>

<pre><code>dnssec-keygen -a RSASHA256 -b 2048 -f KSK -n ZONE miek.nl
dnssec-keygen -a RSASHA256 -b 1024 -n ZONE miek.nl
</code></pre>

<p>(Je kunt dit versnellen door <code>-r /dev/urandom</code> als optie mee te geven,
maar dan krijg je kwalitatief slechtere sleutels). Dit levert vier
files op, in mijn geval:</p>

<p><code>Kmiek.nl.+008+12051.{key,private}</code> en <code>Kmiek.nl.+008+33694.{key,private}</code></p>

<p>Het public deel van mijn KSK ziet er zo uit:</p>

<pre><code>; This is a key-signing key, keyid 33694, for miek.nl.
; Created: Wed Aug 18 14:46:09 2010
; Publish: Wed Aug 18 14:46:09 2010
; Activate: Wed Aug 18 14:46:09 2010
miek.nl. IN DNSKEY 257 3 8 AwEAAcWdjBl4W4wh/hPmNC.&lt;ingekort&gt;...V BdTRBtgHi0s=
</code></pre>

<h2>Signeer je zone</h2>

<p>Dit is de stap die je van PLAIN DNS naar DNSSEC tilt. Signeren gaat
met <code>dnssec-signzone</code>. In dit geval gebruik ik ook de <code>-S</code> optie, de
zogenaamd <em>smart signing</em>, hierbij kijkt <code>dnssec-signzone</code> naar de
commentaar regels (de regels die met <code>;</code> beginnen in de key), om te
zien welke sleutels gebruikt moeten worden. Verder hebben we de sleutels
in een aparte directory staan (<code>-K keys</code>) en moeten de gegenereerde DS
records ook apart komen (<code>-d ds</code>) (zie "DS records"), <code>-o miek.nl</code> wordt
gebruik om aan te geven dat het hier om <code>miek.nl</code> gaat.</p>

<p>Het signeren van <code>miek.nl</code> gaat uiteindelijk met:</p>

<pre><code>dnssec-signzone -K keys -d ds -o miek.nl -S miek.nl
</code></pre>

<p>Om dit te automatiseren gebruik ik een kleine <code>Makefile</code>:</p>

<pre><code>.PHONY: miek.nl.signed
KEYDIR=/etc/bind/external/keys
DSDIR=/etc/bind/external/ds
miek.nl.signed:     miek.nl
    @dnssec-signzone -N unixtime -K $(KEYDIR) -d $(DSDIR) -o $&lt; -S $&lt;
</code></pre>

<p>NB: deze <code>Makefile</code> zorgt ervoor dat er <em>altijd</em> wordt ge-resigned.</p>

<h2>Nameserver configuratie</h2>

<p>Verander in mijn geval:</p>

<pre><code>zone "miek.nl" {
type master;
file "/etc/bind/external/miek.nl";
};
</code></pre>

<p>naar</p>

<pre><code>zone "miek.nl" {
type master;
file "/etc/bind/external/miek.nl.signed";
};
</code></pre>

<p>De bedoeling is duidelijk: serveer de gesignde variant van je zone.</p>

<h2>CRON</h2>

<p>Plaats een script <code>/etc/cron.daily</code>, die zorgt voor een dagelijkse
resign:</p>

<pre><code>% cat /etc/cron.daily/dnssec

#!/bin/bash
# Resign unconditionally
( cd /etc/bind/external ; /usr/bin/make ) &amp;&amp; /usr/sbin/rndc reload
</code></pre>

<h2>Test</h2>

<p>Run het script even met de hand: <code>/etc/cron.daily/dnssec</code>:</p>

<pre><code>Fetching KSK 33694/RSASHA256 from key repository.
Fetching ZSK 12051/RSASHA256 from key repository.
Verifying the zone using the following algorithms: RSASHA256.
Zone signing complete:
Algorithm: RSASHA256: KSKs: 1 active, 0 stand-by, 0 revoked
          ZSKs: 1 active, 0 stand-by, 0 revoked
miek.nl.signed
server reload successful
</code></pre>

<p>Ziet er goed uit, nu een tweede controle:</p>

<pre><code>dig @a.miek.nl +dnssec +multiline DNSKEY miek.nl

;; ANSWER SECTION:
miek.nl.        14400 IN DNSKEY 257 3 8 (
            AwEAAcWdjBl4W4wh/hPxMDcBytmNCvEngIgB9Ut3C2+Q
            ...
            4N0t9ac/T0a0Sxba/BUX2UVPWaIVBdTRBtgHi0s=
            ) ; key id = 33694
miek.nl.        14400 IN DNSKEY 256 3 8 (
            AwEAAcNEU67LJI5GEgF9QLNqLO1SMq1EdoQ6E9f85ha0
            ...
            M335Ft9xjtXHPy7ztCbV9qZ4TVDTW/Iyg0PiwgoXVesz
            ) ; key id = 12051
</code></pre>

<p>Succes!</p>

<h2>DS records</h2>

<p>In de <code>ds</code> directory staat na het signen een <code>dsset</code> bestand:</p>

<pre><code>% cat dsset-miek.nl.
miek.nl.        IN DS 33694 8 1 8BA582C292324D256599CE72EEE6DF2A9F317AFD
miek.nl.        IN DS 33694 8 2 2C235500B09FA87BBC0981674FC31AF87D2FA4DCFE666A64BA2646F2 9651DB83
</code></pre>

<p>Deze records zijn de hash waardes van mijn KSK. Er staan twee DSen in
deze file, omdat er twee verschillende hashes
<a href="http://tools.ietf.org/search/rfc3658">SHA-1</a> (de 1 in "33694 8 1") en
<a href="http://tools.ietf.org/search/rfc4509l">SHA-256</a> (de 2 in "33694 8 2").</p>

<p>Deze DS records, of misschien maar eentje moeten bij <code>.nl</code> terecht komen, zodat
zij een secure delegatie voor <code>miek.nl</code> kunnen maken.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2010/08/14/programmeer_opdrachtje_oplossingen/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2010/08/14/programmeer_opdrachtje_oplossingen/index.html</guid>
<title>Programmeer opdrachtje: oplossing(en)</title>
<dc:date>2010-08-14T15:35:35+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dutch, go</dc:subject>
<description><![CDATA[<p>Emil was <a href="http://www.miek.nl/blog/archives/2010/08/13/programmeer_opdrachtje_in_go/index.html">gisteren</a>
wel heel <a href="http://www.miek.nl/blog/archives/2010/08/13/programmeer_opdrachtje_in_go/index.html#comment1">snel</a>.
met een mooie (korte) oplossing. Zie <a href="http://www.miek.nl/downloads/2010/emil-proc.go">hier</a> voor een lokale kopie.</p>

<p>Regel nummers kun je weghalen met: <code>sed -r 's/^ +[0-9]+//'</code></p>

<p>Mijn eigen <a href="http://www.miek.nl/downloads/2010/proc.go">oplossing</a> is
iets langer, maar ik kende <code>exec.Run</code> dan ook nog niet. Hij is wel iets
korter geworden dan verwacht, maar daarvoor heb ik een klein beetje
gesjoemeld, want ik print nu:</p>

<pre><code>PID 0 has 2 childeren: [453 612]
</code></pre>

<p>Dus met blokhaken. Dit doet <code>%v</code> in de <code>fmt.Printf</code> voor mij. </p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2010/08/13/programmeer_opdrachtje_in_go/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2010/08/13/programmeer_opdrachtje_in_go/index.html</guid>
<title>Programmeer opdracht(je) in Go</title>
<dc:date>2010-08-13T18:04:01+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dutch, go</dc:subject>
<description><![CDATA[<p>Een leuke opdracht om je handen vuil te maken met programmeren in Go.
De opdracht:</p>

<blockquote>
  <p>Schrijf een programma dat van alle processen op het systeem
uitschrijft hoeveel kinderen elke ouder (<em>parent</em>) heeft. Gebruik
het <code>ps</code> commando als volgt: <code>ps -e -opid,ppid</code>. De uitvoer van
die <code>ps</code> ziet er als volgt uit (maar dan langer):</p>

<p><code>PID  PPID COMMAND</code><br/>
<code>24497 24496 zsh</code><br/>
<code>25337 24497 ps</code><br/></p>

<p>De uitvoer van jou programma moet iets worden als:</p>

<p><code>Pid 0 has 2 children: 1 2</code><br/>
<code>Pid 20555 has 1 child: 20571</code><br/></p>

<p>Merk op: 1 kind, print dan <code>child</code>, meerdere kinderen print
dan <code>children</code>.
De uitvoer van de parent PID (PPIDs) moet gesorteerd zijn, dus
beginnend bij 0 en dan oplopend.</p>
</blockquote>

<p>Om je op weg te helpen, hier een versie in de programmeertaal Perl
(Als je Perl niet snapt, heb je nu een probleem):</p>

<pre><code>#!/usr/bin/perl -l
use strict;
use warnings;

my (%child, $pid, $parent);
my @ps=`ps -e -opid,ppid,comm`;     # Capture the ouput from `ps`
foreach (@ps[1..$#ps]) {            # Discard the header line
    ($pid, $parent, undef) = split; # Split the line, discard 'comm'
    push @{$child{$parent}}, $pid;  # Save the child PIDs on a list
}
# Walk through the sorted PPIDs
foreach (sort { $a &lt;=&gt; $b } keys %child) {  
    print "Pid ", $_, " has ", @{$child{$_}}+0, " child",  # Print them
    @{$child{$_}} == 1 ? ": " : "ren: ", "@{$child{$_}}";
}
</code></pre>

<p>De versie in Go is iets langer (zo'n 80 regels). Ik zal deze morgen
middag posten. In de tussen tijd mag je hier je tanden op stuk bijten.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2010/04/29/distro_geschiedenis/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2010/04/29/distro_geschiedenis/index.html</guid>
<title>Distro geschiedenis</title>
<dc:date>2010-04-29T20:24:23+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dutch</dc:subject>
<description><![CDATA[<p>Zit lekker in de tuin met een biertje in de hand na te denken over
welke Linux distro's ik allemaal heb gebruikt in de afgelopen 
jaren. Ik gebruik Linux sinds 1995 (kernel 1.2.8!) </p>

<ul>
<li>Begonnen met: <em>Slackware</em>. Geweldig tijd, dankzij Slackware werd
ik gedwongen om zaken echt tot de bodem uit te zoeken. Uiteindelijk
verlaten door het gehannes met <code>tgz</code> packages, <code>/usr/local</code> was
niet om <em>aan</em> te zien. Volgens mij heeft
Slackware tegenwoordig wel package management. Maar dankzij Slackware
werkt ik nu nog met VI(m). Veel Linux-nieuwelingen behelpen zich
tegenwoordig met <code>Gedit</code>, <code>Kate</code> of nog erger.</li>
<li>Daarna: <em>RedHat</em> (4.0) met <code>rpm</code>, heerlijk geen <code>tgz</code> meer :-) Totdat ik
de <code>rpm</code>-hel ontdekte. Verder vond ik naam ook verschrikkelijk:
<code>Colgate</code>, deed me toch teveel aan tandpasta denken.</li>
<li>Dus toen: <em>Debian</em>. Distro-liefde van mijn leven. Heerlijk package
management met <code>dpkg</code>, perfecte installatie tool, bus ladingen met
software. Alleen... een beetje traag met nieuwe releases.</li>
<li><em>Ubuntu</em>. Alle voordelen van Debian plus kortere release periodes. 
Ook was Ubuntu iets gebruikers vriendelijker dan Debian toen der 
tijd.</li>
</ul>

<blockquote>
  <p>Dus nu is alles bij mij thuis Ubuntu.</p>
</blockquote>

<p>Ook nog wel eens met FreeBSD gespeeld (pas met de installatie
van de GNU tools werd dat weer een beetje bruikbaar) en korte tijd
Fedora op mijn laptop gehad... gebruik van LVM was leuk, maar daarna
gewoon weer Ubuntu erop gezet.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2010/03/16/backups_met_rdup/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2010/03/16/backups_met_rdup/index.html</guid>
<title>Backups met rdup</title>
<dc:date>2010-03-16T18:54:49+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> rdup, dutch</dc:subject>
<description><![CDATA[<p>Dit is een Nederlandstalige <em>howto</em> over hoe je backups kunt maken
met <a href="http://www.miek.nl/projects/rdup">rdup</a> &mdash; waarbij gezegd
moet worden dat ik de auteur van <code>rdup</code> ben. <code>rdup</code> is geen <em>point</em>
en <em>click</em> applicatie, 't is bedoelt als een powertool voor mensen die
(meer) controle willen over hun backups.</p>

<p>Wat is <code>rdup</code>?</p>

<blockquote>
  <p><code>rdup</code> is een platform voor backups. Het genereert een lijst van files die moeten
worden gebackupped. Verder levert het de tools om deze lijst te verwerken.
Het delegeert encryptie, compressie, transport en format-conversie naar andere 
programmas op een echte Unix manier.</p>

<p><a href="http://www.nicehacks.org/archive/rdup">nicehacks.org</a></p>
</blockquote>

<p>Of met andere woorden: </p>

<blockquote>
  <p><code>rdup</code> is de eerste backup tool die geen backups maakt!</p>
</blockquote>

<p>Eerst een (semi)waarschuwing, als je "gewoon" je data van machine A naar
B wilt kopieren en verder niks geavanceerders nodig hebt (encryptie,
compressie of <em>whatever</em>), dan wil je waarschijnlijk
<a href="http://samba.anu.edu.au/rsync/">rsync</a> of <code>rsnapshot</code> gaan gebruiken. </p>

<p>Goed, als je nog leest, dan wil je waarschijnlijk meer geavanceerde
backups maken dan je tot nu toe hebt gaan. Met <code>rdup</code> kun je:</p>

<ul>
<li>alle bestanden laten converteren, denk aan encryptie, maar elk Unix
filter kan hiervoor gebruikt worden (rev, sort, grep, gzip, etc.);</li>
<li>pad encryptie, oftewel <code>/home/miekg</code> wordt iets als
<code>/Xyfgs==/maAXX==</code> in je backup;</li>
<li>remote storage; bewaar je backup offsite;</li>
<li>verschillende output formaten: tar, pax of files op disk.</li>
</ul>

<p>In dit artikeltje wil ik het hebben over:</p>

<ul>
<li>Installatie;</li>
<li>Backups met <code>rdup-simple</code>;</li>
<li>Remote backup;</li>
<li>Restore.</li>
</ul>

<h1>Installatie</h1>

<p>We gaan hier <code>rdup</code> zelf even compileren, daarvoor heb je wel wat
extra pakketten nodig.  Op een Debian/Ubuntu machine:</p>

<pre><code># apt-get install libglib2.0-0 libglib2.0-dev libpcre3-dev libpcre3 \
libarchive-dev libarchive1 mcrypt automake autoconf gcc libc6-dev
</code></pre>

<p>Dan <code>rdup</code> downloaden vanaf
<a href="http://www.miek.nl/projects/rdup/rdup.tar.bz2">miek.nl/projects/rdup/rdup.tar.bz2</a>.
Je krijgt dan automatische de laatste versie, nu <code>rdup-1.1.2</code>. Nu
uitpakken, compileren en installeren:</p>

<pre><code>$ tar xvf rdup-1.1.2.tar.bz2
$ cd rdup-1.1.2
$ ./configure &amp;&amp; make
# make install
</code></pre>

<p>Als alles goed gegaan is heb je nu rdup geinstalleerd in <code>/usr/local</code>,
en zou <code>/usr/local/bin/rdup -V</code> moeten werken en:</p>

<pre><code>rdup 1.1.2
</code></pre>

<p>weer geven. <code>rdup</code> zit ook in de meeste distributies, maar dan is 
je installatie niet altijd up to date en er zijn de laatste tijd nogal
wat wijzingen geweest. Je kunt ook het GIT repository uit checken,
zie daarvoor <a href="http://www.miek.nl/projects/rdup/">miek.nl/projects/rdup</a>.</p>

<h1>Backups maken</h1>

<p><code>rdup</code> bestaat uit een 3-tal commando's: </p>

<ul>
<li><code>rdup</code>: dit zoekt uit wat er gebackupped moet worden;</li>
<li><code>rdup-tr</code>: transformeer rdup output naar iets anders (tar, pax, ...).
In deze howto zullen we hiermee vooralsnog weinig doen;</li>
<li><code>rdup-up</code>: update een bestaande directory met een nieuwe backup.</li>
</ul>

<p>Verder zit er een hulp script dat een aantal zaken makkelijker <em>kan</em>
maken, dit script heet <code>rdup-simple</code> en is een wrapper rond de drie
genoemde commando's. Het werkt als volgt:</p>

<pre><code>$ /usr/local/bin/rdup-simple ~ /backup/
</code></pre>

<p>Maakt een backup van je homedir (<code>~</code>) naar <code>/backup/</code> waar <code>rdup-simple</code>
een datum structuur aanmaakt, je krijgt dus iets te zien als 201003/15
als je op 15 maart 2010 een backup maakt. </p>

<p>Met de <code>-z</code> vlag van <code>rdup-simple</code> wordt de hele backup gezipped. Met
<code>-k KEYFILE</code> worden alle files gecodeerd met de sleutel die in de
file <code>KEYFILE</code> staat. Deze vlaggen kunnen ook gecombineerd worden:</p>

<pre><code>$ echo "mijn sleutel" &gt; KEY
$ /usr/local/bin/rdup-simple -z -k KEY ~ /backup
</code></pre>

<p>geeft je een gecomprimeerde <em>en</em> gecodeerde backup in <code>/backup</code>:</p>

<pre><code> $ file /backup/201003/15/home/miekg/bin/cgo
 /backup/201003/15/home/miekg/bin/cgo: mcrypt 2.5 encrypted
 data, algorithm: rijndael-128, keysize: 32 bytes, mode: cbc,
</code></pre>

<p>Inderdaad gecodeerd. Ook maar even controleren of het gzipped is. Eerst
decoderen:</p>

<pre><code> $ mcrypt -d -f KEY &lt; /backup/201003/15/home/miekg/bin/cgo &gt; /tmp/cgo.plain 
 $ file /tmp/cgo.plain  
 /tmp/cgo.plain: gzip compressed data, from Unix, last modified: Sun Feb  7 12:03:36 2010
</code></pre>

<p>Ja, die is dus ook gezipped; <code>rdup-simple</code> zal altijd eerst comprimeren
en dan coderen.</p>

<h1>Going places</h1>

<p>Als je gewoon lokaal een backup maakt die niet gecodeerd is, kun
je net zo goed <code>rsync</code> of <code>rsnapshot</code> gebruiken. Het wordt pas
leuk als je <em>jouw</em> backup bij iemand anders wilt neerzetten en 
dan natuurlijk gecodeerd <em>en</em> eventueel ook met pad-encryptie.
Deze functionaliteit is ook in <code>rdup-simple</code> ingebouwd.</p>

<p>Met:</p>

<pre><code>$ rdup-simple ~ ssh://user@remotehost/backup/mijnhost
</code></pre>

<p>stuur je een backup van je home directory naar remotehost in
de directory <code>/backup/mijnhost</code>. Die backup staat daar zonder
encryptie en dat kan natuurlijk niet, dus:</p>

<pre><code>$ echo "mijn geheime sleutel" &gt; KEY  # voor de file encryptie
$ echo "pad sleutel12345" &gt; PADKEY   # pad encryptie, precies 16 lang
$ rdup-simple -z -k KEY -X PADKEY ~ \
ssh://user@remotehost/backup/encryptedhost
</code></pre>

<p>Nu krijgen we dus een backup die gecodeerd is plus waarin elk
pad gecodeerd is <em>en</em> waarin de files gecomprimeerd zijn. Dit
is dus absoluut niet te lezen voor buitenstaanders, en ook
niet meer voor jezelf als de encryptie sleutels kwijt raakt! De
backup ziet er dan ongeveer zo uit:</p>

<pre><code>$ ls -Rl /backup/encryptedhost
/backup/encryptedhost/201003/16:
drwxr-xr-x 3 miekg miekg 4.0K Mar 16 11:29 MaSchL_1t1U6LCJMQ5OdKg\=\=/
/backup/encryptedhost/201003/16/MaSchL_1t1U6LCJMQ5OdKg==:
-rwxr-xr-x 1 miekg miekg  397 Feb 20  2009 0Z0qU5amjVCNA0oadhW3Uw\=\=*
-rwxr-xr-x 2 miekg miekg 1.3K Feb 20  2009 2FFibrYPg_uAkEuN3Ff0tg\=\=*
-rwxr-xr-x 1 miekg miekg  557 Apr 13  2009 doxnpTxs3ImH__swNVZLMeSigknQ7JiWlJYYGu54Foo\=*
lrwxrwxrwx 1 miekg miekg   24 Mar 16 11:29 iZgUeeB4vURP7wIST_JXlw\=\= -&gt; 2FFibrYPg_uAkEuN3Ff0tg\=\=*
</code></pre>

<p>Dat die laatste file is een symlink is, is zo'n beetje het enige dat te
onderscheiden is.</p>

<h1>Terug zetten backup</h1>

<p>Ik geloof in het <a href="http://nl.wikipedia.org/wiki/KISS-principe">KISS</a>
principe en dus maakt <code>rdup-simple</code> alleen maar backups, er zit
zelfs geen support in om oude backups op te ruimen, want daar hebben
we al een andere tool voor (<code>rm -rf</code>). Het terug zetten van een
backup is feitelijk een omgekeerde backup maken. We grijpen 
dan terug op de <code>rdup</code> commando's. </p>

<p>Laten we de backup die
we gemaakt hebben met <code>/usr/local/bin/rdup-simple -z -k KEY ~ /backup</code>
eens terug zetten naar een directory <code>/tmp/restore</code>.</p>

<pre><code>$ rdup -Pmcrypt,-d,-f,KEY,-q -Pgzip,-d,-c /dev/null \
/backup/201003/15/home/miekg | rdup-up -t /tmp/restore
</code></pre>

<blockquote>
  <p>Apropos: dit is bijna <em>identiek</em> aan hoe <code>rdup-simple</code> de pipeline
samenstelt voor de backup...</p>
</blockquote>

<p>We laten <code>rdup</code> hier alle bestanden uit de backup directory
oplepelen (<code>rdup /dev/null /backup/....</code>) <em>en</em> laten <code>rdup</code> deze
eerst door <code>mcrypt -d -f KEY -q</code> sturen, in de commando regel hierboven
is dat:</p>

<pre><code>-Pmcrypt,-d,-f,KEY,-q
</code></pre>

<p>En <em>daarna</em> nog een keer door <code>gzip -d -c</code>, met:</p>

<pre><code>-Pgzip,-d,-c
</code></pre>

<p>Dit wordt dan allemaal opgevangen door <code>rdup-up</code> en die zet het
in <code>/tmp/restore</code> neer. Nu krijg je in je restore directory wel
het hele backup pad (<code>tmp/backup/201003/16/home/miekg</code>) terug, dus
de files waar het om gaat staan vrij "diep". Gelukkig kun je 
hier om heen werken door de <code>-s N</code> vlag te gebruiken van <code>rdup-up</code> deze
sloopt <code>N</code> pad elementen uit je restore, dus met</p>

<pre><code>$ rdup -Pmcrypt,-d,-f,KEY,-q -Pgzip,-d,-c /dev/null \
/backup/201003/15/home/miekg | rdup-up -t -s 5 /tmp/restore
</code></pre>

<p>Wordt <code>/tmp/backup/201003/16/home</code> (5 slashes) van het pad
afgesnoept en staat de restore gelijk onder <code>/tmp/restore</code>. Je zou 
in dit geval <em>zelfs</em> <code>-r /tmp/backup/201003/16/home/miekg</code> kunnen
gebruiken, welke niet slashes telt maar gewoon dat pad-deel eraf sloopt.</p>

<h1>Meer info</h1>

<p>Er is nog wel meer te vertellen over <code>rdup</code>, maar ik wil het hierbij
laten en eventueel nog een artikel erover schrijven. Heb je nog
vragen en/of opmerkingen dan kun je
direct naar mij <a href="http://www.miek.nl/about">mailen</a> of kijken op
de <a href="http://miek.nl/projects/rdup">rdup pagina</a>.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2010/01/28/dnssec_in_de_root_van_dns/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2010/01/28/dnssec_in_de_root_van_dns/index.html</guid>
<title>DNSSEC in de root van DNS</title>
<dc:date>2010-01-28T08:47:26+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dutch, dns(sec)</dc:subject>
<description><![CDATA[<p>Ik ben ongeveer 4 jaar geleden gestopt bij
<a href="http://www.nlnetlabs.nl">NLnetLabs</a>, omdat ik 
<a href="http://www.dnssec.net/">DNSSEC</a> wel
een beetje zat was en het zou waarschijnlijk
nog <em>jaren</em> duren voordat DNSSEC op het hoogste
niveau ingevoerd zou gaan worden.</p>

<p>Maar nu lijkt het toch bijna zover te zijn. Ben benieuwd wanneer we echt
overstappen en er een officiele DNSSEC root key wordt gedistribueerd.</p>

<pre><code>% dig . @l.root-servers.net dnskey 

; &lt;&lt;&gt;&gt; DiG 9.5.1-P2.1 &lt;&lt;&gt;&gt; . @l.root-servers.net dnskey
;; global options:  printcmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 64132
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;.              IN  DNSKEY

;; ANSWER SECTION:
.           86400   IN  DNSKEY  256 3 8 AwEAAa1Lh++++++++++++++++THIS/IS/AN/INVALID/KEY/AND/SHOULD
/NOT/BE/USED/CONTACT/ROOTSIGN/AT/ICANN/DOT/ORG/FOR/MOR E/INFORMATION+++++++++++++++++++++++++++++++++++++++++++ +++++++8
.           86400   IN  DNSKEY  257 3 8 AwEAAawBe++++++++++++++++THIS/IS/AN/INVALID/KEY/AND/SHOULD
/NOT/BE/USED/CONTACT/ROOTSIGN/AT/ICANN/DOT/ORG/FOR/MOR E/INFORMATION+++++++++++++++++++++++++++++++++++++++++++ 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++8=

;; Query time: 119 msec
;; SERVER: 199.7.83.42#53(199.7.83.42)
;; WHEN: Thu Jan 28 08:43:00 2010
;; MSG SIZE  rcvd: 439
</code></pre>]]></description>

</item>
</channel>
</rss>
