Allgemeine AWS-Referenz
Referenzhandbuch (Version 1.0)

IP-Adressbereiche für AWS

Amazon Web Services (AWS) veröffentlicht seine aktuellen IP-Adressbereiche im JSON-Format. Um die aktuellen Bereiche anzuzeigen, laden Sie die .json-Datei herunter. Um einen Verlauf zu pflegen, speichern Sie nachfolgende Versionen der .json-Datei in Ihrem System. Um festzustellen, ob seit der letzten Speicherung der Datei Änderungen vorgenommen wurden, prüfen Sie den Zeitpunkt der letzten Veröffentlichung in der aktuellen Datei und vergleichen Sie ihn mit dem Zeitpunkt der Veröffentlichung in der letzten Datei, die Sie gespeichert haben.

Herunterladen

Herunterladen von ip-ranges.json.

Wenn Sie auf diese Datei programmgesteuert zugreifen, liegt es in Ihrer Verantwortung sicherzustellen, dass die Anwendung die Datei erst herunterlädt, nachdem das vom Server bereitgestellte TLS-Zertifikat erfolgreich überprüft wurde.

Syntax

Die Syntax von ip-ranges.json ist wie folgt:

{ "syncToken": "0123456789", "createDate": "yyyy-mm-dd-hh-mm-ss", "prefixes": [ { "ip_prefix": "cidr", "region": "region", "service": "subset" } ], "ipv6_prefixes": [ { "ipv6_prefix": "cidr", "region": "region", "service": "subset" } ] }
syncToken

Zeitpunkt der Veröffentlichung (als Zeit seit Unix-Epoche)

Typ: Zeichenkette

Beispiel: "syncToken": "1416435608"

createDate

Datum und Uhrzeit der Veröffentlichung

Typ: Zeichenkette

Beispiel: "createDate": "2014-11-19-23-29-02"

prefixes

Die IP-Präfixe für die IPv4-Adressbereiche

Typ: Array

ipv6_prefixes

Die IP-Präfixe für die IPv6-Adressbereiche

Typ: Array

ip_prefix

Der öffentliche IPv4-Adressbereich, in CIDR-Notation. Beachten Sie, dass AWS einen Präfix in spezifischeren Bereichen ankündigen kann. Zum Beispiel könnte der Präfix 96.127.0.0/17 in der Datei als 96.127.0.0/21, 96.127.8.0/21, 96.127.32.0/19 und 96.127.64.0/18 angekündigt werden.

Typ: Zeichenkette

Beispiel: "ip_prefix": "198.51.100.2/24"

ipv6_prefix

Der öffentliche IPv6-Adressbereich, in CIDR-Notation. Beachten Sie, dass AWS einen Präfix in spezifischeren Bereichen ankündigen kann.

Typ: Zeichenkette

Beispiel: "ipv6_prefix": "2001:db8:1234::/64"

region

Die AWS-Region oder GLOBAL für -Edge-Standorte. Beachten Sie, dass die CLOUDFRONT- und ROUTE53-Bereiche GLOBAL sind.

Typ: Zeichenkette

Zulässige Werte: ap-east-1 | ap-northeast-1 | ap-northeast-2 | ap-northeast-3 | ap-south-1 | ap-southeast-1 | ap-southeast-2 | ca-central-1 | cn-north-1 | cn-northwest-1 | eu-central-1 | eu-north-1 | eu-west-1 | eu-west-2 | eu-west-3 | sa-east-1 | us-east-1 | us-east-2 | us-gov-east-1 | us-gov-west-1 | us-west-1 | us-west-2 | GLOBAL

Beispiel: "region": "us-east-1"

Service

Die Untergruppe der IP-Adressbereiche. Geben Sie AMAZON an, um alle IP-Adressbereiche abzurufen (z. B. sind die Bereiche in der EC2-Untergruppe auch in der AMAZON-Untergruppe enthalten). Beachten Sie, dass einige IP-Adressbereiche nur in der AMAZON-Untergruppe enthalten sind.

Typ: Zeichenkette

