Categories
Internet, Unix en security

DNSSEC en DLV

Debian 5.0 heeft de beschikking over BIND 9.5.1 en Debian Unstable heeft de beschikking over BIND 9.6.0 welke beide de mogelijkheid bieden om DNSSEC-validatie te gaan aan de hand van DLV. Met behulp van DLV is eigenlijk het probleem van chain-of-trust vanuit de root-zone “opgelost”. Door een derde partij te vertrouwen welke de DS-keys kan vertellen aan andere partijen wordt gevalideerde resolving mogelijk.

Een van de partijen die dit aanbiedt is ISC en is sinds BIND 9.4 te gebruiken, maar versie 9.5.1 of 9.6.0 (deze versie ondersteunt NSEC3-records) zijn aanbevolen. Gelukkig zijn er al toplevels zoals van Zweden en Brasilie welke als DNSSEC op ccTLD hebben ingevoed. Helaas heeft SIDN, de beheerder van de nl-zone, alleen een tijdelijk project gehad om DNSSEC te testen en hopelijk komt daar binnenkort verandering in met vorderingen van DRS4. Een andere toplevel welke een harde deadline heeft gekregen is het toplevel .gov welke onder de Verenigde Staten van Amerika valt. En alle overheidsinstellingen moeten met ingang van december 2009 voor zowel internet als intranet DNSSEC hebben ingevoerd. Op de dns-operations mailinglist werd ook aangekondigd dat per 1 mei 2009 .gov weer was opgenomen in dlv.isc.org zodat verificatie weer mogelijk werd. En tot nu toe lijkt deze actie redelijk probleemloos te gaan.

Sinds BIND op dit moment een van de weinige authoritive en resolving nameservers is die DNSSEC ondersteunt werd het weer tijd om te gaan testen. Helaas heeft Sun Solaris cq OpenSolaris nog geen bijgewerkte versie van BIND standaard meegeleverd en blijft alleen Debian voor mij over op dit moment. Een (virtuele) machine met Debian 5.0 met daarop BIND 9.5.1 of hoger en een werkende NTP-server zijn voorlopig voldoende om DNSSEC te gaan testen voor een resolving nameserver. Als de volgende aanpassingen worden gemaakt aan /etc/bind/named.conf.options:

trusted-keys {
dlv.isc.org. 257 3 5 "BEAAA...rBNh";
};
options {
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside . trust-anchor dlv.isc.org.;
};
logging {
channel dnssec_log {
file "/var/log/named/dnssec" size 20m;
print-time yes;
print-category yes;
print-severity yes;
severity debug 3;
};
category "dnssec" { "dnssec_log"; };
};

In het voorbeeld staat geen valide key om veiligheidsredenen en de key kan worden opgehaald bij ISC en het is verstandig om de sleutel te controleren met PGP voordat deze wordt toegevoegd. Dit is een kritiek punt in de vertrouwens relatie en door een foutieve key te importeren wordt ook de vertrouwensrelatie met de rest van de wereld beïnvloed.

Standaard is er geen directory voor logfiles van BIND binnen Debian aanwezig en met de eerste twee volgende commando’s wordt er een directory aangemaakt en de permissies goed gezet. Het commando erna zal BIND volledig opnieuw starten zodat alle instellingen worden geactiveerd en zal DNSSEC moeten werken.

sudo mkdir -m 0700 /var/log/named
sudo chown bind /var/log/named
sudo /etc/init.d/bind9 restart

Het onderstaande commando kan worden gebruikt om aan te tonen dat DNSSEC nu wordt gebruikt voor validatie. Bij de flags staat nu ook de flag ad (Authentic Data) welke alleen wordt gezet als er met behulp van DNSSEC en DLV een validatie is gedaan.

$ dig +dnssec -t any br. @127.0.0.1
; < <>> DiG 9.5.1-P2 < <>> +dnssec -t any br. @127.0.0.1
;; global options: printcmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 33043
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 13, AUTHORITY: 7, ADDITIONAL: 1

Het is misschien onnodig om te vermelden, maar DNSSEC is geen oplossing om even te testen, neer te zetten en daarna te vergeten. De komende jaren zullen veel problemen ontstaan welke in het verleden stilletjes zijn ontstaan door slecht ontworpen infrastructuur en infrastructuur welke slecht of geen beheer heeft. En mijn persoonlijk vermoede is dat hier vooral e-mail hinder van gaat ondervinden, maar dat is iets wat tijd ons zal leren en hopelijk heb ik ongelijk.

Categories
Internet, Unix en security

INN zonder filesystemen

InterNetNews (INN) heeft verschillende mogelijkheden om artikelen op te slaan en tradspool is leuk newsservers met een lage hoeveelheid berichten. Maar al flink wat jaren bestaat er Cyclical News Filesystem (CNFS) om efficienter om te gaan met artikelen en de overhead van een filesystem te beperken. Ook het rekening houden met de hoeveelheid inodes er nodig zijn, de accesstime van bestanden bijhouden en vervuiling van directorylistings behoren daarmee tot de verleden tijd.

INN kan met behulp van CNFS in een groot bestand al zijn werk doen, maar ook direct met een raw-device zodat de overhead van een filesystem weg is. En hoewel ik zelf niet altijd voorstander van en menig dba’er weet dit ook werd het toch tijd om de proef op de som te nemen. Er zit wel een beperking op zoals dat je de volumes niet meer kan aanpassen qua omvang, maar een extra volume toevoegen kan altijd.

We beginnen om in volumegroup vg01 twee logical volumes aan te maken:

sudo lvcreate -L 1g -n cnfsnl00 vg01
sudo lvcreate -L 1g -n cnfsnl01 vg01

LVM op Linux zit niet zo goed in elkaar als bij Veritas bijvoorbeeld om ownership te waarborgen, maar Debian heeft voorzieningen getroffen en door /etc/default/lvm-common te voorzien van de volgende regels moet de devices bij een reboot de correct permissies krijgen voor INN op Debian.

MODE_vg01_cnfsnl00="news:disk 660"
MODE_vg01_cnfsnl01="news:disk 660"

Mocht je niet kunnen of willen rebooten dan kan het volgde statement ook worden uitgevoerd.

sudo /etc/init.d/inn2 restart

De devices kunnen nu worden opgenomen in /etc/news/cycbuff.conf om aan te wijzen als CNFS-volume:

cycbuff:NL00:/dev/mapper/vg01-cnfsnl00:1024000
cycbuff:NL01:/dev/mapper/vg01-cnfsnl01:1024000
metacycbuff:NL:NL00,NL01

Door nu aan INN te vertellen in /etc/news/storage.conf dat met behulp van CNFS de berichten moeten worden opgeslagen is de aanpassing na een reload compleet. In het voorbeeld worden alle artikelen uit de nl-tree opgeslagen in de zojuist aangemaakt CNFS-volumes.

method cnfs {
newsgroups: nl.*
options: NL
}

Bij een herstart zal te zien zijn in de syslog-file dat INN de volumes initialiseert en ingebruik neemt.

innd: CNFS-sm: No magic cookie found for cycbuff NL00, initializing

Extra ruimte kan worden gegeven door een etxra volume aan te maken en in cycbuff.conf te definiëren.