Ich habe eine Amazon-CloudFront-Distribution und muss die regulatorische Anforderung meiner Organisation erfüllen, DNSSEC zu verwenden.
Kurzbeschreibung
Die Standard-CloudFront-Domain cloudfront.net unterstützt kein DNSSEC. Um DNSSEC für deine Domain zu aktivieren, musst du zuerst einen DNSKEY-Ressourcendatensatz erstellen. Da AWS jedoch die DNS-Datensätze für CloudFront-Domains verwaltet, kannst du keinen DNSKEY-Eintrag konfigurieren. Das bedeutet, dass du DNSSEC nicht direkt für eine CloudFront-Domain aktivieren kannst. Stattdessen musst du es über eine alternative Domain aktivieren.
Wenn deine Organisation die Verwendung von DNSSEC verlangt, blockiere zuerst den Zugriff auf die Distribution über die CloudFront-Domain. Aktiviere dann DNSSEC für einen alternativen Domain-Namen oder einen Canonical Name Record (CNAME), der mit der CloudFront-Distribution verknüpft ist.
Lösung
Zugriff über CloudFront blockieren
Um Anfragen zu blockieren, die die Domain cloudfront.net im Host-Header enthalten, verwende entweder AWS WAF oder eine Funktion.
AWS WAF verwenden
Verwende eine AWS-WAF-Regel, die einen der folgenden Anforderungstypen blockiert:
- Ein Host-Header, der mit cloudfront.net endet.
- Alle Anfragen, die die Domain der Distribution (z. B. d123abc.cloudfront.net) in einem einzelnen Header enthalten.
Eine Funktion verwenden
Verwende eine CloudFront-Funktion oder eine AWS-Lambda@Edge-Funktion, um alle Anfragen zu blockieren, die im Host-Header einen Wert enthalten, der mit cloudfront.net endet. Es ist eine bewährte Methode, eine CloudFront-Funktion zu verwenden, da sie geringere Kosten und eine schnellere Leistung bietet.
Die folgende Beispiel-CloudFront-Funktion blockiert Anfragen, die die CloudFront-Domain cloudfront.net im Host-Header enthalten:
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;
}
DNSSEC für einen alternativen Domain-Namen aktivieren
Nachdem du den Zugriff über die CloudFront-Domain blockiert hast, kannst du DNSSEC für einen alternativen Domain-Namen (CNAME) aktivieren. Führe dazu die Schritte unter DNSSEC-Signatur aktivieren und eine Vertrauenskette einrichten aus.
Domain testen
Um zu bestätigen, dass DNSSEC mit deiner Domain korrekt funktioniert, verwende den DNSSEC-Analyzer auf der Verisign-Website.