B. L. O. G.
Belangrijke Literatuur, Onze Gezelligheid

 

Digitale sleutels zonder deuren

Dit is het derde deel in een serie artikelen over het DNS. Deel 1 geeft een introductie over de meest gebruikte records en deel 2 geeft meer informatie over SPF-records.

In een digitaal tijdperk waar alles draait om veiligheid, is het vreemd dat we een e-mail eigenlijk blindelings vertrouwen als die binnenkomt. “Hey, een e-mail van Jan, leuk.” Ja, maar wie zegt dat die ook daadwerkelijk van Jan af komt? En dat er onderweg niet mee geknoeid is, zodat er eigenlijk iets heel anders staat dan wat er daadwerkelijk gestuurd is?

Enter: DKIM. Uitgesproken als ‘dee kim’ of ‘dee-ka-ie-em’, kort voor DomainKeys Identified Mail. In een notendop is de werking ervan eigenlijk heel simpel en, gelukkig, de installatie er van doorgaans ook.

Hoe werkt het?

Stel, Jan typt een e-mail. Deze e-mail bestaat uit verschillende onderdelen, zoals een afzender, een ontvanger, de inhoud, tijdstip van verzending en meer van dat soort karakteristieken. Samen vormen ze een uniek object wat door de digitale postduif wordt verstuurd. Dit versturen gaat via een mailserver, bijvoorbeeld smtp.ziggo.nl of mail.domeinnaam.nl.

Is DKIM geïnstalleerd op de uitgaande mailserver, dan gaat die server met het bericht aan de slag, voordat het naar de ontvanger wordt verstuurd. Voor iedere domeinnaam die op de server bestaat, is er een unieke en geheime private key aanwezig. Met deze sleutel wordt het volledige bericht, inclusief alle karakteristieken, omgetoverd tot een hash. Deze hash wordt meegestuurd met het bericht naar de ontvangende mailserver.

Als de ontvangende kant weet hoe het met DKIM om moet gaan, zal deze merken dat er wat extra’s aan de mail hangt: een gehashte versie van de ontvangen mail, inclusief alle eigenschappen daarvan. Om deze hash te ontcijferen, is er een andere sleutel nodig dan degene die voor het versleutelen werd gebruikt. Deze zogenaamde public key staat openbaar in het DNS van de verzendende domeinnaam opgeslagen als DKIM-record. Met deze publieke sleutel kan de hash vertaald worden naar ‘leesbare’ tekst, welke vervolgens wordt vergeleken met de normale variant van het bericht. Komt het overeen, dan is iedereen blij.

Twee kanttekeningen hierbij:

a.Komt het niet overeen, dan zal het bericht, al naargelang de instellingen van de ontvangende partij, gemarkeerd worden als spam, in een spamfolder geplaatst worden of zelfs gewoon compleet geweigerd worden. Daar heeft u als verzender verder geen invloed op.

b.Weet de ontvangende kant niet hoe DKIM werkt, dan is er geen nood. Het DKIM-gedeelte van de ontvangen e-mail zal dan volledig genegeerd worden.

Openbare sleutel?

Oké, die theorie klinkt logisch. Maar als de public key gewoon te grabbel ligt in het DNS en iedere willekeurige internetter die op kan vragen, is dat dan niet een beveiligingsrisico? Wat let een onderscheppende hacker om het bericht te ontcijferen met de publieke sleutel, aan te passen en weer ‘op slot te doen’ door een nieuwe hash te genereren?

Kijk, en daar komt het mooie van deze techniek naar voren. Het versleutelen zelf kan namelijk alleen met de private key, niet met de public key. Een hacker kan het bericht dus wel onderscheppen en van het slot afhalen en aanpassen, maar zal nooit in staat zijn om het geheel weer in te pakken met een nieuwe kloppende hash, simpelweg omdat daar de private key voor nodig is. En, als het goed is, staat die alleen maar op de verzendende server geïnstalleerd.

Installeren

Het installeren van DKIM is doorgaans niet zo heel moeilijk. Vooral wanneer er van een semi-standaard hosting oplossing gebruikt wordt gemaakt, zoals bijvoorbeeld ons succesnummer CentOS met DirectAdmin en Exim, is het een fluitje van een cent.

Stap 1: Controleren

Controleer of alle versies up to date genoeg zijn en Exim DKIM ondersteunt:

# exim -bV | grep 'Support'
Support for: crypteq IPv6 Perl OpenSSL move_frozen_messages Content_Scanning DKIM Old_Demime PRDR OCSP

