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 erlangt, kann er in Ihrem Namen handeln und Dinge tun wie (in unserem Fall):

  • ihre E-Mails kostenlos über Ihr Konto senden

  • Ihre Empfängerliste herunterladen und 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 Ihrem Ruf und Ihrem Geschäft erheblich schaden, und im Fall von Phishing könnte es potenziell direkt Ihren Endbenutzern Schaden zufügen. 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 erlangt, kann er in Ihrem Namen handeln und Dinge tun wie (in unserem Fall):

  • ihre E-Mails kostenlos über Ihr Konto senden

  • Ihre Empfängerliste herunterladen und 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 Ihrem Ruf und Ihrem Geschäft erheblich schaden, und im Fall von Phishing könnte es potenziell direkt Ihren Endbenutzern Schaden zufügen. 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 erlangt, kann er in Ihrem Namen handeln und Dinge tun wie (in unserem Fall):

  • ihre E-Mails kostenlos über Ihr Konto senden

  • Ihre Empfängerliste herunterladen und 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 Ihrem Ruf und Ihrem Geschäft erheblich schaden, und im Fall von Phishing könnte es potenziell direkt Ihren Endbenutzern Schaden zufügen. 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. Das 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. Daher macht es keinen Sinn, den API-Schlüssel mit Brute-Force anzugreifen.

Wie kann also jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übergeben wird, kann er mit Man-in-the-Middle-Angriffen gelesen werden. Sie sollten also immer sicherstellen, dass Ihr Client beim Verbinden mit unseren APIs die SSL-Zertifikate überprüft (das ist ein Hauptgrund, warum wir https für API-Verbindungen verlangen). Außerdem, wenn Sie unachtsam mit der Nutzung von öffentlichen Code-Repositories wie github sind, kann Ihr API-Schlüssel leicht in der Wildnis landen. Dies ist kein akademisches Problem: Es gibt bekannte Bots, die github durchsuchen, um API-Schlüssel zu finden, und es hat erfolgreiche Angriffe über diesen Vektor gegeben.

Habe ich bruteforce gehört? Unsere API-Schlüssel sind zufällig generierte, 40-stellige hexadezimale Zeichenfolgen. Das 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. Daher macht es keinen Sinn, den API-Schlüssel mit Brute-Force anzugreifen.

Wie kann also jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übergeben wird, kann er mit Man-in-the-Middle-Angriffen gelesen werden. Sie sollten also immer sicherstellen, dass Ihr Client beim Verbinden mit unseren APIs die SSL-Zertifikate überprüft (das ist ein Hauptgrund, warum wir https für API-Verbindungen verlangen). Außerdem, wenn Sie unachtsam mit der Nutzung von öffentlichen Code-Repositories wie github sind, kann Ihr API-Schlüssel leicht in der Wildnis landen. Dies ist kein akademisches Problem: Es gibt bekannte Bots, die github durchsuchen, um API-Schlüssel zu finden, und es hat erfolgreiche Angriffe über diesen Vektor gegeben.

Habe ich bruteforce gehört? Unsere API-Schlüssel sind zufällig generierte, 40-stellige hexadezimale Zeichenfolgen. Das 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. Daher macht es keinen Sinn, den API-Schlüssel mit Brute-Force anzugreifen.

Wie kann also jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übergeben wird, kann er mit Man-in-the-Middle-Angriffen gelesen werden. Sie sollten also immer sicherstellen, dass Ihr Client beim Verbinden mit unseren APIs die SSL-Zertifikate überprüft (das ist ein Hauptgrund, warum wir https für API-Verbindungen verlangen). Außerdem, wenn Sie unachtsam mit der Nutzung von öffentlichen Code-Repositories wie github sind, kann Ihr API-Schlüssel leicht in der Wildnis landen. Dies ist kein akademisches Problem: Es gibt bekannte Bots, die github durchsuchen, um API-Schlüssel zu finden, und es hat erfolgreiche Angriffe über diesen Vektor gegeben.

IP-Whitelisting zur Rettung

Wenn Sie einen API-Schlüssel erstellen, können Sie jetzt eine Liste von IPs angeben, die zur Verwendung dieses Schlüssels berechtigt sind. Sie können mehrere IPs sowie IP-Blöcke mit 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 den Zugriff zu erlauben oder zu verweigern.

