IP-Whitelist für API-Schlüssel

Vogel

19.08.2015

E-Mail

1 min read

IP-Whitelist für API-Schlüssel

Wichtige Erkenntnisse

    • API keys sind mächtige Anmeldeinformationen — wenn sie kompromittiert werden, können Angreifer E-Mails senden, Daten stehlen oder Ihre Marke imitieren.

    • Ein 40-stelliger Hex-Schlüssel durch Brute-Force zu knacken, ist praktisch unmöglich; echte Bedrohungen entstehen durch Exposition (MITM-Angriffe, unsichere Code-Repos, geleakte Anmeldeinformationen).

    • Verwenden Sie immer HTTPS und validieren Sie SSL-Zertifikate, um das Abfangen Ihrer API keys zu verhindern.

    • IP-Whitelisting fügt eine kritische Schutzschicht hinzu, indem es die Nutzung eines Schlüssels auf bestimmte IPs oder IP-Bereiche beschränkt.

    • Selbst wenn ein Angreifer Ihren API key stiehlt, kann er ihn nicht verwenden, es sei denn, er verbindet sich von einer genehmigten IP aus.

    • CIDR-Unterstützung erleichtert die Autorisierung ganzer Netzwerke, ohne jeden Server einzeln aufzulisten.

    • Vermeiden Sie es, API keys in Code einzubetten – verwenden Sie stattdessen Umgebungsvariablen oder sichere Geheimverwaltungs-Lösungen.

    • Erstellen Sie mehrere API keys mit eingeschränktem Bereich anstatt eines einzigen „Alles-können“-Schlüssels – jeder mit begrenzten Berechtigungen und seiner eigenen Whitelist.

    • Für Drittanbieter-Integrationen erstellen Sie dedizierte Schlüssel mit eingeschränkten Berechtigungen und eingeschränkten IPs.

    • Aktivieren Sie 2FA für Ihr Konto, da API keys nur über die Benutzeroberfläche erstellt werden können.

    • Überprüfen, rotieren und deaktivieren Sie regelmäßig Schlüssel, um eine starke Betriebssicherheit aufrechtzuerhalten.

Q&A Highlights

  • Was ist IP-Whitelisting?

    Es ist eine Sicherheitsfunktion, die die Nutzung des API-Schlüssels auf bestimmte IP-Adressen oder IP-Bereiche beschränkt.

  • Warum verwendet SparkPost/Bird API-Schlüssel zur Authentifizierung?

    API-Schlüssel sind einfach, weit verbreitet und funktionieren sauber mit REST-APIs und SMTP.

  • Was passiert, wenn jemand meinen API key stiehlt?

    Sie könnten E-Mails in Ihrem Namen senden, Empfängerlisten herunterladen, Vorlagen ändern oder Phishing/Spam versenden, das Ihrer Marke schadet.

  • Können API-Schlüssel durch Brute-Force-Angriffe kompromittiert werden?

    Praktisch unmöglich. Eine 40-stellige Hex-Zeichenfolge hat ~1,46e48 Kombinationen — ein Brute-Force-Angriff würde länger dauern als das Alter des Universums.

  • Wie gelangen Angreifer normalerweise an API-Schlüssel?

    Man-in-the-middle-Angriffe (wenn SSL nicht verifiziert ist), offengelegte Schlüssel in öffentlichen GitHub-Repos oder Protokolle, die versehentlich Schlüssel lecken.

  • Wie hilft IP-Whitelisting?

    Selbst wenn ein Angreifer Ihren Schlüssel stiehlt, wird er nicht funktionieren, es sei denn, er verbindet sich von einer genehmigten IP-Adresse.

  • Kann ich ganze Netzwerke auf die Whitelist setzen?

    Ja, über CIDR-Notation — ideal für Lastverteiler-Server, VPNs oder statische Bürobereiche.

  • Gilt Whitelisting sowohl für REST als auch für SMTP?

    Ja, die IP der eingehenden Anfrage muss mit Ihrer Whitelist übereinstimmen.

  • Wie viele IPs oder Bereiche kann ich auf die Whitelist setzen?

    Soviele wie Sie benötigen — mehrere einzelne IPs oder Blöcke.

  • Sollte ich einen API-Schlüssel für alles verwenden?

    Nein. Erstellen Sie separate Schlüssel für verschiedene Systeme, Teams oder Anbieter. Dies verbessert die Sicherheit und macht es einfacher, Schlüssel auszutauschen oder zu widerrufen.

  • Wo sollte ich API-Schlüssel aufbewahren?

    Verwenden Sie Umgebungsvariablen – kodieren Sie niemals Schlüssel in Quelldateien oder öffentliche Repositories ein.

  • Gibt es zusätzliche Sicherheitstipps?

    Aktivieren Sie immer 2FA auf Ihrem SparkPost/Bird-Konto und erstellen Sie dedizierte Schlüssel für Dritte mit minimalen Berechtigungen und eigenen Whitelists.