Zulässige Werte: AMAZON | AMAZON_CONNECT | CLOUD9 | CLOUDFRONT | CODEBUILD | DYNAMODB | EC2 | EC2_INSTANCE_CONNECT | GLOBALACCELERATOR | ROUTE53 | ROUTE53_HEALTHCHECKS | S3

Beispiel: "service": "AMAZON"

Filtern der JSON-Datei

Sie können ein Befehlszeilen-Tool herunterladen, um die Informationen so zu filtern, dass Sie nur die gewünschten Informationen erhalten.

Windows

AWS-Tools für Windows PowerShell enthält ein Cmdlet Get-AWSPublicIpAddressRange für die Analyse dieser JSON-Datei. Die folgenden Beispiele zeigen, wie Sie das Cmdlet verwenden. Weitere Informationen finden Sie im Blogpost über das Abfragen der öffentlichen IP-Adressbereiche für AWS und Get-AWSPublicIpAddressRange.

Beispiel 1. Abrufen des Erstellungsdatums

PS C:\> Get-AWSPublicIpAddressRange -OutputPublicationDate Wednesday, August 22, 2018 9:22:35 PM

Beispiel 2. Abrufen der Informationen für eine bestimmte Region

PS C:\> Get-AWSPublicIpAddressRange -Region us-east-1 IpPrefix Region Service -------- ------ ------- 23.20.0.0/14 us-east-1 AMAZON 50.16.0.0/15 us-east-1 AMAZON 50.19.0.0/16 us-east-1 AMAZON ...

Beispiel 3. Abrufen aller IP-Adressen

PS C:\> (Get-AWSPublicIpAddressRange).IpPrefix 23.20.0.0/14 27.0.0.0/22 43.250.192.0/24 ... 2406:da00:ff00::/64 2600:1fff:6000::/40 2a01:578:3::/64 2600:9000::/28

Beispiel 4. Abrufen aller IPv4-Adressen

PS C:\> Get-AWSPublicIpAddressRange | where {$_.IpAddressFormat -eq "Ipv4"} | select IpPrefix IpPrefix -------- 23.20.0.0/14 27.0.0.0/22 43.250.192.0/24 ...

Beispiel 5. Abrufen aller IPv6-Adressen

PS C:\> Get-AWSPublicIpAddressRange | where {$_.IpAddressFormat -eq "Ipv6"} | select IpPrefix IpPrefix -------- 2a05:d07c:2000::/40 2a05:d000:8000::/40 2406:dafe:2000::/40 ...

Beispiel 6. Abrufen aller IP-Adressen für einen bestimmten Service

PS C:\> Get-AWSPublicIpAddressRange -ServiceKey CODEBUILD | select IpPrefix IpPrefix -------- 52.47.73.72/29 13.55.255.216/29 52.15.247.208/29 ...

Linux

Die folgenden Beispielbefehle verwenden das jq-Tool, um eine lokale Kopie der JSON-Datei zu analysieren.

Beispiel 1. Abrufen des Erstellungsdatums

$ jq .createDate < ip-ranges.json "2016-02-18-17-22-15"

Beispiel 2. Abrufen der Informationen für eine bestimmte Region

$ jq '.prefixes[] | select(.region=="us-east-1")' < ip-ranges.json { "ip_prefix": "23.20.0.0/14", "region": "us-east-1", "service": "AMAZON" }, { "ip_prefix": "50.16.0.0/15", "region": "us-east-1", "service": "AMAZON" }, { "ip_prefix": "50.19.0.0/16", "region": "us-east-1", "service": "AMAZON" }, ...

Beispiel 3. Abrufen aller IPv4-Adressen

$ jq -r '.prefixes | .[].ip_prefix' < ip-ranges.json 23.20.0.0/14 27.0.0.0/22 43.250.192.0/24 ...

Beispiel 4. Abrufen aller IPv6-Adressen

$ jq -r '.ipv6_prefixes | .[].ipv6_prefix' < ip-ranges.json 2a05:d07c:2000::/40 2a05:d000:8000::/40 2406:dafe:2000::/40 ...

