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.
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.
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.
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
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
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
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
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.
- 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.
- 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.
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.
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.