Add article OpenBSD NSD DNNSEC TLSA
parent
6970d10791
commit
403d4ae88f
|
@ -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
Loading…
Reference in New Issue