DKIM staat er tussen, dus dat zit wel snor. Is dat niet zo, zorg dan eerst dat Exim up to date raakt. Raadpleeg hiervoor eventueel onze technische dienst, mocht u hier hulp bij nodig hebben.

Stap 2: Configureren

Om DKIM te activeren in Exim, moeten er een extra configuratie-bestand gedownload worden en een aantal wijzigingen gemaakt worden in de huidige exim.conf.

# cd /etc
# wget -O exim.dkim.conf http://files.directadmin.com/services/exim.dkim.conf
# vi /etc/exim.conf

Zoek naar:

remote_smpt: driver = smtp

En voeg dan een regel toe, zodat het er zo uit ziet:

remote_smpt: driver = smtp .include_if_exists /etc/exim.dkim.conf

Als de wijzigingen opgeslagen zijn, herstart Exim om de nieuwe configuratie te kunnen gebruiken.

# service exim restart

Stap 3: Activeren

Het gebruik van DKIM moet in DirectAdmin geactiveerd worden, wat gebeurt door een extra regel in de directadmin.conf toe te voegen.

# cd /usr/local/directadmin
# cp -f conf/directadmin.conf conf/directadmin.conf.predkim
# echo 'dkim=1' >> conf/directadmin.conf
# service directadmin restart

Stap 4: Inschakelen

Voor iedere domeinnaam welke er vanaf nu wordt toegevoegd aan DirectAdmin, wordt vanaf nu een extra DKIM DNS record aangemaakt in de DNS zone file. Voor reeds bestaande domeinnamen moet dit nog even getriggerd worden. Dit kan een voor een, bijvoorbeeld voor domeinnaam.nl

# cd /usr/local/directadmin/scripts
# ./dkim_create.sh domeinnaam.nl

Of, wanneer het voor alle domeinnamen in een keer kan:

# echo "action=rewrite&value=dkim" >> /usr/local/directadmin/data/task.queue

Stap 5: Toevoegen

Grote kans dat u geen gebruik maakt van de DNS-servers van DirectAdmin, maar van de DNS-functionaliteiten van Flexwebhosting. In dat geval moet u zelf nog handmatig de door DirectAdmin toegevoegde DKIM-sleutel overhevelen naar de DNS-zone in de centrale nameservers. Hiervoor logt u als admin-gebruiker in in DirectAdmin en zoekt u bij DNS Administration de domeinnaam op welke u nodig heeft.

DirectAdmin laat u dan de zonefile zien van die domeinnaam. Het DKIM-record springt er direct uit:

Name Type Value
x._domainkey TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2+AXfoLBVgSgnE31f7rC8hvtAAp7ldSC+F8gJ53UIQika7MPiTlx6ZSzF9Pv4LFcTiLbXGX7K2mOzVpbTvkn0Zn0KrGJRsB5KG2lpMZHiemkEFjYeFsVltxkcQYYzx2NI+Ee31dI0m3JCZDrIS/3wPnLmrMkcRZp0qHg3H4gmgUv+BYIHktJOXROG5ovDmG7iDJdn3dL/nG8CUjAHy7Jc8VDtARKsk0aVU195cAy0r/uj0cJO77WMGe5Bj1iEBAaPHpnPLjXsNrFAKEENyQT/xYDk9/5MG609T7Ugm9T3b8aIp4FcB803xUsN0Nx2eMRY6YDjWgfVgyhD77/1rnZwIDAQAB"

Deze gegevens neemt u ook zo over in de DNS-configuratie van uw domeinnaam in de actieve nameservers, bijvoorbeeld door het record in de klantenpagina toe te voegen.

Tip: Heeft u alle domeinnamen in een keer laten signen door DirectAdmin? Deze staan per domeinnaam opgeslagen in de zone-file van DirectAdmins nameservers. Met een scriptje kunt u ze er dan allemaal uitlepelen en laten verzamelen in één bestand, in plaats van ze allemaal per stuk langs te moeten. Vraag onze technische dienst voor meer informatie!

Conclusie

Het installeren en activeren van DKIM is in de meeste gevallen zo gepiept. Het effect is echter ongemerkt grandioos, want het is bijvoorbeeld een hele grote stap voorwaarts in het beschermen van de vanaf uw server verstuurde e-mails en daarmee een enorm pluspunt voor Microsofts inkomende spamfilters.

Het beste kunt u DKIM direct activeren bij de in gebruik name van een nieuwe server. Heeft u al een server draaien, dan kost het even wat extra werk om voor alle domeinnamen het DNS correct in te stellen. Maar uiteindelijk scheelt het u wel veel soebatten met Outlook.coms Deliverability Support Team over het deblokkeren van een geblacklist IP-adres.