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.