Es gibt viele Möglichkeiten, Authentifizierung in einem API-first-Produkt wie SparkPost zu implementieren, und diejenige, die wir früh gewählt haben, ist die Verwendung von API-Schlüsseln. Die Einbindung Ihres API-Schlüssels als eine rohe Authorization-Header oder über standardmäßige HTTP Basic Auth macht es sehr einfach, unsere APIs zu nutzen. Solche API-Schlüssel sind ein gängiger Standard für Webservices, aber wie sicher ist dieses System?

Es gibt viele Möglichkeiten, Authentifizierung in einem API-first-Produkt wie SparkPost zu implementieren, und diejenige, die wir früh gewählt haben, ist die Verwendung von API-Schlüsseln. Die Einbindung Ihres API-Schlüssels als eine rohe Authorization-Header oder über standardmäßige HTTP Basic Auth macht es sehr einfach, unsere APIs zu nutzen. Solche API-Schlüssel sind ein gängiger Standard für Webservices, aber wie sicher ist dieses System?

Es gibt viele Möglichkeiten, Authentifizierung in einem API-first-Produkt wie SparkPost zu implementieren, und diejenige, die wir früh gewählt haben, ist die Verwendung von API-Schlüsseln. Die Einbindung Ihres API-Schlüssels als eine rohe Authorization-Header oder über standardmäßige HTTP Basic Auth macht es sehr einfach, unsere APIs zu nutzen. Solche API-Schlüssel sind ein gängiger Standard für Webservices, aber wie sicher ist dieses System?

Die Risiken

Bei der Nutzung eines Webdienstes, wenn ein Angreifer Ihren API-Schlüssel erhält, kann er in Ihrem Namen handeln und Dinge tun wie (in unserem Fall):

  • seine E-Mail kostenlos über Ihr Konto senden

  • Ihre Empfängerliste herunterladen und sie an Spammer weitergeben (falls sie nicht selbst Spammer sind)

  • Ihre Vorlagen bearbeiten, um Phishing-Links einzufügen

  • Spam oder Phishing in Ihrem Namen senden

Jedes dieser Ergebnisse könnte Ihrer Reputation und Ihrem Geschäft sehr schaden und im Falle von Phishing potenziell direkt Ihren Endbenutzern schaden. Deshalb ist es äußerst wichtig sicherzustellen, dass niemand Ihren API-Schlüssel entdecken kann.

Bei der Nutzung eines Webdienstes, wenn ein Angreifer Ihren API-Schlüssel erhält, kann er in Ihrem Namen handeln und Dinge tun wie (in unserem Fall):

  • seine E-Mail kostenlos über Ihr Konto senden

  • Ihre Empfängerliste herunterladen und sie an Spammer weitergeben (falls sie nicht selbst Spammer sind)

  • Ihre Vorlagen bearbeiten, um Phishing-Links einzufügen

  • Spam oder Phishing in Ihrem Namen senden

