Betrieb von SSH Server aufsetzen nach IT-Grundschutz

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Ziel der Schulung

Diese Schulung zeigt, wie ein SSH-Server auf einem Linux-System gemäß den IT-Grundschutz-Richtlinien des BSI sicher aufgesetzt und betrieben wird. Ziel ist es, eine sichere und robuste Remote-Verwaltung des Servers zu ermöglichen, die den Anforderungen an Vertraulichkeit und Integrität entspricht.

Annahmen

  • Betriebssystem: Ubuntu Server 20.04 LTS
  • SSH-Server: [OpenSSH](https://www.openssh.com/)
  • Nutzung: Remote-Verwaltung durch Administratoren
  • Sicherheitsanforderungen: Hohe Priorität auf Vertraulichkeit und Integrität, da über SSH kritische Verwaltungszugriffe erfolgen.

Planung und Vorbereitung

Sicherheitsanforderungen definieren

  • Vertraulichkeit: Die SSH-Verbindungen müssen verschlüsselt sein, um vor Abhören geschützt zu sein.
  • Integrität: Die Datenübertragung und Befehle müssen unverändert bleiben.
  • Verfügbarkeit: Der SSH-Dienst muss jederzeit für Administratoren erreichbar sein.

Rollen und Verantwortlichkeiten

  • Systemadministrator: Verantwortlich für die Installation, Konfiguration und Wartung des SSH-Servers.
  • Sicherheitsbeauftragter: Überprüfung der Sicherheitsmaßnahmen und regelmäßige Sicherheitsaudits.

IT-Grundschutz-Bausteine anwenden

Netzwerkinfrastrukturen (NET)

  • **NET.1: Netzwerksicherheit**
    • SSH-Kommunikation wird durch eine Firewall auf den benötigten Port (standardmäßig 22) beschränkt, um unautorisierte Zugriffe zu minimieren.
  • **NET.2: Sicherer Betrieb von Servern**
    • Der SSH-Server wird so konfiguriert, dass nur sichere Authentifizierungsverfahren und Protokolle verwendet werden.

Systemhärtung

Grundlegende Anforderungen an Applikationen (APP.1.2.A1)

  • Deaktivieren von unnötigen Diensten:
    • Beispiel: `sudo systemctl disable --now telnet` - Telnet wird deaktiviert, um sicherzustellen, dass nur verschlüsselte Verbindungen erlaubt sind.
  • Regelmäßige Updates:
    • Beispiel: `sudo apt update && sudo apt upgrade -y`
    • Grund: Um bekannte Sicherheitslücken schnell zu schließen.

SSH-Server-Härtung

  • Entfernen von unsicheren Protokollen:
    • Beispiel: In der SSH-Konfiguration (`/etc/ssh/sshd_config`): `Protocol 2` - Nur das sichere Protokoll 2 wird zugelassen.
  • Sicherheitsmodule und Optionen:
    • Beispiel: SSH-Banner konfigurieren (`Banner /etc/issue.net`), um Administratoren an die Sicherheitsrichtlinien zu erinnern.

Sichere Konfiguration des SSH-Servers

Benutzerzugang beschränken

  • Nur autorisierte Benutzer:
    • Beispiel: In der SSH-Konfigurationsdatei (`/etc/ssh/sshd_config`):
 AllowUsers adminuser
    • Grund: Reduziert das Risiko von unbefugtem Zugriff durch Beschränkung auf spezifizierte Benutzer.

Passwortauthentifizierung deaktivieren

  • Nur Schlüsselbasierte Authentifizierung:
    • Beispiel: In der SSH-Konfiguration (`/etc/ssh/sshd_config`):
 PasswordAuthentication no
 PubkeyAuthentication yes
    • Grund: Verhindert Brute-Force-Angriffe auf Passwörter und erzwingt die Nutzung sicherer SSH-Schlüssel.

Root-Login deaktivieren

  • Root-Login ausschalten:
    • Beispiel: In der SSH-Konfiguration (`/etc/ssh/sshd_config`):
 PermitRootLogin no
    • Grund: Verhindert direkte Root-Zugriffe, um die Gefahr von Kompromittierung zu reduzieren. Administratoren sollten sich mit Benutzerkonten anmelden und dann `sudo` verwenden.

Port ändern

  • Standardport ändern:
    • Beispiel: In der SSH-Konfiguration (`/etc/ssh/sshd_config`):
 Port 2222
    • Grund: Erschwert automatisierte Angriffe, die den Standardport 22 anvisieren.

Monitoring und Protokollierung

Log-Management

  • Aktivieren und Überwachen der SSH-Logs:
    • Beispiel: Logs finden sich unter `/var/log/auth.log`. Konfiguriere `rsyslog` oder ein anderes Logging-Tool für gezielte Überwachung.
    • Grund: Überwachung sicherheitsrelevanter Ereignisse, wie fehlgeschlagene Anmeldeversuche.

Automatische Überwachung

  • Tools zur Überwachung:
    • Beispiel: [Fail2Ban](https://www.fail2ban.org/) installieren und konfigurieren, um nach mehreren fehlgeschlagenen Anmeldeversuchen die IP zu sperren: `sudo apt install fail2ban`
    • Konfigurationsdatei: `/etc/fail2ban/jail.local` mit Regeln für SSH anpassen:
 [sshd]
 enabled = true
 port = 2222
 filter = sshd
 logpath = /var/log/auth.log
 maxretry = 3
    • Grund: Schutz vor Brute-Force-Angriffen.

Regelmäßige Sicherheitsüberprüfungen und Patches

Schwachstellenmanagement

  • Beispiel: Regelmäßige Nutzung von [Lynis](https://cisofy.com/lynis/) zur Sicherheitsprüfung: `sudo apt install lynis && sudo lynis audit system`
  • Grund: Erkennung und Behebung von Schwachstellen.

Penetrationstests und Audits

  • Regelmäßige Sicherheitstests durchführen:
    • Beispiel: Internes Audit-Tool oder externe Penetrationstests einsetzen.
    • Grund: Sicherstellung, dass der Server keine neuen Schwachstellen hat.

Notfallmanagement

Incident Response Plan

  • Verfahren zur Reaktion auf Sicherheitsvorfälle entwickeln:
    • Beispiel: Eine Checkliste für Sicherheitsvorfälle erstellen und regelmäßig testen.
  • Grund: Schnelle und effektive Reaktion bei Sicherheitsvorfällen.

Dokumentation

  • Alle Maßnahmen und Konfigurationen dokumentieren:
    • Beispiel: Eine Wiki-Seite für die Konfigurationsdokumentation und Sicherheitsprotokolle pflegen.
  • Grund: Gewährleistung der Nachvollziehbarkeit und Unterstützung bei der Fehlersuche.

Quellen

Fazit

Durch die Anwendung dieser Schritte und Maßnahmen stellen wir sicher, dass der SSH-Server nach den Richtlinien des IT-Grundschutzes sicher betrieben wird. Die Einhaltung dieser Standards schützt den Server vor bekannten Bedrohungen und trägt zu einer stabilen und sicheren IT-Infrastruktur bei.