Sécurisation de Bastion
Cette rubrique fournit des informations et des recommandations de sécurité pour Bastion.
Oracle Cloud Infrastructure Bastion fournit un accès restreint et limité dans le temps aux ressources cible qui ne disposent pas d'adresses publiques. Les bastions permettent aux utilisateurs autorisés de se connecter à partir d'adresses IP spécifiques à des ressources cible à l'aide de sessions SSH (Secure Shell). Lorsqu'ils sont connectés, les utilisateurs peuvent interagir avec la ressource cible à l'aide de n'importe quel logiciel ou protocole pris en charge par SSH. Par exemple, vous pouvez utiliser 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 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 :
- Sécurité physique : Oracle est en charge de la protection de l'infrastructure globale qui exécute tous les services offerts par Oracle Cloud Infrastructure. Cette infrastructure comprend le matériel, les logiciels, les fonctions de réseau et les installations qui exécutent les services Oracle Cloud Infrastructure.
Vos responsabilités en matière de sécurité sont décrites sur cette page et englobent les domaines suivants :
- Contrôle d'accès : limitez au maximum les privilèges. Les utilisateurs doivent disposer uniquement des droits d'accès nécessaires pour faire leur travail.
- Sécurité réseau : limitez les noeuds de votre réseau cloud qui peuvent accéder aux bastions.
- Sécurité de l'hôte : configurez SSH sur les clients et les instances cible pour une sécurité maximale.
Tâches initiales liées à la sécurité
Utilisez cette liste de contrôle afin d'identifier les tâches que vous effectuez pour sécuriser Bastion dans une nouvelle location Oracle Cloud Infrastructure.
Tâche | Informations supplémentaires |
---|---|
Employer des stratégies IAM pour accorder l'accès aux utilisateurs et aux ressources | Stratégies IAM |
Lors de la création de bastions, restreindre l'accès réseau | Sécurité réseau |
Tâches de routine liées à la sécurité
Après vous être familiarisé avec Bastion, utilisez cette liste de contrôle pour identifier les tâches de sécurité que nous vous recommandons d'effectuer régulièrement.
Tâche | Informations supplémentaires |
---|---|
Intégration d'instances cible avec IAM | Contrôle accès |
Communication sécurisée entre les clients et les bastions | Cryptage des données |
Configurer le serveur SSH sur les instances cible pour une sécurité maximale | Renforcement |
Réalisation d'un audit de sécurité | Audit en cours |
Stratégies IAM
Utilisez des stratégies pour limiter l'accès au bastion.
Une stratégie précise qui peut accéder aux ressources Oracle Cloud Infrastructure et comment. Pour plus d'informations, reportez-vous à Fonctionnement des stratégies.
Affectez à un groupe les privilèges minimaux qui sont requis pour assumer ses responsabilités. Chaque stratégie comporte un verbe décrivant les actions que le groupe est autorisé à effectuer. Les verbes disponibles sont les suivants, de l'accès le plus restreint à l'accès le plus étendu : inspect
, read
, use
et manage
.
Bastion prend en charge les variables de stratégie pour restreindre davantage l'accès aux bastions, notamment :
target.bastion-session.username
: limite l'accès à des noms 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
: limite l'accès à des instances de calcul spécifiques lors de la création d'une session.
Nous vous recommandons de limiter l'accès à l'utilisateur
opc
(et à l'utilisateur ubuntu
dans les images de plate-forme Ubuntu). En effet, par défaut, il dispose de fonctionnalités sudoer
sur les images de plate-forme Oracle Cloud Infrastructure.Nous vous recommandons d'accorder les droits d'accès DELETE
à un ensemble minimal d'utilisateurs et de groupes IAM. Cette pratique minimise la perte de données due à des suppressions involontaires par des utilisateurs autorisés ou par des acteurs malveillants. Accordez le droit d'accès DELETE
uniquement aux administrateurs de location et de compartiment.
Autorisez les utilisateurs du groupe SecurityAdmins
à créer, mettre à jour et supprimer toutes les ressources bastion de 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 tenancy
Autorisez les utilisateurs du groupe BastionUsers
à créer des sessions, à s'y connecter et à y mettre fin dans l'ensemble de 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 tenancy
Autorisez 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 tenancy
Autorisez les utilisateurs du groupe SalesAdmins
à créer des sessions, à s'y connecter et à en résilier 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 tenancy
Autorisez tout utilisateur à créer des sessions dans le compartiment HRProd
, à s'y connecter et à y mettre fin, mais uniquement s'il indique un nom utilisateur qui correspond exactement à son nom 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 stratégies Bastion et pour consulter d'autres exemples, reportez-vous à Stratégies Bastion.
Contrôle d'accès
Outre la création de stratégies IAM, suivez ces meilleures pratiques supplémentaires pour sécuriser l'accès aux cibles auxquelles vous êtes connecté avec Bastion.
Activer l'authentification multifacteur (MFA)
Le module PAM permet d'intégrer des instances Linux cible à IAM afin d'effectuer l'authentification de l'utilisateur final par authentification de premier et de second facteur.
Les utilisateurs finaux peuvent se connecter à un serveur Linux à l'aide de SSH et s'authentifier à l'aide de leurs informations d'identification utilisateur IAM. En outre, vous pouvez utiliser les fonctionnalités d'authentification à plusieurs facteurs d'IAM. Avec l'authentification à plusieurs facteurs, les utilisateurs finaux sont invités à s'authentifier avec un second facteur, tel qu'un code de mot de passe à usage unique envoyé par courriel, par SMS ou par une application d'authentification mobile, ou à s'authentifier à l'aide de questions de sécurité.
- Avant de configurer PAM et MFA, vérifiez que la configuration SSH de l'instance répond aux exigences minimales pour Bastion. Reportez-vous à la section Le serveur SSH n'est pas configuré correctement sur l'instance cible dans Dépannage du bastion.
- Installez et configurez PAM sur l'instance, puis activez l'authentification à plusieurs facteurs. Reportez-vous à Activation de l'authentification à plusieurs facteurs dans Linux.
Cryptage des données
Suivez ces meilleures pratiques pour chiffrer la communication entre les clients et les bastions à l'aide de SSH.
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 client.
Pour plus d'informations, reportez-vous à la documentation FIPS OpenSSL et au programme de validation de module cryptographique.
Le module cryptographique client OpenSSH Oracle Linux 7.8 n'a pas encore reçu la certification FIPS. Reportez-vous à Certifications Oracle FIPS.
Par défaut, les paires de clés RSA ne sont pas prises en charge dans les versions 8 et ultérieures 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, reportez-vous aux notes sur la version de 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ère pour chaque nouvelle session de 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 transfert de port et les types de session SSH gérés.
Sécurité réseau
Sécurisez l'accès réseau aux ressources auxquelles vous êtes connecté à l'aide de Bastion.
Lors de la création d'un bastion, utilisez la liste d'autorisation de bloc CIDR pour indiquer les plages d'adresses de la notation CIDR que vous souhaitez autoriser à se connecter aux sessions hébergées par ce bastion.
Une plage d'adresses plus limitée offre une meilleure sécurité. N'indiquez pas de plage CIDR ouverte telle que 0.0.0.0/0
.
Renforcement
Configurez le serveur SSH sur les instances de calcul cible 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
.
Définition | Description |
---|---|
MaxAuthTries |
Spécifie 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 en retour du client. Si ce seuil est atteint pendant l'envoi des messages actifs du client, le serveur déconnecte le client et met fin à la session. |
ClientAliveInterval |
Définit un délai d'expiration en secondes après lequel, si aucune donnée n'a été reçue du client, le serveur enverra un message via le canal chiffré pour demander une réponse du client. |
Audit en cours
Localisez les journaux d'accès et d'autres données de sécurité pour Bastion.
Le service Audit enregistre automatiquement tous les appels d'API vers les ressources Oracle Cloud Infrastructure. Vous pouvez atteindre vos objectifs de sécurité et de conformité en utilisant le service Audit pour surveiller l'ensemble de l'activité utilisateur dans votre location. Comme tous les appels de la console, du kit SDK et de l'interface de ligne de commande passent par nos API, toutes les activités de ces sources sont incluses. Les enregistrements d'audit sont disponibles via une API de requête filtrable authentifiée, ou ils peuvent être extraits en tant que fichiers en batch à partir d'Object Storage. Le contenu du journal d'audit 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. Reportez-vous à Visualisation des événements de journal d'audit.
Voici un extrait d'une entrée de journal pour la création d'une session de 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é Cloud Guard dans votre location, il signale toutes les activités utilisateur susceptibles de poser des problèmes de sécurité. Lors de la détection d'un problème, Cloud Guard suggère des actions correctives. Vous pouvez également configurer Cloud Guard pour qu'il effectue automatiquement certaines actions. Reportez-vous à Introduction à Cloud Guard et à Traitement des problèmes signalés.