Beispiel 5. Abrufen aller IPv4-Adressen für einen bestimmten Service

$ jq -r '.prefixes[] | select(.service=="CODEBUILD") | .ip_prefix' < ip-ranges.json 52.47.73.72/29 13.55.255.216/29 52.15.247.208/29 ...

Beispiel 6. Abrufen aller IPv4-Adressen für einen bestimmten Service in einer bestimmten Region

$ jq -r '.prefixes[] | select(.region=="us-east-1") | select(.service=="CODEBUILD") | .ip_prefix' < ip-ranges.json 34.228.4.208/28

Implementieren der Kontrolle ausgehenden Datenverkehrs

Um einer Instance nur den Zugriff auf AWS-Services zu erlauben, erstellen Sie eine Sicherheitsgruppe mit Regeln, die ausgehenden Datenverkehr zu den CIDR-Blöcken in der AMAZON-Liste zulassen, abzüglich der CIDR-Blöcke, die auch in der EC2-Liste enthalten sind. IP-Adressen in der EC2-Liste können EC2-Instances zugewiesen werden.

Windows PowerShell

Das folgende PowerShell-Beispiel zeigt, wie Sie die IP-Adressen abrufen können, die in der AMAZON-Liste, aber nicht in der EC2-Liste vorhanden sind. Kopieren Sie das Skript und speichern Sie es in einer Datei mit dem Namen Select_address.ps1.

$amazon_addresses = Get-AWSPublicIpAddressRange -ServiceKey amazon $ec2_addresses = Get-AWSPublicIpAddressRange -ServiceKey ec2 ForEach ($address in $amazon_addresses) { if( $ec2_addresses.IpPrefix -notcontains $address.IpPrefix) { ($address).IpPrefix } }

Sie können dieses Skript wie folgt ausführen:

PS C:\> .\Select_address.ps1 13.32.0.0/15 13.35.0.0/16 13.248.0.0/20 13.248.16.0/21 13.248.24.0/22 13.248.28.0/22 27.0.0.0/22 43.250.192.0/24 43.250.193.0/24 ...

jq

Das folgende Beispiel zeigt, wie Sie die IP-Adressen in der Liste AMAZON, aber nicht in der Liste EC2 für alle Regionen abrufen:

jq -r '[.prefixes[] | select(.service=="AMAZON").ip_prefix] - [.prefixes[] | select(.service=="EC2").ip_prefix] | .[]' < ip-ranges.json 52.94.22.0/24 52.94.17.0/24 52.95.154.0/23 52.95.212.0/22 54.239.0.240/28 54.239.54.0/23 52.119.224.0/21 ...

Das folgende Beispiel zeigt, wie Sie die Ergebnisse nach einer Region filtern:

jq -r '[.prefixes[] | select(.region=="us-east-1" and .service=="AMAZON").ip_prefix] - [.prefixes[] | select(.region=="us-east-1" and .service=="EC2").ip_prefix] | .[]' < ip-ranges.json

Python

Das folgende Python-Skript zeigt, wie Sie die IP-Adressen abrufen können, die in der AMAZON-Liste, aber nicht in der EC2-Liste vorhanden sind. Kopieren Sie das Skript und speichern Sie es in einer Datei mit dem Namen get_ips.py.

#!/usr/bin/env python import requests ip_ranges = requests.get('https://ip-ranges.amazonaws.com/ip-ranges.json').json()['prefixes'] amazon_ips = [item['ip_prefix'] for item in ip_ranges if item["service"] == "AMAZON"] ec2_ips = [item['ip_prefix'] for item in ip_ranges if item["service"] == "EC2"] amazon_ips_less_ec2=[] for ip in amazon_ips: if ip not in ec2_ips: amazon_ips_less_ec2.append(ip) for ip in amazon_ips_less_ec2: print(str(ip))

Sie können dieses Skript wie folgt ausführen:

$ python ./get_ips.py 13.32.0.0/15 13.35.0.0/16 13.248.0.0/20 13.248.16.0/21 13.248.24.0/22 13.248.28.0/22 27.0.0.0/22 43.250.192.0/24 43.250.193.0/24 ...

