IP-Whitelist für API-Schlüssel
·
19.08.2015

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?
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.
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.
IP-Whitelisting zur Rettung
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



