Bastion sichern

Dieses Thema enthält Sicherheitsinformationen und Empfehlungen für Bastion.

Oracle Cloud Infrastructure Bastion bietet begrenzten und begrenzten Zugriff auf Zielressourcen, die keine öffentlichen Endpunkte haben. Mit Bastionen können autorisierte Benutzer mithilfe von Secure Shell-(SSH-)Sessions eine Verbindung von bestimmten IP-Adressen zu Zielressourcen herstellen. Bei einer Verbindung können Benutzer mit der Zielressource über jede von SSH unterstützte Software oder jedes unterstützte Protokoll interagieren. Beispiel: Sie können das Remote Desktop Protocol (RDP) verwenden, um eine Verbindung zu einem Windows-Host herzustellen, oder mit Oracle Net Services eine Verbindung zu einer Datenbank herstellen.

Sicherheitszuständigkeiten

Um Bastion sicher zu verwenden, müssen Sie sich mit Ihren Zuständigkeiten im Bereich Sicherheit und Compliance vertraut machen.

Im Allgemeinen bietet Oracle Sicherheit für Cloud-Infrastruktur und -Vorgänge, wie Zugriffskontrollen für Cloud-Benutzer und Infrastruktursicherheits-Patching. Sie sind für die sichere Konfiguration Ihrer Cloud-Ressourcen verantwortlich. Für die Sicherheit in der Cloud sind Sie und Oracle gleichermaßen verantwortlich.

Oracle ist für die folgenden Sicherheitsanforderungen verantwortlich:

  • Physische Sicherheit: Oracle ist für den Schutz der globalen Infrastruktur verantwortlich, auf der alle in Oracle Cloud Infrastructure angebotenen Services ausgeführt werden. Diese Infrastruktur besteht aus Hardware, Software, Netzwerken und Einrichtungen, die Oracle Cloud Infrastructure-Services ausführen.

Ihre Sicherheitszuständigkeiten sind auf dieser Seite beschrieben. Sie umfassen die folgenden Bereiche:

  • Zugriffskontrolle: Beschränken Sie Berechtigungen so weit wie möglich. Benutzern sollte nur der erforderliche Zugriff zum Ausführen ihrer Aufgaben erteilt werden.
  • Netzwerksicherheit: Schränken Sie die Knoten in Ihrem Cloud-Netzwerk ein, die auf Bastionen zugreifen können.
  • Hostsicherheit: Konfigurieren Sie SSH auf Clients und Zielinstanzen, um maximale Sicherheit zu gewährleisten.

Erste Sicherheitsaufgaben

Mit dieser Checkliste können Sie die Aufgaben identifizieren, die zum Sichern von Bastion in einem neuen Oracle Cloud Infrastructure-Mandanten ausgeführt werden.

Aufgabe Weitere Informationen
Mit IAM-Policys Benutzern und Ressourcen Zugriffsberechtigungen erteilen IAM-Policys
Beim Erstellen von Bastionen den Netzwerkzugriff einschränken Netzwerksicherheit

Routinemäßige Sicherheitsaufgaben

Nachdem Sie die ersten Schritte mit Bastion ausgeführt haben, ermitteln Sie mit dieser Checkliste, welche Sicherheitsaufgaben Sie regelmäßig ausführen sollten.

Aufgabe Weitere Informationen
Zielinstanzen in IAM integrieren Access Control
Sichere Kommunikation zwischen Kunden und Bastionen Datenverschlüsselung
Konfigurieren Sie den SSH-Server auf Zielinstanzen für maximale Sicherheit Schützen
Sicherheitsaudit ausführen Prüfen

IAM-Policys

Schränken Sie mit Policys den Zugriff auf Bastion ein.

In einer Policy ist definiert, wer wie auf Oracle Cloud Infrastructure-Ressourcen zugreifen kann. Weitere Informationen finden Sie unter Funktionsweise von Policys.

Weisen Sie einer Gruppe jeweils nur die geringsten Berechtigungen zu, die diese Gruppe benötigt, um ihre Zuständigkeiten ausführen zu können. Jede Policy enthält ein Verb, das beschreibt, welche Aktionen die Gruppe ausführen darf. Folgende Verben sind verfügbar (sortiert nach Berechtigung): inspect, read, use und manage.

