Tengo una distribución de Amazon CloudFront y debo cumplir con el mandato reglamentario de mi organización de usar las extensiones de seguridad del sistema de nombres de dominio (DNSSEC).
Descripción corta
El dominio predeterminado de CloudFront, cloudfront.net, no permite DNSSEC. Para activar DNSSEC para tu dominio, primero debes crear un conjunto de registros de recursos DNSKEY. Sin embargo, dado que AWS administra los registros DNS de los dominios de CloudFront, no puedes configurar un registro DNSKEY. Esto significa que no puedes activar DNSSEC directamente para un dominio de CloudFront. En su lugar, debes activarlo a través de un dominio alternativo.
Si tu organización requiere el uso de DNSSEC, primero bloquea el acceso a la distribución desde el dominio de CloudFront. A continuación, activa DNSSEC en un nombre de dominio o registro de nombres canónicos (CNAME) alternativo que esté adjunto a la distribución de CloudFront.
Resolución
Bloqueo del acceso desde CloudFront
Para bloquear cualquier solicitud que tenga el dominio cloudfront.net en el encabezado Host, utiliza AWS WAF o una función.
Uso de AWS WAF
Usa una regla de AWS WAF que bloquee cualquiera de los siguientes tipos de solicitud:
- Un encabezado Host que termine en cloudfront.net.
- Todas las solicitudes que tengan el dominio de la distribución (como d123abc.cloudfront.net) dentro de un único encabezado.
**Uso de una función **
Usa una función de CloudFront o una función de AWS Lambda@Edge para bloquear cualquier solicitud que tenga un valor en el encabezado Host que termine en cloudfront.net. Se recomienda usar una función de CloudFront debido a su menor coste y mayor rendimiento.
La siguiente función de CloudFront de ejemplo bloquea las solicitudes que tienen el dominio de CloudFront cloudfront.net en el encabezado Host:
function handler(event) {
var request = event.request;
// Extract the host header value
var host = request.headers.host.value;
// Check if the host header value ends with "cloudfront.net"
if (host.endsWith('cloudfront.net')) {
// Return a response to block the request
return {
statusCode: 403,
statusDescription: 'Forbidden',
headers: {
'content-type': {
value: 'text/plain'
}
},
body: 'Access to this resource is forbidden.'
};
}
// Allow the request to proceed
return request;
}
Activación de DNSSEC en un nombre de dominio alternativo
Después de bloquear el acceso desde el dominio de CloudFront, puedes activar DNSSEC en un nombre de dominio alternativo (CNAME). Para ello, sigue los pasos descritos en Activating DNSSEC signing and establishing a chain of trust (Activación de la firma de DNSSEC y definición de una cadena de confianza).
Puesta a prueba del dominio
Para confirmar que DNSSEC funciona correctamente con el dominio, utiliza el analizador de DNSSEC del sitio web de Verisign.