DNSSEC-Provisioning / music

Multi-Signer Controller (MuSiC)
6 stars 5 forks source link

MUSIC

MUSIC, Multi-Signer Controller, is a proof of concept software implementation of the dnsop-dnssec-automation Internet Draft. Based on the following RFCs:

W.I.P

Requirements:

Download and Install MUSIC

This is just enough to get MUSIC up and running.


git clone git@github.com:DNSSEC-Provisioning/music.git
cd music

make all

cd musicd
make
make install

cd ../music-cli 
make
make install

Configure MUSIC

Suggestions for a Simple MUSIC Test Lab Setup

When all this is done you should have two nameserver, signer1 and signer2, each with its own TSIG key to authenticate updates. You should also have several DNSSEC signed zones served by both signers and with update policies that enable remote updates to the RRs that MUSIC needs to control.

Configuring MUSIC and Starting the MUSICD Server

Verifying that Interaction between MUSIC-CLI and MUSICD Works

bash# music-cli ping
Pings: 2 Pongs: 1 Message: TLS pong from musicd @ nyx.johani.org

If the response is a "pong", then all is good, TLS is working correctly, etc.

Do a Simple Test

Create a MUSIC Signer Group

bash# music-cli signergroup add -g GROUP1
Signergroup GROUP1 created.
bash# music-cli signer join -s S1 -g GROUP1 
Signer S1 has joined signer group GROUP1 as the first signer. No zones entered the 'add-signer' process.

The reason for the message about no zones entering the 'add-signer' process is (obviously) that we don't have any zones in MUSIC yet. If there were zones associated the the signer group GROUP1 and a new signer was added to the group, then those zones would have to go through the 'add-signer' process, as that's the whole point with the Multi-Signer design.

Add a Couple of Zones to MUSIC

bash# music-cli zone add -z music1.example  
Zone music1.example. was added but is not yet attached to any signer group.
bash# music-cli zone add -z music2.example -g GROUP1
Zone music2.example. was added and immediately attached to signer group GROUP1.
bash# music-cli zone add -z music3.example -g GROUP1
Zone music3.example. was added and immediately attached to signer group GROUP1.
bash# music-cli zone list -H                               
Zone                       SignerGroup  Process     State             Timestamp            Next State(s)
music1.example.     ---          ---         IN-SYNC           2022-11-04 13:24:53  []
music2.example.     GROUP1       add-signer  signers-unsynced  2022-11-04 13:25:05  [dnskeys-synced]
music3.example.     GROUP1       add-signer  signers-unsynced  2022-11-04 13:25:19  [dnskeys-synced]

bash# music-cli signergroup list -H
Group   Locked  Signers   # Zones  # Proc Zones  Current Process  PendingAddition  PendingRemoval
GROUP1  false   S1        2        2             ---              ---              ---
bassh# music-cli zone join -z music1.example -g GROUP1 -v
Using config file: ../etc/music-cli.yaml
Zone music1.example. has joined signer group GROUP1 and started the process 'add-signer'.

Moving Zones Through a MUSIC Process Manually

../sbin/music-cli zone step-fsm -z music1.example -v
Using config file: ../etc/music-cli.yaml
Zone music1.example. did not transition from signers-unsynced to dnskeys-synced.
Latest stop-reason: dns: bad authentication
Zone                    SignerGroup  Process     State             Timestamp            Next State(s)
music1.example.  GROUP1       add-signer  signers-unsynced  2022-11-04 13:24:53  [dnskeys-synced]

Moving Zones Through a MUSIC Process Automatically

bash# music-cli zone update -z music1.example --fsmmode auto
Zone music1.example. updated.

bash# music-cli zone list -H                                       
Zone                       SignerGroup  Process     State             Timestamp            Next State(s)
music1.example.[A]  GROUP1       add-signer  signers-unsynced  2022-11-04 13:24:53  [dnskeys-synced]
music2.example.     GROUP1       add-signer  signers-unsynced  2022-11-04 13:25:05  [dnskeys-synced]
music3.example.     GROUP1       add-signer  signers-unsynced  2022-11-04 13:25:19  [dnskeys-synced]

Note that there is an '[A]' after the name of the zone that we put in "automatic" mode. This zone will now work its way through each step automatically.