Bastion unterstützt Policy-Variablen, um den Zugriff auf Bastionen weiter einzuschränken, einschließlich:

  • target.bastion-session.username: Schränken Sie den Zugriff auf bestimmte POSIX-Betriebssystembenutzernamen ein, wenn Sie eine Session erstellen, die eine Verbindung zu einer Compute-Instanz herstellt.
  • target.resource.ocid: Schränken Sie den Zugriff auf bestimmte Compute-Instanzen beim Erstellen einer Session ein.
Hinweis

Es wird empfohlen, den Zugriff auf den opc-Benutzer (und den ubuntu-Benutzer in Ubuntu-Plattformimages) einzuschränken, da er standardmäßig über sudoer-Funktionen für Oracle Cloud Infrastructure-Plattformimages verfügt.

Es wird empfohlen, einem Mindestset von IAM-Benutzern und -Gruppen DELETE-Berechtigungen zu erteilen. Diese Vorgehensweise minimiert den Datenverlust durch versehentliches Löschen durch autorisierte Benutzer oder durch böswillige Akteure. Erteilen Sie DELETE-Berechtigungen nur Mandanten- und Compartment-Administratoren.

Verwalten aller Bastionen und Bastionsessions durch eine Gruppe zulassen

Benutzer in der Gruppe SecurityAdmins können alle Bastion-Ressourcen im gesamten Mandanten erstellen, aktualisieren und löschen:

Allow group SecurityAdmins to manage bastion-family in tenancy
Allow group SecurityAdmins to manage virtual-network-family in tenancy
Allow group SecurityAdmins to read instance-family in tenancy
Allow group SecurityAdmins to read instance-agent-plugins in tenancy
Allow group SecurityAdmins to inspect work-requests in tenancy
Erstellen einer Bastionsession durch eine Gruppe zulassen

Benutzern in der Gruppe BastionUsers das Erstellen, Verbinden und Beenden von Sessions im gesamten Mandanten erlauben:

Allow group BastionUsers to use bastion in tenancy
Allow group BastionUsers to manage bastion-session in tenancy
Allow group BastionUsers to manage virtual-network-family in tenancy
Allow group BastionUsers to read instance-family in tenancy
Allow group BastionUsers to read instance-agent-plugins in tenancy
Allow group BastionUsers to inspect work-requests in tenancy
Erstellen von Bastionsessions in einem bestimmten Compartment und nur für eine bestimmte Compute-Instanz durch eine Gruppe zulassen

Benutzern in der Gruppe SalesAdmins das Erstellen, Verbinden und Beenden von Sessions für einen bestimmten Zielhost im Compartment SalesApps erlauben:

Allow group SalesAdmins to use bastion in compartment SalesApps
Allow group SalesAdmins to manage bastion-session in compartment SalesApps where ALL {target.resource.ocid='<instance_OCID>'}
Allow group SalesAdmins to manage virtual-network-family in compartment SalesApps
Allow group SalesAdmins to read instance-family in compartment SalesApps
Allow group SalesAdmins to read instance-agent-plugins in compartment SalesApps
Allow group SalesAdmins to inspect work-requests in tenancy
Erstellen von Bastionsessions in einem bestimmten Compartment und mit einem bestimmten Benutzernamen durch eine Gruppe zulassen

Benutzern in der Gruppe SalesAdmins erlauben, Sessions im Compartment SalesApps und mit dem Benutzer opc zu erstellen, zu verbinden und zu beenden:

Allow group SalesAdmins to use bastion in compartment SalesApps
Allow group SalesAdmins to manage bastion-session in compartment SalesApps where ALL {target.bastion-session.username in ('opc')}
Allow group SalesAdmins to manage virtual-network-family in compartment SalesApps
Allow group SalesAdmins to read instance-family in compartment SalesApps
Allow group SalesAdmins to read instance-agent-plugins in compartment SalesApps
Allow group SalesAdmins to inspect work-requests in tenancy
Benutzern das Erstellen von Bastionsessions nur mit ihrem OCI-Benutzernamen erlauben

Zulassen, dass Benutzer Sessions im Compartment HRProd erstellen, verbinden und beenden, jedoch nur, wenn sie einen Benutzernamen angeben, der exakt mit ihrem IAM-Benutzernamen übereinstimmt:

Allow any-user to manage bastion-session in compartment HRProd where ALL {target.bastion-session.username=request.user.name}

Weitere Informationen zu Bastion-Policys und zum Anzeigen weiterer Beispiele finden Sie unter Bastion-Policys.

Zugriffskontrolle

Befolgen Sie neben dem Erstellen von IAM-Policys diese zusätzlichen Best Practices, um den Zugriff auf die Ziele zu sichern, mit denen Sie eine Verbindung zu Bastion herstellen.

Multifaktor-Authentifizierung (MFA) aktivieren

Mit dem Pluggable Authentication Module (PAM) können Sie Linux-Zielinstanzen in IAM integrieren, um die Endbenutzerauthentifizierung mit der Erst- und Zweitfaktorauthentifizierung durchzuführen.

Endbenutzer können sich mit SSH bei einem Linux-Server anmelden und sich mit ihren IAM-Benutzerzugangsdaten authentifizieren. Darüber hinaus können Sie die Multifaktor-Authentifizierungsfunktionen von IAM verwenden. Mit MFA werden Endbenutzer aufgefordert, sich mit einem zweiten Faktor zu authentifizieren, z.B. einem Einmalkennwortcode, der per E-Mail, SMS oder einer Authentikator-App gesendet wird, oder über Sicherheitsfragen.

  1. Stellen Sie vor der Konfiguration von PAM und MFA sicher, dass die SSH-Konfiguration der Instanz die Mindestanforderungen für Bastion erfüllt. Weitere Informationen finden Sie im Abschnitt SSH-Server ist nicht ordnungsgemäß auf Zielinstanz konfiguriert in Fehlerbehebung bei Bastion.
  2. Installieren und konfigurieren Sie PAM auf der Instanz, und aktivieren Sie dann MFA. Siehe MFA für die Authentifizierung bei Linux aktivieren.

Datenverschlüsselung

Befolgen Sie diese Best Practices für die Verwendung von SSH, um die Kommunikation zwischen Clients und Bastionen zu verschlüsseln.

Verwenden eines FIPS-zertifizierten Moduls

Wir empfehlen Ihnen, den OpenSSH 7.6-Client mit FIPS-Schutz (Federal Information Processing Standard) für alle Clientbetriebssysteme zu verwenden.

Weitere Informationen finden Sie in der OpenSSL FIPS-Dokumentation und im Programm zur Validierung von Verschlüsselungsmodulen.

Hinweis

Das kryptografische Clientmodul für Oracle Linux 7.8 OpenSSH hat noch keine FIPS-Zertifizierung erhalten. Siehe Oracle FIPS-Zertifizierungen.

Standardmäßig werden RSA-Schlüsselpaare in der OpenSSH-Clientversion 8 und höher nicht unterstützt. Um RSA-Schlüsselpaare zu aktivieren, müssen Sie der SSH-Konfiguration die folgende Strophe hinzufügen.

Host *
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

Weitere Informationen finden Sie in den Versionshinweisen zu OpenSSH.

SSH-Schlüsselpaare nicht für Sessions wiederverwenden

Generieren Sie für jede neue Bastionsession ein neues flüchtiges SSH-Schlüsselpaar neu.

Verwenden Sie zuvor generierte Schlüsselpaare nicht wieder. Erstellen Sie neue Schlüsselpaare für Portweiterleitung und verwaltete SSH-Sessiontypen.

Netzwerksicherheit

Sichern Sie den Netzwerkzugriff auf die Ressourcen, mit denen Sie eine Verbindung mit Bastion herstellen.

Wenn Sie eine Bastion erstellen, verwenden Sie die CIDR-Blockausnahmeliste, um einen oder mehrere Adressbereiche in CIDR-Notation anzugeben, von denen Sie Verbindungen zu von dieser Bastion gehosteten Sessions zulassen möchten.

Ein begrenzterer Adressbereich bietet bessere Sicherheit. Geben Sie keinen offenen CIDR-Bereich wie 0.0.0.0/0 an.

Schützen

Konfigurieren Sie den SSH-Server auf Ziel-Compute-Instanzen für maximale Sicherheit.