Benachrichtigungen zu den IP-Adressbereichen von AWS

Wenn eine Änderung an den IP-Adressbereichen von AWS erfolgt, senden wir entsprechende Benachrichtigungen an die Abonnenten des Themas AmazonIpSpaceChanged. Die Nutzlast enthält Informationen im folgenden Format:

{ "create-time":"yyyy-mm-ddThh:mm:ss+00:00", "synctoken":"0123456789", "md5":"6a45316e8bc9463c9e926d5d37836d33", "url":"https://ip-ranges.amazonaws.com/ip-ranges.json" }
create-time

Datum und Zeitpunkt der Erstellung

Es kann vorkommen, dass Benachrichtigungen nicht in der richtigen Reihenfolge versandt werden. Daher wird empfohlen, die Zeitstempel zu überprüfen, um für die richtige Reihenfolge zu sorgen.

synctoken

Zeitpunkt der Veröffentlichung (als Zeit seit Unix-Epoche)

md5

Der kryptografische Hash-Wert der Datei ip-ranges.json. Sie können diesen Wert verwenden, um zu überprüfen, ob die heruntergeladene Datei beschädigt ist.

URL

Der Speicherort der Datei ip-ranges.json

Wenn Sie benachrichtigt werden möchten, wenn eine Änderung an den IP-Adressbereichen von AWS erfolgt, können Sie den Empfang von Amazon SNS-Benachrichtigungen wie folgt abonnieren.

So melden Sie sich für Benachrichtigungen zu AWS-IP-Adressbereichen an

  1. Öffnen Sie die Amazon SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home.

  2. Ändern Sie ggf. in der Navigationsleiste die Region in USA Ost (Nord-Virginia). Sie müssen diese Region auswählen, da die SNS-Benachrichtigungen, die Sie abonnieren, in dieser Region erstellt wurden.

  3. Wählen Sie im Navigationsbereich Subscriptions aus.

  4. Wählen Sie Create subscription.

  5. Führen Sie im Dialogfeld Create subscription Folgendes aus:

    1. Kopieren Sie für Topic ARN den folgenden Amazon-Ressourcennamen (ARN):

      arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged
    2. Wählen Sie für Protocol das zu verwendende Protokoll aus (z. B. Email).

    3. Geben Sie für den Endpoint den Endpunkt ein, an den die Benachrichtigung zugestellt werden soll (z. B. Ihre E-Mail-Adresse).

    4. Wählen Sie Create subscription.

  6. Sie werden über den angegebenen Endpunkt kontaktiert und gebeten, Ihr Abonnement zu bestätigen. Wenn Sie beispielsweise eine E-Mail-Adresse angegeben haben, erhalten Sie eine E-Mail-Nachricht mit der Betreffzeile AWS Notification - Subscription Confirmation. Befolgen Sie die Anweisungen, um Ihr Abonnement zu bestätigen.

Benachrichtigungen hängen von der Verfügbarkeit des Endpunkts ab. Aus diesem Grund sollten Sie die JSON-Datei regelmäßig überprüfen, um sicherzustellen, dass Sie über die neuesten Bereiche verfügen. Weitere Informationen zur Zuverlässigkeit von Amazon SNS erhalten Sie unter https://aws.amazon.com/sns/faqs/#Reliability.

Wenn Sie diese Benachrichtigungen nicht mehr erhalten möchten, führen Sie die folgenden Schritte aus, um sich abzumelden.

So melden Sie sich von den Benachrichtigungen für AWS-IP-Adressbereiche ab

  1. Öffnen Sie die Amazon SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home.

  2. Wählen Sie im Navigationsbereich Subscriptions aus.

  3. Aktivieren Sie das Kontrollkästchen für das Abonnement.

  4. Wählen Sie Actions und dann Delete subscriptions.

  5. Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie Delete.

Weitere Informationen zu Amazon SNS finden Sie im Entwicklerhandbuch für Amazon Simple Notification Service.