Add article OpenBSD NSD DNNSEC TLSA

master
HUC Stéphane 2022-09-01 14:23:14 +02:00
parent 6970d10791
commit 403d4ae88f
Signed by: hucste
GPG Key ID: C4ED64222D9B037F
2 changed files with 1197 additions and 102 deletions

View File

@ -1,102 +0,0 @@
---
categories: ['DNS']
date: 2022-06-08T15:32:16+02:00
description: "Comment gérer DNSSEC, les enregistrements nommés TLSA, du protocole DANE pour valider les certificats TLS (DNSSEC), sous OpenBSD avec nsd, ldns et consorts…"
draft: true
include_toc: true
show_comments: false
tags: ['DNS','DANE','DNSSEC','OpenBSD','TLSA']
title: "OpenBSD : Automatiser (presque) des enregistrements DNSSEC"
translationKey: 'openbsd-nsd-dane-tlsa'
---
## Description
En 2018, je me suis posé la question de la gestion des enregistrements
TLSA, selon le protocole DANE, lié au protocole de sécurité DNSSEC,
dans mes zones DNS. *(cf: {{< inside2 l="post/generer-enregistrement-tlsa" >}}) - je vous invite à le lire…*
Certains vont utiliser l'outil **knot**, fourni en tant que paquet sous
OpenBSD, car ils trouvent complexe à gérer. Mais nous verrons avec un
peu d'astuces comment gérer cela de manière semi-automatisé en shell,
sous OpenBSD.
Pour rappel, mon service DNS fonctionne depuis plus de 4 ans, sous OpenBSD
grâce au logiciel natif **nsd**. La gestion des enregistrements
DNSSEC se fait grâce aux outils **[ldns](https://openports.pl/path/net/ldns,-utils)**
à installer en tant que paquet tiers.
J'utilise dans les faits l'outil **[ldnscript](https://www.22decembre.eu/fr/2017/11/01/ldnscripts/)**
qui permet de gérer la création des clés nécessaires puis s'occupe de gérer
les enregistrements DNSSEC adéquats.
Récemment, j'ai décidé de basculer du chiffrement RSA par l'utilisation
de l'algorithme à courbes elliptiques nommés ECDSA.
Avant d'aller plus loin en ce sens, passons à l'installation des prérequis
nécessaires :
## Installation
### ldnscript
Pour me rappeler comment faire, je me suis fait le petit mémo suivant :
1. installer binaire nécessaire <br>
`$ doas pkg_add ldns-utils git`
2. télécharger et installer ldnscripts
```sh
$ cd /usr/local/src/
$ doas mkdir ldnscripts
$ doas chown $USER ldnscripts
$ git clone https://framagit.org/22decembre/ldnscripts.git
$ cd ldnscripts
$ doas make install
```
3. configurer le fichier /etc/ns/ldnscript.conf
```cfg
; SHA256 est largement suffisant et sécuritaire
ALG=ECDSAP256SHA256
NSEC3_ALG=SHA-256
```
4. initialisation du domaine <br>
`$ doas ldnscript init domain.tld`
5. nécessité de créer un lien symbolique /usr/bin/dig vers /usr/sbin/dig :<br>
`$ doas ln -sf /usr/bin/dig /usr/sbin/dig`
*(sans ce dernier point, l'outil ldnscript ne pourra trouver le binaire `dig`)*
## Configuration
### monthly.local
Tous les mois, je crée le rollover nécessaire des clés en intégrant dans
le script `/etc/monthly.local`, le code shell suivant :
```sh
### ldnscript
printf '%s\n' "=> ldnscript rollover"
/usr/local/sbin/ldnscript rollover all
```
## shell
En shell, générer un enregistrement TLSA n'est pas compliqué.
⇒ Pour RSA :<br>
`openssl x509 -noout -pubkey -in "${cert}" | openssl rsa -pubin -outform der 2>/dev/null | ${algo} | tr "a-z" "A-Z"`
⇒ Pour EC :<br>
`openssl x509 -noout -pubkey -in "${cert}" | openssl ec -pubin -outform der 2>/dev/null | ${algo} | tr "a-z" "A-Z"`
où la variable `$algo` est la commande `sha256`, ou `sha512`, au choix
personnel et restituera une somme de contrôle relative à l'algorithme choisi.
---

File diff suppressed because it is too large Load Diff