Das Geschäftsumfeld wandelt sich. Unternehmen haben sich auf den Weg der digitalen Transformation begeben und neue Technologien eingeführt, die es ihnen ermöglichen, schnell zu agieren und die Art der Zusammenarbeit zu ändern, Kosten zu senken und die Produktivität zu steigern. Diese Technologien haben jedoch den traditionellen Schutzwall verschwinden lassen, und die Identität ist zur neuen Verteidigungslinie geworden.
Moderne Herausforderungen erfordern moderne Sicherheitsansätze. Die Verwendung von Passwörtern zur Authentifizierung des privilegierten Zugriffs auf unternehmenskritische Ressourcen ist nicht mehr akzeptabel. Passwörter sind berüchtigt dafür, dass sie unsicher sind, zu Ermüdung führen und ein falsches Gefühl von Sicherheit vermitteln. Unternehmen müssen passwortlose Lösungen einführen - hier kommt die SSH-Schlüssel-basierte Authentifizierung ins Spiel.
Was ist das SSH-Protokoll?
Das 1995 von Tatu Ylönen entwickelte SSH-Protokoll, das auch als Secure Shell oder Secure Socket Shell bekannt ist, ist ein Netzwerkprotokoll, das Systemadministratoren eine sichere Möglichkeit bietet, über ein ungesichertes Netzwerk auf entfernte Ressourcen zuzugreifen.
SSH bietet eine Authentifizierung auf der Grundlage von Kennwörtern oder öffentlichen Schlüsseln und verschlüsselt Verbindungen zwischen zwei Netzwerkendpunkten. Es ist eine sichere Alternative zu herkömmlichen Anmeldeprotokollen (wie telnet, rlogin) und unsicheren Dateiübertragungsmethoden (wie FTP).
SSH bietet nicht nur eine starke Verschlüsselung, sondern wird auch häufig von Netzwerkadministratoren verwendet, um Systeme und Anwendungen aus der Ferne zu verwalten, software Patches bereitzustellen oder Befehle auszuführen und Dateien zu verschieben.
Wie das SSH-Protokoll funktioniert
Server (Host)-Authentifizierung
Das SSH-Protokoll ist in Unix- und Linux-Servern integriert, um sichere Verbindungen zwischen Systemen zu ermöglichen. Die Verbindung wird von einem SSH-Client hergestellt, der eine Verbindung zu einem SSH-Server herstellen will. Der SSH-Client initiiert
den Verbindungsaufbau und verwendet die Kryptographie mit öffentlichem Schlüssel, um die Identität des SSH-Servers zu überprüfen. Nach der Aufbauphase verwendet das SSH-Protokoll starke symmetrische Verschlüsselungs- und Hashing-Algorithmen, um die Vertraulichkeit und Integrität der zwischen Client und Server ausgetauschten Daten zu gewährleisten.
Die folgende Abbildung, die der NIST IR 7966 entnommen ist, zeigt einen vereinfachten Ablauf einer SSH-Verbindung:
1. Der Client initiiert die Verbindung zum SSH-Server.
2. Der Server sendet seinen öffentlichen Schlüssel an den Client.
3. Der öffentliche Schlüssel des Servers wird in der Datei der bekannten Hosts des Clients gespeichert.
4. Der Client und der Server handeln die Verbindungsparameter aus und stellen die Verbindung her.
Verschlüsselung und Integrität
Während des Verbindungsaufbaus verhandeln und vereinbaren Client und Server den symmetrischen Verschlüsselungsalgorithmus, der für ihre Kommunikation verwendet werden soll, und generieren den zu verwendenden Verschlüsselungsschlüssel.
Das SSH-Protokoll verwendet branchenübliche starke Verschlüsselungsalgorithmen wie AES, um die Kommunikation zwischen den beteiligten Parteien zu sichern. Darüber hinaus verwendet das Protokoll Hashing-Algorithmen wie SHA-2, um die Integrität der übertragenen Daten zu gewährleisten.
Client (Benutzer)-Authentifizierung
Das SSH-Protokoll ermöglicht die Client-Authentifizierung mit herkömmlichen Kennwörtern oder mit öffentlichen Schlüsseln. Angesichts der Risiken und Ineffizienzen bei der Verwendung von Passwörtern wird die Authentifizierung mit öffentlichen Schlüsseln jedoch immer häufiger verwendet. SSH-Schlüssel sind nicht nur viel stärker als Passwörter, sondern ermöglichen es Systemadministratoren auch, die Notwendigkeit einer manuellen passwortbasierten Anmeldung zu umgehen.
Wie authentifiziert sich ein Benutzer mit SSH-Schlüsseln? Er erzeugt ein öffentlich-privates Schlüsselpaar mit einem SSH-Client (z. B. OpenSSH) unter Verwendung von ssh-keygen command. Nach der Erstellung legt der Benutzer seinen autorisierten Schlüssel (öffentlicher Schlüssel) in der Datei authorized_keys auf dem Server ab, mit dem er sich verbinden möchte.
Wenn sich der Benutzer aus der Ferne mit Hilfe der schlüsselbasierten Authentifizierung anmeldet, sucht der OpenSSH-Server nach autorisierten Schlüsseln, und der Benutzer authentifiziert sich beim Server mit seinem entsprechenden privaten Schlüssel.
Da keine manuelle Authentifizierung erforderlich ist, wird die schlüsselbasierte Authentifizierung häufig zur Absicherung von Anwendungsfällen der IT-Prozessautomatisierung eingesetzt, z. B. zur Absicherung von automatisierten Dateiübertragungen, Sicherungs- und Kopierprozessen oder Konfigurationsmanagement-Tools (d. h. Ansible, Terraform, Chef oder Puppet).
Häufige Anwendungsfälle für das SSH-Protokoll
SSH-Verbindungen werden hauptsächlich zur Sicherung verschiedener Arten der Kommunikation zwischen einem lokalen Rechner und einem entfernten Host verwendet, darunter:
- Sicherer Fernzugriff auf Ressourcen
- Fernausführung von Befehlen
- Bereitstellung von software Patches und Updates
- Interaktive und automatische Dateiübertragung
Neben der Schaffung eines sicheren Kanals zwischen lokalen und entfernten Computern wird das SSH-Protokoll auch für die Verwaltung wichtiger Unternehmensinfrastrukturen wie Router, Server hardware, Virtualisierungsplattformen und Betriebssysteme verwendet.
SSH-Schlüssel werden verwendet, um den Zugang zu Servern zu automatisieren, und werden häufig in Skripten, Sicherungssystemen und Konfigurationsmanagement-Tools eingesetzt. Aufgrund ihres Designs, das Verbindungen über Unternehmensgrenzen hinweg ermöglicht, bieten SSH-Schlüssel Single-Sign-On-Funktionen (SSO), mit denen Benutzer zwischen ihren Konten wechseln können, ohne jedes Mal ein Passwort eingeben zu müssen
SSH in einer perimeterlosen Umgebung
Fortschritte in der Technologie und Notfallsituationen wie die COVID-19-Krise im Gesundheitswesen haben das Interesse an SSH und die Akzeptanz von SSH verstärkt.
Unternehmen wechseln nicht nur in die Cloud, sondern nutzen auch eine Fülle von cloudbasierten PaaS-, IaaS- und SaaS-Plattformen. Gleichzeitig haben sie noch viele ältere, geschäftsorientierte Anwendungen, die vor Ort gehostet werden. In dieser hybriden Multi-Cloud-Umgebung besteht die größte Herausforderung in der Aufrechterhaltung eines robusten und effektiven Identitäts- und Zugriffsmanagementsystems (IAM).
Herkömmliche Authentifizierungsmechanismen auf der Basis von Passwörtern funktionieren nicht mehr und sind überall dort, wo sie vorhanden sind, die Quelle von Unklarheiten und Reibungsverlusten, die zu zahlreichen Datenschutzverletzungen oder Vorfällen aufgrund von Missbrauch von Anmeldeinformationen führen.
Auf der anderen Seite nutzt DevOps native, bekannte Tools und Prozesse in einer agilen und iterativen Weise in Teams, die autark und in der Lage sind, schnelle und häufige, sogar tägliche, Code-Releases durchzuführen. Trotz
Trotz der offensichtlichen Vorteile eines hochautomatisierten, hochfrequenten Veröffentlichungszyklus gibt es Herausforderungen zu bewältigen, insbesondere bei der Sicherung der software . Unternehmen müssen sicherstellen, dass Anwendungen und Aktualisierungen bereitgestellt werden, die nicht von böswilligen Akteuren manipuliert oder verändert wurden, um bei der Installation auf den Geräten der Endbenutzer als Trojaner zu fungieren.
Und schließlich hat die COVID-19-Krise Millionen von Mitarbeitern dazu gezwungen, von zu Hause aus zu arbeiten, ihre eigenen Geräte zu verwenden und über ihr privates WLAN auf Unternehmensressourcen zuzugreifen. Die IT-Sicherheitsteams stehen vor zahlreichen neuen Herausforderungen: Wie lässt sich ein starkes Authentifizierungsschema durchsetzen, das sicherstellt, dass nur autorisierte Personen und Geräte auf sensible Unternehmensressourcen zugreifen?
Für all diese modernen Herausforderungen ist das SSH-Protokoll die moderne Lösung. Bei DevOps ist SSH der grundlegende Sicherheitsbaustein, der den schnellen, häufigen und hoch automatisierten Build- und Release-Prozess ermöglicht, der von DevOps bevorzugt wird. In Multi-Cloud- und Remote-Arbeitsumgebungen bietet das SSH-Protokoll die Lösung für eine passwortlose Zugriffsverwaltung, die ein reibungsloses Single-Sign-On (SSO) ermöglicht. SSH kann auch für die Ausstellung von zeitlich begrenzten, ephemeren Zertifikaten verwendet werden, die ablaufen, wenn die Autorisierung abgelaufen ist.
Durch den Einsatz von SSH in Verbindung mit IAM-Automatisierungsplattformen können Unternehmen ihre Authentifizierungssysteme nicht nur für privilegierte Benutzer (PAM), sondern für jeden Mitarbeiter und/oder jedes Gerät, das Zugriff auf Unternehmensressourcen beantragt, stärken.
Die Risiken des Missbrauchs von SSH-Schlüsseln
Die oben genannten Anwendungsfälle verdeutlichen die Bedeutung von SSH-Schlüsseln und ihrer sicheren und effektiven Verwaltung. Das Problem ist, dass sich die meisten Unternehmen der großen Anzahl von SSH-Schlüsseln, die sie besitzen, nicht bewusst sind und diese Schlüssel daher nicht verfolgt und verwaltet werden. Unverwaltete Schlüssel setzen Unternehmen erheblichen Risiken aus, die im schlimmsten Fall zu einem monatelangen Ausfall wichtiger Informationssysteme führen können.
SSH-Schlüssel bieten den gleichen Zugang wie Benutzernamen und Passwörter. Darüber hinaus gewähren sie häufig Root-Zugriff auf privilegierte Konten auf Betriebssystemebene und bieten eine command Leitung. Sie gewähren auch Zugriff auf Ressourcen - Produktionsserver, Datenbanken, Router, Firewalls, Notfallwiederherstellungssysteme, Finanzdaten, Zahlungssysteme, geistiges Eigentum und Patienteninformationen.
Ein Angreifer, der sich Root-Zugriff verschafft, kann alles auf dem Server tun - einschließlich der Einspeisung betrügerischer Daten, der Unterwanderung der Verschlüsselung software, der Installation dauerhafter Malware oder der völligen Zerstörung des Systems. Die Vertraulichkeit, die Integrität und die Kontinuität des Betriebs sind gefährdet. Selbst wenn der Schlüssel keinen Root-Zugriff erlaubt, können lokale Schwachstellen zur Ausweitung der Rechte oft dazu führen, dass der Angreifer Root-Zugriff erlangt.
Nachfolgend sind nur einige Beispiele aufgeführt:
- Ursprünglich ein Banking-Trojaner, der 2016 erstmals auftauchte, hat sich TrickBot zu einer universellen Crimeware-Lösung entwickelt, die nun vor allem auf Unternehmensumgebungen abzielt. Im Jahr 2019 fügte TrickBot SSH-Key-Grabbing-Funktionen für PuTTY (SSH-Client für Microsoft) und OpenSSH hinzu.
- Die CryptoSink-Kampagne zum Krypto-Mining von Elasticsearch-Systemen öffnet eine Hintertür zu den Zielservern, indem die SSH-Schlüssel des Angreifers hinzugefügt werden.
- Die Malware Kaji zielt auf IoT Geräte ab, die ihren SSH-Port im Internet offen gelassen haben. Laut den Forschern, die diese Malware entdeckt haben, nutzt Kaiji das Gerät auf drei Arten, sobald es Zugriff auf das Root-Konto des Geräts erlangt hat. Erstens, für DDoS-Angriffe. Zweitens, um weitere SSH-Brute-Force-Angriffe gegen andere Geräte durchzuführen. Drittens, um alle lokalen SSH-Schlüssel zu stehlen und auf andere Geräte zu übertragen, die das Root-Konto in der Vergangenheit verwaltet hat.
- Im Jahr 2016 nutzte die Cyberkriminellengruppe BlackEnergy, die es auf die ukrainischen Stromversorger und Medien abgesehen hatte, einen hinterlistigen SSH-Server namens Dropbear. Den ESET-Forschern zufolge setzten die Angreifer eine Variante dieses software auf kompromittierten Rechnern ein, die so vorkonfiguriert waren, dass sie ein fest codiertes Passwort und einen Schlüssel für die SSH-Authentifizierung akzeptieren. Indem sie SSH auf dem Server in einem kompromittierten Netzwerk ausführen, können die Angreifer jederzeit in das Netzwerk zurückkehren, wenn sie wollen.
Schlussfolgerung
Um von den Vorteilen des SSH-Protokolls zu profitieren und sich gegen den Missbrauch von SSH-Schlüsseln zu schützen, müssen Sie für vollständige Transparenz und Informationen über alle autorisierten SSH-Schlüssel sorgen, die vom Unternehmen vor Ort und in der Cloud verwendet werden.
Da Angreifer jedoch auch ihre eigenen SSH-Schlüssel in Zielumgebungen einfügen können, ist es wichtig, sich nicht nur auf die bekannten Schlüssel zu konzentrieren, sondern alle Schlüssel, die in Ihrem Unternehmen verwendet werden, zu ermitteln und zu analysieren.
Wenn Sie mehr über die Herausforderungen der Ausbreitung von SSH-Schlüsseln erfahren möchten und wie Sie die Kontrolle zurückgewinnen können, nehmen Sie an unserem kommenden Webinar Ghost Hunt: How to Find & Secure SSH Keys in Your Network teil.