Jedes dieser Ergebnisse könnte Ihrer Reputation und Ihrem Geschäft sehr schaden und im Falle von Phishing potenziell direkt Ihren Endbenutzern schaden. Deshalb ist es äußerst wichtig sicherzustellen, dass niemand Ihren API-Schlüssel entdecken kann.

Bei der Nutzung eines Webdienstes, wenn ein Angreifer Ihren API-Schlüssel erhält, kann er in Ihrem Namen handeln und Dinge tun wie (in unserem Fall):

  • seine E-Mail kostenlos über Ihr Konto senden

  • Ihre Empfängerliste herunterladen und sie an Spammer weitergeben (falls sie nicht selbst Spammer sind)

  • Ihre Vorlagen bearbeiten, um Phishing-Links einzufügen

  • Spam oder Phishing in Ihrem Namen senden

Jedes dieser Ergebnisse könnte Ihrer Reputation und Ihrem Geschäft sehr schaden und im Falle von Phishing potenziell direkt Ihren Endbenutzern schaden. Deshalb ist es äußerst wichtig sicherzustellen, dass niemand Ihren API-Schlüssel entdecken kann.

Die Chancen

Habe ich bruteforce gehört? Unsere API-Schlüssel sind zufällig generierte 40-stellige hexadezimale Zeichenfolgen. Dies ergibt insgesamt 1.4615e+48 API-Schlüssel. Wenn alle 3 Milliarden Computer und Smartphones auf der Welt 100 API-Schlüssel pro Sekunde ausprobieren würden, vorausgesetzt, unsere Server würden das zulassen, würde es mehr als 150.000.000.000.000.000.000.000.000.000 Jahre dauern, um alle möglichen API-Schlüssel durchzugehen. Also macht es keinen Sinn, den API-Schlüssel bruteforcen.

Wie kann jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übermittelt wird, kann er mit Man-in-the-Middle-Angriffen gelesen werden. Sie sollten daher immer sicherstellen, dass Ihr Client beim Verbinden mit unseren APIs die SSL-Zertifikate überprüft (dies ist ein Hauptgrund, warum wir https für API-Verbindungen verlangen). Außerdem, wenn Sie nachlässig mit der Nutzung von öffentlichen Code-Repositories wie github sind, kann Ihr API-Schlüssel leicht in der freien Wildbahn offenbart werden. Dies ist kein akademisches Problem: Es sind bekannte Bots auf github unterwegs, um API-Schlüssel zu finden, und es gab erfolgreiche Angriffe durch diesen Vektor.

Habe ich bruteforce gehört? Unsere API-Schlüssel sind zufällig generierte 40-stellige hexadezimale Zeichenfolgen. Dies ergibt insgesamt 1.4615e+48 API-Schlüssel. Wenn alle 3 Milliarden Computer und Smartphones auf der Welt 100 API-Schlüssel pro Sekunde ausprobieren würden, vorausgesetzt, unsere Server würden das zulassen, würde es mehr als 150.000.000.000.000.000.000.000.000.000 Jahre dauern, um alle möglichen API-Schlüssel durchzugehen. Also macht es keinen Sinn, den API-Schlüssel bruteforcen.

Wie kann jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übermittelt wird, kann er mit Man-in-the-Middle-Angriffen gelesen werden. Sie sollten daher immer sicherstellen, dass Ihr Client beim Verbinden mit unseren APIs die SSL-Zertifikate überprüft (dies ist ein Hauptgrund, warum wir https für API-Verbindungen verlangen). Außerdem, wenn Sie nachlässig mit der Nutzung von öffentlichen Code-Repositories wie github sind, kann Ihr API-Schlüssel leicht in der freien Wildbahn offenbart werden. Dies ist kein akademisches Problem: Es sind bekannte Bots auf github unterwegs, um API-Schlüssel zu finden, und es gab erfolgreiche Angriffe durch diesen Vektor.