Mit dieser Funktion können selbst bei Auffinden oder Diebstahl Ihres API-Schlüssels nur Ihre Server diesen verwenden. Angesichts der Risiken und wie einfach es ist, diese Funktion einzurichten, empfehlen wir nachdrücklich allen unseren Kunden, diese Funktion zu nutzen.

Wenn Sie einen API-Schlüssel erstellen, können Sie jetzt eine Liste von IPs angeben, die zur Verwendung dieses Schlüssels berechtigt sind. Sie können mehrere IPs sowie IP-Blöcke mit 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 den Zugriff zu erlauben oder zu verweigern.

Mit dieser Funktion können selbst bei Auffinden oder Diebstahl Ihres API-Schlüssels nur Ihre Server diesen verwenden. Angesichts der Risiken und wie einfach es ist, diese Funktion einzurichten, empfehlen wir nachdrücklich allen unseren Kunden, diese Funktion zu nutzen.

Wenn Sie einen API-Schlüssel erstellen, können Sie jetzt eine Liste von IPs angeben, die zur Verwendung dieses Schlüssels berechtigt sind. Sie können mehrere IPs sowie IP-Blöcke mit 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 den Zugriff zu erlauben oder zu verweigern.

Mit dieser Funktion können selbst bei Auffinden oder Diebstahl Ihres API-Schlüssels nur Ihre Server diesen verwenden. Angesichts der Risiken und wie einfach es ist, diese Funktion einzurichten, empfehlen wir nachdrücklich allen unseren Kunden, diese Funktion zu nutzen.

Letzte Worte

Einige persönliche Empfehlungen zur Sicherheit:

  • Bewahren Sie Ihre API-Schlüssel nicht im Code auf. Es hat viele Vorteile, sie als Umgebungsvariablen zu halten, wie es Heroku tut.

  • Sie können eine unbegrenzte Anzahl von API-Schlüsseln erstellen, und es ist für die Sicherheit am besten, die Verantwortlichkeiten auf mehrere API-Schlüssel zu verteilen, anstatt nur einen Allzweck-Schlüssel zu verwenden. Dadurch können Sie auch unterschiedliche IP-Whitelists pro Schlüssel haben, für eine noch bessere Trennung der Aufgaben.

  • Wenn Sie mit Dritten arbeiten, teilen Sie nicht Ihren API-Schlüssel, sondern erstellen Sie einen neuen für sie, mit nur den erforderlichen 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 auf Ihrem SparkPost-Konto ein Muss und dauert nur 2 Minuten.

Einige persönliche Empfehlungen zur Sicherheit:

  • Bewahren Sie Ihre API-Schlüssel nicht im Code auf. Es hat viele Vorteile, sie als Umgebungsvariablen zu halten, wie es Heroku tut.

  • Sie können eine unbegrenzte Anzahl von API-Schlüsseln erstellen, und es ist für die Sicherheit am besten, die Verantwortlichkeiten auf mehrere API-Schlüssel zu verteilen, anstatt nur einen Allzweck-Schlüssel zu verwenden. Dadurch können Sie auch unterschiedliche IP-Whitelists pro Schlüssel haben, für eine noch bessere Trennung der Aufgaben.

  • Wenn Sie mit Dritten arbeiten, teilen Sie nicht Ihren API-Schlüssel, sondern erstellen Sie einen neuen für sie, mit nur den erforderlichen 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 auf Ihrem SparkPost-Konto ein Muss und dauert nur 2 Minuten.

Einige persönliche Empfehlungen zur Sicherheit:

  • Bewahren Sie Ihre API-Schlüssel nicht im Code auf. Es hat viele Vorteile, sie als Umgebungsvariablen zu halten, wie es Heroku tut.

  • Sie können eine unbegrenzte Anzahl von API-Schlüsseln erstellen, und es ist für die Sicherheit am besten, die Verantwortlichkeiten auf mehrere API-Schlüssel zu verteilen, anstatt nur einen Allzweck-Schlüssel zu verwenden. Dadurch können Sie auch unterschiedliche IP-Whitelists pro Schlüssel haben, für eine noch bessere Trennung der Aufgaben.

  • Wenn Sie mit Dritten arbeiten, teilen Sie nicht Ihren API-Schlüssel, sondern erstellen Sie einen neuen für sie, mit nur den erforderlichen 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 auf 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.