Tierney - stock.adobe.com
6 Tipps zum besseren Schutz von Netzwerken mit SSH
Die Secure Shell (SSH) ist eine unverzichtbare Anwendung in Unternehmen. Standardinstallationen können aber massive Löcher in der Verteidigung vor Cyberangriffen aufreißen.
Die große Mehrheit der Netzwerkadministratoren wäre ohne SSH (Secure Shell) nicht in der Lage, ihren Job zu erledigen. Das Protokoll hat in den vergangenen Jahren unsichere Mechanismen wie Telnet und FTP (File Transfer Protocol) weitgehend ersetzt. Es ist daher zu einem der wichtigsten Standards für Fernzugriffe und Remote-Administration geworden. SSH garantiert die Vertraulichkeit und Integrität der übertragenen Daten, die zwischen verschiedenen Netzwerken und Systemen ausgetauscht werden. Darüber hinaus ermöglicht es eine sichere Authentifizierung auf Basis von PKI (Public Key Infrastructure).
Das ändert aber nichts daran, dass eine SSH-Standardinstallation per se noch nicht sicher ist. Wenn Administratoren nicht eine Reihe von wichtigen Maßnahmen durchführen, machen sie ihr Netzwerk damit anfällig für neuartige Angriffe. Im Folgenden gehen wir daher auf sechs bewährte Best Practices ein, die Admins in ihre Richtlinien und Prozesse aufnehmen können, um ihre SSH-Installationen abzusichern.
1. Starke Authentifizierung
Hacker suchen kontinuierlich nach SSH-Servern, um dann per Brute Force zu testen, ob sie Nutzernamen und Passwörter erraten können. Es ist daher empfehlenswert, die Nutzung starker Kennwörter zu erzwingen und Passwort-freie Logins aus der Ferne zu blockieren. Für die Kontrolle können Sie auch das Open-Source-Tool John the Ripper einsetzen. Es spürt schwache Passwörter auf. Ratsam ist zudem, die Authentifizierung direkt am Server zu deaktivieren und stattdessen auf Schlüssel-basierte Anmeldungen zu setzen. Außerdem sollten Sie eine Zwei-Faktor-Authentifizierung für alle Logins vorschreiben. Private Schlüssel sollten ebenfalls mit einer starken Passphrase geschützt werden.
2. Das Prinzip der geringsten nötigen Rechte (Least Privilege)
Folgen Sie dem Least-Privilege-Prinzip (Prinzip der minimalen Rechtevergabe). Es ist sehr hilfreich, wenn es darum geht, wer und wie SSH nutzen darf. Erlauben Sie SSH-Logins nur Anwendern, die für ihre beruflichen Tätigkeiten auf einen Fernzugriff angewiesen sind.
Stellen Sie darüber hinaus sicher, dass diese Nutzer auch nur die Berechtigungen erhalten, die sie für ihre Aufgaben tatsächlich benötigen. Deaktivieren Sie auf jeden Fall alle SSH-Logins als Nutzer „root“. Fügen Sie stattdessen die Administratoren zur sudo-Gruppe hinzu, so dass sie sich als reguläre Anwender einloggen können. Anschließend können sie dann das su-Kommando verwenden, um Befehle mit root-Rechten auszuführen.
Vergessen Sie auch nicht, einen Timeout festzulegen, so dass Sie keine unbeaufsichtigten SSH-Sessions haben. Inaktive Nutzer werden so automatisch ausgeloggt, sobald das festgelegte Intervall abgelaufen ist.
3. Sichere Konfiguration
Aktualisieren Sie Ihre SSH-Server regelmäßig, so dass sie immer die jeweils aktuelle Softwareversion sowie SSH-2 verwenden. SSH-2 bietet eine höhere Sicherheit als SSH-1. Letzterer Standard wird daher mittlerweile auch in zahlreichen Compliance-Vorgaben untersagt. Deaktivieren Sie zudem das Port Forwarding für SSH-Traffic, so dass unerwünschte Verbindungen sich nicht mehr in verschlüsseltem SSH-Datenverkehr verstecken können.
Einen kleinen Vorteil erhalten Sie, wenn SSH nicht mehr auf Port 22, sondern auf einem anderen Port lauschen lassen. Dieser Trick nach dem Motto „Security by Obscurity“ hilft gegen automatisierte Scans durch Amateur-Hacker oder auch sogenannte Script Kiddies, schützt aber nicht vor ernsthaften Versuchen, Ihren SSH-Server aufzuspüren.
Welchen Port auch immer Sie nutzen, legen Sie ein Bandbreiten-Limit fest. So erhalten Sie eine simple, aber effektive Drosselung der eingehenden Verbindungen. Setzen Sie zudem eine Begrenzung für die maximale Zahl an Authentifizierungsversuchen, die pro Verbindung erlaubt sind. So können Sie sich vor Brute-Force-Attacken schützen.
SSH-Ports sollten aber trotzdem niemals offen für externe, nicht vertrauenswürdige Verbindungen sein. Konfigurieren Sie daher Ihre Firewall so, dass sie nur Verbindungen von bekannten IP-Adressen zum SSH-Server zulässt. Ihre Schutzmaßnahmen am Perimeter sollten zudem dafür sorgen, dass alle wiederholten Login-Versuche von ein und derselben IP-Adresse protokolliert und automatisch geblockt werden.
Port Knocking ist eine weitere Technik, mit der Sie eine zusätzliche Schutzebene erhalten. Sie nutzt Firewall-Regeln, die nur Anwendern einen Zugang zum Netzwerk per Login erlauben, die ein „geheimes Klopfzeichen“ kennen.
Dabei werden ein spezieller Port und eine bestimmte Abfolge von Verbindungsversuchen eingesetzt, die auch als „Klopfsequenz" bezeichnet werden. Damit können Sie verhindern, dass ein Angreifer ein System auf offene Ports scannt, um verwundbare Services aufzuspüren. Ohne die korrekte Klopfsequenz erscheinen die geschützten Schnittstellen wie geschlossene Ports. Eine weitere Möglichkeit ist die Nutzung eines Bastion Hosts, der unerwünschte SSH-Anfragen automatisch blockiert.
Sorgen Sie außerdem dafür, dass nur speziell ausgewiesene Admins die SSH-Server konfigurieren dürfen. Damit verhindern Sie unter anderem Wildwuchs.
4. Monitoring und Auditing
Die bisher beschriebenen Schritte sollten durchgeführt werden, bevor der SSH-Server mit dem Internet verbunden wird. Sobald er einmal live gegangen ist, muss er zudem kontinuierlich überwacht und immer wieder kontrolliert werden.
Überprüfen Sie regelmäßig alle SSH-Logins und -Aktivitäten, um jeglichen ungewöhnlichen Vorgängen frühzeitig auf die Schliche zu kommen. Führen Sie zudem immer wieder Audits durch, mit denen Sie neue Server aufspüren können, die einen Zugang per SSH ermöglichen. Außerdem lassen sich so unerlaubte Änderungen an den Einstellungen feststellen.
Durch diese Maßnahmen verhindern Sie, dass nicht autorisierte oder unsichere SSH-Server ein Risiko für das gesamte Netzwerk darstellen. Es gibt mehrere Tools, mit denen Sie diese Prozesse automatisieren können. Sie werden unter Punkt 6 vorgestellt.
5. Ausbildung und Schulungen
Wiederholtes Training ist unverzichtbar. Sorgen Sie dafür, dass alle Nutzer über die Richtlinien und Prozeduren in Ihrem Unternehmen informiert werden, wenn es um das Thema SSH geht. Prüfen Sie zudem die Echtheit der öffentlichen Schlüssel jedes Mal, wenn mit ihnen eine Verbindung aufgebaut wird.
So können Sie auch MitM-Angriffe (Man-in-the-Middle) verhindern. Für SSH verwendete Schlüssel sollten niemals hart codiert sein und auch nicht in einem System zur Versionskontrolle oder in öffentlichen Repositories gespeichert oder gesichert werden. Viele Firmen sind offen wie Scheunentor für SSH-basierte Angriffe, weil sie nicht über die von ihnen ausgegebenen und noch aktiven SSH-Schlüssel Bescheid wissen. Das Verhindern der unkontrollierten Nutzung von SSH-Schlüsseln ist daher eine der grundlegenden Maßnahmen, um Angriffe per SSH zu verhindern.
6. Schlüsselmanagement
Setzen Sie dedizierte Werkzeuge ein, um das Risiko für Ihre SSH-Implementation einschätzen zu können. Diese Tools sind nützlich, um die oft zahlreich vorhandenen SSH-Schlüssel zu verwalten. Sie scannen das Netzwerk nach SSH-Servern und überprüfen dann ihre Konfiguration.
So lassen sich der Speicherort und die Nutzung der Schlüssel herausfinden. Die Programme können zudem nach Schwächen in der Konfiguration suchen. So stellen Sie sicher, dass alle verfügbaren Schlüssel aktiv gemanagt werden und dass jeder einzelne von ihnen mit nur einer bestimmten Person oder einem bestimmten Gerät verbunden ist. Eine weitere wichtige Maßnahme ist eine kontinuierliche Rotation der Schlüssel. Sie sorgt dafür, dass regelmäßig neue Schlüssel generiert werden, so dass nicht über einen längeren Zeitraum die immer gleichen Exemplare verwendet werden.
Es gibt auf dem Markt mehrere Lösungen für SSH-Risikobewertungen. Die Software von SSH Communications Security Inc. erstellt einen Bericht der größten SSH-Risiken in einer Umgebung und zeigt anhand von Visualisierungen wie verschiedene Verbindungen aufgebaut sind und welche Aktionen empfohlen werden, um die Gefahren zu minimieren.
Scans sorgen zudem dafür, dass auch die Konfigurationsdateien überprüft werden, um den exakten Ort und die Nutzung jedes Schlüssels zu bestimmen. Der Anbieter Venafi erstellt ähnliche Berichte mit seinem Werkzeug SSH Risk Assessment. Es zeigt ebenfalls die aktuellen Risiken und gibt Empfehlungen, um die Bedrohungen für die SSH-Umgebung zu reduzieren. Beide Firmen bieten darüber hinaus Lösungen zum Lifecycle-Management der SSH-Keys an, um die vorhandenen Schlüssel zu inventarisieren und um bislang als vertrauenswürdig eingestufte Verbindungen offenzulegen. Weitere Anbieter, die Management-Tools für SSH-Schlüssel im Portfolio haben, sind Userify und Keyfactor.
Auch im Open-Source-Bereich gibt es einige SSH-Tools. So sind CloudSploit und die Scout Suite zwei interessante Projekte, die potentielle Fehlkonfigurationen und Sicherheitsrisiken in Cloud-Umgebungen aufdecken können. Gerade in der Cloud finden sich häufig nur mangelhaft konfigurierte SSH-Dienste.
SSH ist und bleibt eine unverzichtbare Technik, um die Sicherheit im Netzwerk zu erhöhen. Das gilt aber nur solange der Einsatz von SSH-Servern und ihr Management durch bewährte Best Practices abgesichert werden. Hacker werden auf diese Weise daran gehindert, SSH als Hintertür ins Firmennetz zu missbrauchen. Angriffe gegen mangelhaft geschützte und schlecht konfigurierte SSH-Server werden aber immer häufiger. Aktualisieren Sie daher Ihre SSH-Richtlinien und -Verfahren, um für eine sichere Verwendung des Protokolls zu sorgen.