Habe ich bruteforce gehört? Unsere API-Schlüssel sind zufällig generierte 40-stellige hexadezimale Zeichenfolgen. Dies ergibt insgesamt 1.4615e+48 API-Schlüssel. Wenn alle 3 Milliarden Computer und Smartphones auf der Welt 100 API-Schlüssel pro Sekunde ausprobieren würden, vorausgesetzt, unsere Server würden das zulassen, würde es mehr als 150.000.000.000.000.000.000.000.000.000 Jahre dauern, um alle möglichen API-Schlüssel durchzugehen. Also macht es keinen Sinn, den API-Schlüssel bruteforcen.

Wie kann jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übermittelt wird, kann er mit Man-in-the-Middle-Angriffen gelesen werden. Sie sollten daher immer sicherstellen, dass Ihr Client beim Verbinden mit unseren APIs die SSL-Zertifikate überprüft (dies ist ein Hauptgrund, warum wir https für API-Verbindungen verlangen). Außerdem, wenn Sie nachlässig mit der Nutzung von öffentlichen Code-Repositories wie github sind, kann Ihr API-Schlüssel leicht in der freien Wildbahn offenbart werden. Dies ist kein akademisches Problem: Es sind bekannte Bots auf github unterwegs, um API-Schlüssel zu finden, und es gab erfolgreiche Angriffe durch diesen Vektor.

IP-Whitelisting zur Rettung

Wenn Sie einen API-Schlüssel erstellen, können Sie jetzt eine Liste von IPs angeben, die berechtigt sind, diesen Schlüssel zu verwenden. Sie können mehrere IPs sowie IP-Blöcke mithilfe der CIDR-Notation angeben, sodass Sie Ihre Server nicht einzeln auflisten müssen. Wenn der API-Schlüssel verwendet wird, sei es für REST APIs oder SMTP, werden wir die verbindende IP mit dieser Liste abgleichen, um Zugriff zu erlauben oder zu verweigern.

Mit dieser Funktion können selbst wenn Ihr API-Schlüssel gefunden oder gestohlen wird, nur Ihre Server ihn verwenden.

Common API Key Threats and Mitigations

Threat

Description

Recommended Mitigation

Schlüsselfreilegung in öffentlichen Code-Repositories

API-Schlüssel, die zu GitHub committet werden, können von Bots geerntet werden

Schlüssel in Umgebungsvariablen speichern; sofort geleakte Schlüssel rotieren

Man-in-the-middle-Abfangen

API-Schlüssel werden während unsicherer Verbindungen gelesen

Immer HTTPS durchsetzen und SSL-Zertifikate validieren

Gestohlener API-Schlüssel von Angreifer-Infrastruktur verwendet

Angreifer können E-Mails senden, Daten stehlen oder Vorlagen ändern

IP-Whitelisting verwenden, um zu beschränken, welche IPs den Schlüssel verwenden können

Überberechtigte „Schweizer Messer“ API-Schlüssel

Einzelner Schlüssel gewährt zu viele Privilegien, wenn kompromittiert

Erstellen Sie mehrere Schlüssel mit engem Umfang und begrenzten Berechtigungen

Drittanbieter-Integrationen missbrauchen einen gemeinsamen Schlüssel

Externe Partner können Ihren Schlüssel versehentlich offenlegen oder missbrauchen

Erstellen Sie dedizierte Schlüssel für jeden Partner mit beschränkten IPs und Berechtigungen

Angesichts der Risiken und wie einfach es ist, sie einzurichten, empfehlen wir dringend allen unseren Kunden, diese Funktion zu nutzen.

Wenn Sie einen API-Schlüssel erstellen, können Sie jetzt eine Liste von IPs angeben, die berechtigt sind, diesen Schlüssel zu verwenden. Sie können mehrere IPs sowie IP-Blöcke mithilfe der CIDR-Notation angeben, sodass Sie Ihre Server nicht einzeln auflisten müssen. Wenn der API-Schlüssel verwendet wird, sei es für REST APIs oder SMTP, werden wir die verbindende IP mit dieser Liste abgleichen, um Zugriff zu erlauben oder zu verweigern.

