Sécurisation du service d'hôte bastion
Cette rubrique fournit des informations de sécurité et des recommandations pour le service d'hôte bastion.
Oracle Cloud Infrastructure Bastion fournit un accès restreint et limité dans le temps aux ressources cibles qui n'ont pas de points d'extrémité publics. Les hôtes bastions permettent aux utilisateurs autorisés de se connecter à partir d'adresses IP spécifiques aux ressources cibles à l'aide de sessions SSH. Une fois connecté, les utilisateurs peuvent interagir avec la ressource cible à l'aide de tout logiciel ou protocole pris en charge par SSH. Par exemple, vous pouvez utiliser le protocole RDP (Remote Desktop Protocol) pour vous connecter à un hôte Windows, ou Oracle Net Services pour vous connecter à une base de données.
Responsabilités en matière de sécurité
Pour utiliser le service d'hôte bastion en toute sécurité, découvrez vos responsabilités en matière de sécurité et de conformité.
Oracle est responsable des exigences de sécurité suivantes :
- Physical Security : :Oracle est responsable de la protection de l'infrastructure globale qui exécute tous les services offerts dans Oracle Cloud Infrastructure. Cette infrastructure se compose du matériel, du logiciel, du réseau et des installations qui exécutent les services Oracle Cloud Infrastructure.
Vos responsabilités en matière de sécurité sont décrites dans cette page, qui comprend les domaines suivants :
- Contrôle de l'accès : Limitez le plus possible les privilèges. Les utilisateurs ne doivent disposer que de l'accès nécessaire pour effectuer leur travail.
- Sécurité du réseau : Limitez les noeuds de votre réseau en nuage qui peuvent accéder aux hôtes bastions.
- Sécurité de l'hôte : Configurez SSH sur les clients et les instances cibles pour une sécurité maximale.
Tâches de sécurité initiales
Utilisez cette liste de vérification pour identifier les tâches que vous effectuez pour sécuriser l'hôte bastion d'une nouvelle location Oracle Cloud Infrastructure.
| Tâche | Informations supplémentaires |
|---|---|
| Utiliser les politiques GIA pour accorder l'accès aux utilisateurs et aux ressources | Politiques GIA |
| Lors de la création d'hôtes bastions, restreindre l'accès au réseau | Sécurité du réseau |
Tâches de sécurité régulières
Après avoir commencé à utiliser le service d'hôte bastion, utilisez cette liste de vérification pour identifier les tâches de sécurité que nous vous recommandons d'effectuer régulièrement.
| Tâche | Informations supplémentaires |
|---|---|
| Intégrer les instances cibles au service IAM | Contrôle d'accès |
| Communication sécurisée entre les clients et les bastions | Chiffrement des données |
| Configurer le serveur SSH sur les instances cibles pour une sécurité maximale | Durcissement |
| Vérifier la sécurité | Vérification |
Politiques GIA
Utilisez des politiques pour limiter l'accès au service d'hôte bastion.
Une politique indique qui peut accéder aux ressources Oracle Cloud Infrastructure et comment. Pour plus d'informations, voir Fonctionnement des politiques.
Affectez à un groupe les privilèges minimaux nécessaires à l'exercice de ses responsabilités. Chaque politique comporte un verbe qui décrit les actions que le groupe est autorisé à effectuer. De l'accès le plus restreint à l'accès le plus élevé, les verbes disponibles sont les suivants : inspect, read, use et manage.
L'hôte bastion prend en charge les variables de politique pour restreindre davantage l'accès aux hôtes bastions, notamment :
-
target.bastion-session.username- Restreindre l'accès à des noms d'utilisateur de système d'exploitation POSIX spécifiques lors de la création d'une session qui se connecte à une instance de calcul. -
target.resource.ocid- Restreindre l'accès à des instances de calcul spécifiques lors de la création d'une session.
Il est recommandé de restreindre l'accès à l'utilisateur
opc (et à l'utilisateur ubuntu dans les images de plate-forme Ubuntu) car, par défaut, il dispose de capacités sudoer sur les images de plate-forme Oracle Cloud Infrastructure.Nous vous recommandons d'accorder des autorisations DELETE à un jeu minimal d'utilisateurs et de groupes IAM. Cette pratique minimise la perte de données résultant de suppressions accidentelles par des utilisateurs autorisés ou d'acteurs malveillants. N'accordez les autorisations DELETE qu'aux administrateurs de location et de compartiment.
Autoriser les utilisateurs du groupe SecurityAdmins à créer, mettre à jour et supprimer toutes les ressources du service Bastion dans l'ensemble de la location :
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 tenancyAutoriser les utilisateurs du groupe BastionUsers à créer des sessions, à s'y connecter et à y mettre fin dans toute la location :
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 tenancyAutoriser les utilisateurs du groupe SalesAdmins à créer des sessions, à s'y connecter et à y mettre fin pour un hôte cible spécifique dans le compartiment SalesApps :
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 tenancyAutoriser les utilisateurs du groupe SalesAdmins à créer des sessions, à s'y connecter et à y mettre fin dans le compartiment SalesApps et avec l'utilisateur opc :
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 tenancyAutoriser tout utilisateur à créer des sessions dans le compartiment HRProd, à s'y connecter et à y mettre fin, mais uniquement s'il spécifie un nom d'utilisateur correspondant exactement à son nom d'utilisateur IAM :
Allow any-user to manage bastion-session in compartment HRProd where ALL {target.bastion-session.username=request.user.name}Pour plus d'informations sur les politiques d'hôte bastion et pour voir d'autres exemples, voir Politiques d'hôte bastion.
Contrôle d'accès
En plus de créer des politiques IAM, suivez ces meilleures pratiques supplémentaires pour sécuriser l'accès aux cibles auxquelles vous êtes connecté avec l'hôte bastion.
Activer l'authentification multifacteur
Le module d'authentification enfichable (PAM) vous permet d'intégrer des instances Linux cibles à IAM pour effectuer l'authentification de l'utilisateur final avec l'authentification par premier et deuxième facteurs.
Les utilisateurs finaux peuvent se connecter à un serveur Linux à l'aide de SSH et s'authentifier avec leurs données d'identification d'utilisateur IAM. En outre, vous pouvez utiliser les fonctionnalités d'authentification multifacteur d'IAM. Avec l'authentification multifacteur, les utilisateurs finaux sont invités à s'authentifier avec un deuxième facteur, tel qu'un code de mot de passe à usage unique envoyé à l'aide d'un courriel, d'un SMS, d'une application d'authentification mobile ou à s'authentifier à l'aide de questions de sécurité.
- Avant de configurer PAM et l'authentification multifacteur, vérifiez que la configuration SSH de l'instance répond aux exigences minimales pour l'hôte bastion. Reportez-vous à la section Le serveur SSH n'est pas configuré correctement sur l'instance cible dans Dépannage de l'hôte bastion.
- Installez et configurez PAM sur l'instance, puis activez l'authentification multifacteur. Voir Activation de l'authentification multifacteur dans Linux.
Chiffrement des données
Suivez ces meilleures pratiques pour utiliser SSH pour chiffrer la communication entre les clients et les hôtes bastions.
Utiliser un module certifié FIPS
Nous vous recommandons d'utiliser le client OpenSSH 7.6 avec la protection FIPS (Federal Information Processing Standard) pour tous les systèmes d'exploitation clients.
Pour plus de détails, consultez la Documentation de OpenSSL FIPS et le programme de validation de module cryptographique.
Le module cryptographique du client Oracle Linux 7.8 OpenSSH n'a pas encore reçu la certification FIPS. Voir Certifications FIPS d'Oracle.
Par défaut, les paires de clés RSA ne sont pas prises en charge dans la version 8 et ultérieure du client OpenSSH. Pour activer les paires de clés RSA, vous devez ajouter la strophe suivante à votre configuration SSH.
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
Pour plus de détails, consultez les notes de version à l'adresse OpenSSH.
Ne pas réutiliser les paires de clés SSH pour les sessions
Régénérez une nouvelle paire de clés SSH éphémères pour chaque nouvelle session d'hôte bastion.
Ne réutilisez pas les paires de clés générées précédemment. Créez de nouvelles paires de clés pour le réacheminement de port et les sessions SSH gérées.
Sécurité du réseau
Sécurisez l'accès réseau aux ressources auxquelles vous êtes connecté à l'aide de l'hôte bastion.
Lors de la création d'un hôte bastion, utilisez la liste d'autorisation du bloc CIDR pour spécifier un ou plusieurs intervalles d'adresses en notation CIDR que vous voulez autoriser à se connecter aux sessions hébergées par cet hôte bastion.
Un intervalle d'adresses plus limité offre une meilleure sécurité. Ne spécifiez pas d'intervalle CIDR ouvert tel que 0.0.0.0/0.
Durcissement
Configurez le serveur SSH sur les instances de calcul cibles pour une sécurité maximale.
Nous vous recommandons de mettre à jour les valeurs par défaut de ces paramètres dans /etc/ssh/sshd_config.
| Paramètre | Description |
|---|---|
MaxAuthTries
|
Indique le nombre maximal de tentatives d'authentification autorisées par connexion. Une fois que le nombre d'échecs atteint la moitié de cette valeur, les échecs sont consignés. |
ClientAliveCountMax
|
Définit le nombre de messages actifs du client qui peuvent être envoyés sans recevoir de messages du client. Si ce seuil est atteint pendant l'envoi des messages client actifs, le serveur déconnecte le client et met fin à la session. |
ClientAliveInterval
|
Définit un intervalle de temporisation en secondes après lequel, si aucune donnée n'a été reçue du client, le serveur enverra un message via le canal crypté pour demander une réponse du client. |
Vérification
Localisez les journaux d'accès et d'autres données de sécurité pour l'hôte bastion.
Le service de vérification enregistre automatiquement tous les appels d'API aux ressources Oracle Cloud Infrastructure. Vous pouvez atteindre vos objectifs de sécurité et de conformité en utilisant le service de vérification pour surveiller toutes les activités des utilisateurs dans votre location. Comme tous les appels de console, de trousse SDK et de ligne de commande (interface de ligne de commande) sont effectués par l'intermédiaire de nos API, toute l'activité provenant de ces sources est incluse. Les enregistrements de vérification sont disponibles au moyen d'une API d'interrogation authentifiée et filtrable ou ils peuvent être extraits en tant que fichiers par lots à partir du stockage d'objets. Le contenu du journal de vérification inclut l'activité survenue, l'utilisateur qui l'a lancée, la date et l'heure de la demande, ainsi que l'adresse IP source, l'agent utilisateur et les en-têtes HTTP de la demande. Voir Affichage des événements du journal de vérification.
Voici un extrait d'une entrée de journal pour la création d'une session d'hôte bastion.
{
"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",
...
}
}Si vous avez activé le service de protection d'infrastructure en nuage dans votre location, toutes les activités d'utilisateur pouvant poser des problèmes de sécurité sont signalées. Lors de la détection d'un problème, le service de protection d'infrastructure en nuage suggère des mesures correctives. Vous pouvez également configurer le service de protection d'infrastructure en nuage pour qu'il effectue automatiquement certaines actions. Voir Introduction au service de protection d'infrastructure en nuage et Traitement des problèmes signalés.