Firmado de zonas con OpenDNSSEC - part 1
1. Inicialice el "Hardware Security Module" basado en software (SoftHSM)
# mkdir /usr/local/var/softhsm
# softhsm --init-token --slot 0 --label OpenDNSSEC
(use '1234' en ambas preguntas):
The SO PIN must have a length between 4 and 255 characters.
Enter SO PIN: ****
The user PIN must have a length between 4 and 255 characters.
Enter user PIN: ****
The token has been initialized.
# softhsm --show-slots
Cree ficheros de configuraci—n para OpenDNSSEC haciendo una
copia de los ejemplos distribu’dos con el paquete:
# cd /usr/local/etc/opendnssec
# cp kasp.xml.sample kasp.xml
# cp conf.xml.sample conf.xml
# cp zonefetch.xml.sample zonefetch.xml
# cp zonelist.xml.sample zonelist.xml
# chmod 644 *xml
2. Cambie la pol’tica para usar NSEC en lugar de NSEC3:
Edite /usr/local/etc/opendnssec/kasp.xml
Busque esta secci—n, y elimine todas las l’neas desde a
P100D
1
5
... y sustitœyalas por la siguiente l’nea œnicamente:
Grabe y salga.
TambiŽn, configure la ubicaci—n correcta para el fichero libsofthsm.so en
conf.xml:
Cambie
/usr/local/lib/libsofthsm.so
a
/usr/local/lib/softhsm/libsofthsm.so
3. Inicialice el KSM
# ods-ksmutil setup
*WARNING* This will erase all data in the database; are you sure? [y/N] y
SQLite database set to: /usr/local/var/opendnssec/kasp.db
fixing permissions on file /usr/local/var/opendnssec/kasp.db
zonelist filename set to /usr/local/etc/opendnssec/zonelist.xml.
kasp filename set to /usr/local/etc/opendnssec/kasp.xml.
Repository SoftHSM found
No Maximum Capacity set.
RequireBackup NOT set; please make sure that you know the potential
problems of using keys which are not recoverable
/usr/local/etc/opendnssec/conf.xml validates
/usr/local/etc/opendnssec/kasp.xml validates
Policy default found
Info: converting P1Y to seconds; M interpreted as 31 days, Y interpreted as 365 days
4. Instale una copia de la zona sin firmar para que OpenDNSSEC la firme:
Anteriormente hicimos una copia de nuestra zona antes de firmarla
con BIND9. Vamos a usar esa copia de respaldo y ponerla a disposici—n de
OpenDNSSEC
# cd /etc/namedb/master
# cp MITLD.backup /usr/local/var/opendnssec/unsigned/MITLD
5. Agregue la zona a la base de datos de OpenDNSSEC:
ojo: OpenDNSSEC es sensible a las mayœsuclas/minœsculas. El nombre
de zona abajo debe coincidir con el nombre del fichero de zona.
# ods-ksmutil zone add --zone MITLD
zonelist filename set to /usr/local/etc/opendnssec/zonelist.xml.
Imported zone: MITLD
6. Arranque OpenDNSSEC!
# ods-control start
Starting enforcer...
OpenDNSSEC ods-enforcerd started (version 1.3.10), pid 63495
Starting signer engine...
Starting signer...
OpenDNSSEC signer engine version 1.3.10
Engine running.
# ps ax | grep ods
41588 ?? SsJ 0:00.11 /usr/local/sbin/ods-enforcerd
41593 ?? SsJ 0:00.07 /usr/local/sbin/ods-signerd
7. Compruebe que se haya firmado la zona:
# ls -l /usr/local/var/opendnssec/signed
-rw-r--r-- 1 root wheel 2621 Feb 19 09:10 MITLD
Eche un vistazo al contenido - f’jese en los IDs de las claves ZSK y KSK.
Si por alguna raz—n no ve un fichero en este directorio
(/usr/local/var/opendnssec/signed/), force al "signer" a firmar:
# ods-signer sign MITLD
8. Momento para reflexionar
Entonces, la zona ya est‡ firmada con OpenDNSSEC - f’jese que no hemos
generado ninguna clave
Liste las claves gestionadas actualmente por OpenDNSSEC:
# ods-ksmutil key list
Keys:
Zone: Keytype: State: Date of next transition:
MITLD KSK publish 2012-09-14 09:15:09
MITLD ZSK active 2012-10-13 19:15:09
F’jese que ambas claves han sido generadas por OpenDNSSEC, autom‡ticamente.
Pero BIND todav’a est‡ cargando la zona que fue firmada antes (ya fuera
manualmente o usando el firmado en l’nea) - podemos simplemente cambiar
el fichero named.conf y apuntar a la zona firmada?
Cu‡l KSK se est‡ usando actualmente? Y cu‡l rŽcord DS se public— en la
zona superior (la ra’z)?
Podr’an los resolvers validar la zona firmada por DNSSEC? Por quŽ?
QuŽ habr’a que hacer para que funcione (hay varias posibles respuestas).
Si no le importa el problema de la validaci—n, proceda con el resto del
ejercicio.
9. Indique a BIND que cargue la zona firmada
Modifique /etc/namedb/named.conf, y cambie la definici—n de zona para "MITLD"
de manera que se vea as’ (QUITE auto-dnssec, etc...)
zone "MITLD" {
file "/usr/local/var/opendnssec/signed/MITLD"; // <--- Cambiar ubicaci—n
type master;
key-directory "/etc/namedb/keys"; // <--- Quite, si est‡
auto-dnssec maintain; // <--- Quite, si est‡
inline-signing yes; // <--- Quite, si est‡
};
Ahora, BIND vuelve a ser un servidor "pasivo" que no firma la zona -
simplemente la sirve a los clientes tal y como fue firmada por OpenDNSSEC.
Reinicie named:
# service named restart
Revise los lgos en /etc/named/log/general para asegurarse de que la zona
estŽ siendo cargada correctamente
Ahora, la validaci—n probablemente fallar‡ para aquŽllos que estŽn tratando
de resolver nombres en su zona. Espere unos minutos e intente buscar un
record en su zona.
# dig www.MITLD +dnssec
QuŽ pudo observar ?
10. Recargar BIND con OpenDNSSEC
Aœn mejor, puede hacer que OpenDNSSEC le indique a BIND que debe recargar
la zona cuando Žsta ha sido firmada - de esta manera, no es necesario
reiniciar:
Para lograr esto, modifique /usr/local/etc/opendnssec/conf.xml
Busque las l’neas:
... elimine los comentarios (las l’neas '') antes y despuŽs.
Grabe el fichero y reinicie OpenDNSSEC:
# ods-control stop
...
# ods-control start
11. Exporte el DS, listo para subir:
# ods-ksmutil key export --zone MITLD --ds --keystate publish >/tmp/dsset-MITLD.
12. Suba el DS al servidor ra’z
# scp /tmp/dsset-MITLD. adm@a.root-servers.net:
13. Notifique al administrador!
Pida al administrador que a–ada su DS a la zona ra’z, y compruebe cu‡nto
tiempo toma para que la validaci—n funcione de nuevo en su zona.