Mit dieser Funktion können selbst wenn Ihr API-Schlüssel gefunden oder gestohlen wird, nur Ihre Server ihn verwenden.

Common API Key Threats and Mitigations

Threat

Description

Recommended Mitigation

Schlüsselfreilegung in öffentlichen Code-Repositories

API-Schlüssel, die zu GitHub committet werden, können von Bots geerntet werden

Schlüssel in Umgebungsvariablen speichern; sofort geleakte Schlüssel rotieren

Man-in-the-middle-Abfangen

API-Schlüssel werden während unsicherer Verbindungen gelesen

Immer HTTPS durchsetzen und SSL-Zertifikate validieren

Gestohlener API-Schlüssel von Angreifer-Infrastruktur verwendet

Angreifer können E-Mails senden, Daten stehlen oder Vorlagen ändern

IP-Whitelisting verwenden, um zu beschränken, welche IPs den Schlüssel verwenden können

Überberechtigte „Schweizer Messer“ API-Schlüssel

Einzelner Schlüssel gewährt zu viele Privilegien, wenn kompromittiert

Erstellen Sie mehrere Schlüssel mit engem Umfang und begrenzten Berechtigungen

Drittanbieter-Integrationen missbrauchen einen gemeinsamen Schlüssel

Externe Partner können Ihren Schlüssel versehentlich offenlegen oder missbrauchen

Erstellen Sie dedizierte Schlüssel für jeden Partner mit beschränkten IPs und Berechtigungen

Angesichts der Risiken und wie einfach es ist, sie einzurichten, empfehlen wir dringend allen unseren Kunden, diese Funktion zu nutzen.

Wenn Sie einen API-Schlüssel erstellen, können Sie jetzt eine Liste von IPs angeben, die berechtigt sind, diesen Schlüssel zu verwenden. Sie können mehrere IPs sowie IP-Blöcke mithilfe der CIDR-Notation angeben, sodass Sie Ihre Server nicht einzeln auflisten müssen. Wenn der API-Schlüssel verwendet wird, sei es für REST APIs oder SMTP, werden wir die verbindende IP mit dieser Liste abgleichen, um Zugriff zu erlauben oder zu verweigern.

Mit dieser Funktion können selbst wenn Ihr API-Schlüssel gefunden oder gestohlen wird, nur Ihre Server ihn verwenden.

Common API Key Threats and Mitigations

Threat

Description

Recommended Mitigation

Schlüsselfreilegung in öffentlichen Code-Repositories

API-Schlüssel, die zu GitHub committet werden, können von Bots geerntet werden

Schlüssel in Umgebungsvariablen speichern; sofort geleakte Schlüssel rotieren

Man-in-the-middle-Abfangen

API-Schlüssel werden während unsicherer Verbindungen gelesen

Immer HTTPS durchsetzen und SSL-Zertifikate validieren

Gestohlener API-Schlüssel von Angreifer-Infrastruktur verwendet

Angreifer können E-Mails senden, Daten stehlen oder Vorlagen ändern

IP-Whitelisting verwenden, um zu beschränken, welche IPs den Schlüssel verwenden können

Überberechtigte „Schweizer Messer“ API-Schlüssel

Einzelner Schlüssel gewährt zu viele Privilegien, wenn kompromittiert

Erstellen Sie mehrere Schlüssel mit engem Umfang und begrenzten Berechtigungen

Drittanbieter-Integrationen missbrauchen einen gemeinsamen Schlüssel

Externe Partner können Ihren Schlüssel versehentlich offenlegen oder missbrauchen

Erstellen Sie dedizierte Schlüssel für jeden Partner mit beschränkten IPs und Berechtigungen