Es wird empfohlen, die Standardwerte für diese Einstellungen in /etc/ssh/sshd_config zu aktualisieren.

Festlegen Beschreibung
MaxAuthTries Gibt die maximal zulässige Anzahl an Authentifizierungsversuchen pro Verbindung an. Wenn die Anzahl der Fehler die Hälfte dieses Wertes erreicht, werden Fehler protokolliert.
ClientAliveCountMax Legt die Anzahl der aktiven Clientnachrichten fest, die gesendet werden können, ohne Nachrichten vom Client zurückzunehmen. Wenn dieser Schwellenwert erreicht wird, während Client-Live-Nachrichten gesendet werden, trennt der Server den Client und beendet die Session.
ClientAliveInterval Legt ein Timeoutintervall in Sekunden fest. Wenn keine Daten vom Client empfangen wurden, sendet der Server eine Nachricht über den verschlüsselten Kanal, um eine Antwort vom Client anzufordern.

Prüfen

Suchen Sie Zugriffslogs und andere Sicherheitsdaten für Bastion.

Der Audit-Service zeichnet automatisch alle API-Aufrufe an Oracle Cloud Infrastructure-Ressourcen auf. Sie können Ihre Sicherheits- und Complianceziele erreichen, indem Sie mit dem Audit-Service alle Benutzeraktivitäten in Ihrem Mandanten überwachen. Da alle Konsolen-, SDK- und Befehlszeilenaufrufe über unsere APIs laufen, werden alle Aktivitäten aus diesen Quellen einbezogen. Auditdatensätze sind über eine authentifizierte, filterbare Abfrage-API verfügbar, oder sie können als in Batches verwendete Dateien aus Object Storage abgerufen werden. Zu den Inhalten des Auditlogs gehören die aufgetretenen Aktivitäten, der Benutzer, der diese initiiert hat, Datum und Uhrzeit der Anforderung sowie Quell-IP, Benutzer-Agent und HTTP-Header der Anforderung. Siehe Auditlogereignisse anzeigen.

Beispiel für ein Auditlog

Im Folgenden finden Sie einen Auszug aus einem Protokolleintrag für die Erstellung einer neuen Bastionssitzung.

{
  "datetime": 1651547126164,
  "logContent": {
    "data": {
      "additionalDetails": {
        "X-Real-Port": 58181,
        "bastionId": "ocid1.bastion.oc1.<unique_id>",
        "bastionName": "mybastion",
        "displayName": "mysession",
        "lifecycleState": "CREATING",
        "sessionId": "ocid1.bastionsession.oc1.<unique_id>",
        "sessionType": "MANAGED_SSH",
        "targetResourceDisplayName": "mylinuxinstance",
        "targetResourceId": "ocid1.instance.oc1.<unique_id>",
        "targetResourceOperatingSystemUserName": "opc",
        "targetResourcePort": "22",
        "targetResourcePrivateIpAddress": "<target_ip_address>"
      },
      "availabilityDomain": "AD2",
      "compartmentId": "ocid1.compartment.oc1..<unique_id>",
      "compartmentName": "mycompartment",
      "definedTags": null,
      "eventGroupingId": "ocid1.bastionworkrequest.oc1.<unique_id>",
      "eventName": "CreateSession",
      "freeformTags": null,
      "identity": {
        "authType": "natv",
        "callerId": null,
        "callerName": null,
        "consoleSessionId": "<unique_id>",
        "credentials": "<unique_id>",
        "ipAddress": "<source_ip>",
        "principalId": "ocid1.user.oc1..<unique_id>",
        "principalName": "<user_id>",
        "tenantId": "ocid1.tenancy.oc1..<unique_id>",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
      },
      "message": "Session-20220502-2304 CreateSession succeeded",
      ...
  }
}

Wenn Sie Cloud Guard in Ihrem Mandanten aktiviert haben, werden alle Benutzeraktivitäten gemeldet, die potenzielle Sicherheitsbedenken darstellen. Wenn ein Problem erkannt wird, schlägt Cloud Guard Korrekturmaßnahmen vor. Sie können Cloud Guard auch so konfigurieren, dass bestimmte Aktionen automatisch ausgeführt werden. Siehe Erste Schritte mit Cloud Guard und Gemeldete Probleme verarbeiten.