Angesichts der Risiken und wie einfach es ist, sie einzurichten, empfehlen wir dringend allen unseren Kunden, diese Funktion zu nutzen.

Letzte Worte

Einige persönliche Empfehlungen zur Sicherheit:

  • Halten Sie Ihre API-Schlüssel nicht im Code. Es gibt viele Vorteile, sie als Umgebungsvariablen zu speichern, wie es Heroku tut

  • Sie können eine unbegrenzte Anzahl von API-Schlüsseln erstellen, und es ist aus Sicherheitsgründen am besten, die Verantwortlichkeiten auf mehrere API-Schlüssel zu verteilen, anstatt nur auf einen Allzweck-Schlüssel. Dies würde Ihnen auch ermöglichen, unterschiedliche IP-Whitelists pro Schlüssel zu haben, für eine noch bessere Trennung der Aufgaben

  • Wenn Sie mit Dritten arbeiten, teilen Sie nicht Ihren API-Schlüssel, sondern erstellen Sie für sie einen neuen, nur mit den benötigten Berechtigungen und an ihre IPs gebunden

  • Da API-Schlüssel nur über die Benutzeroberfläche erstellt werden können, ist das Aktivieren der Zwei-Faktor-Authentifizierung in Ihrem SparkPost-Konto ein Muss und dauert nur 2 Minuten

Einige persönliche Empfehlungen zur Sicherheit:

  • Halten Sie Ihre API-Schlüssel nicht im Code. Es gibt viele Vorteile, sie als Umgebungsvariablen zu speichern, wie es Heroku tut

  • Sie können eine unbegrenzte Anzahl von API-Schlüsseln erstellen, und es ist aus Sicherheitsgründen am besten, die Verantwortlichkeiten auf mehrere API-Schlüssel zu verteilen, anstatt nur auf einen Allzweck-Schlüssel. Dies würde Ihnen auch ermöglichen, unterschiedliche IP-Whitelists pro Schlüssel zu haben, für eine noch bessere Trennung der Aufgaben

  • Wenn Sie mit Dritten arbeiten, teilen Sie nicht Ihren API-Schlüssel, sondern erstellen Sie für sie einen neuen, nur mit den benötigten Berechtigungen und an ihre IPs gebunden

  • Da API-Schlüssel nur über die Benutzeroberfläche erstellt werden können, ist das Aktivieren der Zwei-Faktor-Authentifizierung in Ihrem SparkPost-Konto ein Muss und dauert nur 2 Minuten

Einige persönliche Empfehlungen zur Sicherheit:

  • Halten Sie Ihre API-Schlüssel nicht im Code. Es gibt viele Vorteile, sie als Umgebungsvariablen zu speichern, wie es Heroku tut

  • Sie können eine unbegrenzte Anzahl von API-Schlüsseln erstellen, und es ist aus Sicherheitsgründen am besten, die Verantwortlichkeiten auf mehrere API-Schlüssel zu verteilen, anstatt nur auf einen Allzweck-Schlüssel. Dies würde Ihnen auch ermöglichen, unterschiedliche IP-Whitelists pro Schlüssel zu haben, für eine noch bessere Trennung der Aufgaben

  • Wenn Sie mit Dritten arbeiten, teilen Sie nicht Ihren API-Schlüssel, sondern erstellen Sie für sie einen neuen, nur mit den benötigten Berechtigungen und an ihre IPs gebunden

  • Da API-Schlüssel nur über die Benutzeroberfläche erstellt werden können, ist das Aktivieren der Zwei-Faktor-Authentifizierung in Ihrem SparkPost-Konto ein Muss und dauert nur 2 Minuten

Andere Neuigkeiten

Mehr lesen aus dieser Kategorie

A person is standing at a desk while typing on a laptop.

Die komplette AI-native Plattform, die mit Ihrem Business skalierbar ist.

A person is standing at a desk while typing on a laptop.

Die komplette AI-native Plattform, die mit Ihrem Business skalierbar ist.