Protección de Bastion
En este tema se proporciona información y recomendaciones de seguridad para Bastion.
Oracle Cloud Infrastructure Bastion proporciona acceso restringido y limitado en el tiempo a recursos de destino que no tengan puntos finales públicos. Los bastiones permiten a los usuarios autorizados conectarse desde direcciones IP específicas a recursos de destino mediante sesiones de shell seguro (SSH). Cuando están conectados, los usuarios pueden interactuar con el recurso de destino mediante cualquier software o protocolo soportado por SSH. Por ejemplo, puede utilizar el protocolo de escritorio remoto (RDP) para conectarse a un host de Windows o utilizar Oracle Net Services para conectarse a una base de datos.
Responsabilidades de seguridad
Para utilizar Bastion de forma segura, conozca sus responsabilidades en materia de seguridad y conformidad.
Oracle es responsable de los siguientes requisitos de seguridad:
- Seguridad física:Oracle es responsable de proteger la infraestructura global que ejecuta todos los servicios ofrecidos en Oracle Cloud Infrastructure. Esta infraestructura consta del hardware, el software, la red y las instalaciones que ejecutan los servicios de Oracle Cloud Infrastructure.
Las responsabilidades de seguridad se describen en esta página, que incluye las siguientes áreas:
- Control de acceso: limite los privilegios lo máximo posible. A los usuarios solo se les debe otorgar el acceso necesario para realizar su trabajo.
- Seguridad de red: limite los nodos de la red en la nube que pueden acceder a bastiones.
- Seguridad del host: configure SSH en clientes e instancias de destino para obtener la máxima seguridad.
Tareas de seguridad iniciales
Utilice esta lista de control para identificar las tareas que debe realizar para proteger Bastion en un nuevo arrendamiento de Oracle Cloud Infrastructure.
Tarea | Más información |
---|---|
Utilice políticas de IAM para otorgar acceso a usuarios y recursos | Políticas de IAM |
Al crear bastiones, restrinja el acceso a la red | Seguridad de red |
Tareas de seguridad rutinarias
Después de empezar a utilizar Bastion, utilice esta lista de control para identificar las tareas de seguridad que le recomendamos que realice con regularidad.
Tarea | Más información |
---|---|
Integrar instancias de destino con IAM | Control de acceso |
Comunicación segura entre clientes y bastiones | Cifrado de datos |
Configurar el servidor SSH en instancias de destino para una máxima seguridad | Endurecimiento |
Realice una auditoría de seguridad | Auditoría |
Políticas de IAM
Utilice políticas para limitar el acceso a Bastion.
Una política especifica quién puede acceder a los recursos de Oracle Cloud Infrastructure y cómo. Para obtener más información, consulte Funcionamiento de las políticas.
Asigne a un grupo los privilegios mínimos necesarios para cumplir con sus responsabilidades. Cada política tiene un verbo que describe las acciones que puede realizar el grupo. Desde la menor cantidad de acceso a la mayor cantidad de acceso, los verbos disponibles son: inspect
, read
, use
y manage
.
Bastion soporta variables de política para restringir aún más el acceso a bastiones, incluidos:
target.bastion-session.username
: restringe el acceso a nombres de usuario específicos del sistema operativo POSIX al crear una sesión que se conecta a una instancia informática.target.resource.ocid
: restringe el acceso a instancias informáticas específicas al crear una sesión.
Recomendamos que restrinja el acceso al usuario
opc
(y al usuario ubuntu
en imágenes de plataforma de Ubuntu) porque, por defecto, tiene capacidades sudoer
en imágenes de plataforma de Oracle Cloud Infrastructure.Recomendamos que otorgue permisos DELETE
a un juego mínimo de usuarios y grupos de IAM. Esta práctica minimiza la pérdida de datos de supresiones involuntarias por parte de usuarios autorizados o de actores maliciosos. Otorgue permisos DELETE
solo a los administradores de arrendamiento y compartimento.
Permitir a los usuarios del grupo SecurityAdmins
crear, actualizar y suprimir todos los recursos de Bastion de todo el arrendamiento:
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
Permitir a los usuarios del grupo BastionUsers
crear, conectarse y terminar sesiones de todo el arrendamiento:
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
Permitir a los usuarios del grupo SalesAdmins
crear, conectarse y terminar sesiones para un host de destino específico del compartimento 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
Permitir a los usuarios del grupo SalesAdmins
crear, conectarse y terminar sesiones del compartimento SalesApps
y del usuario 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
Permita a cualquier usuario crear, conectarse y terminar sesiones en el compartimento HRProd
, pero solo si especifica un nombre de usuario que coincida exactamente con su nombre de usuario de IAM:
Allow any-user to manage bastion-session in compartment HRProd where ALL {target.bastion-session.username=request.user.name}
Para obtener más información sobre las políticas de Bastion y ver más ejemplos, consulte Políticas de Bastion.
Control de acceso
Además de crear políticas de IAM, siga estas mejores prácticas adicionales para proteger el acceso a los destinos a los que se conecta con Bastion.
Activar autenticación multifactor (MFA)
El módulo de autenticación conectable (PAM) permite integrar instancias de Linux de destino con IAM para realizar la autenticación de usuario final con una autenticación de primer y segundo factor.
Los usuarios finales pueden conectarse a un servidor Linux mediante SSH y autenticarse con sus credenciales de usuario de IAM. Además, puede utilizar las capacidades de autenticación multifactor de IAM. Con la MFA, se solicita a los usuarios finales que se autenticen con un segundo factor, como un código de contraseña de un solo uso enviado por correo electrónico, un SMS o una aplicación Mobile Authenticator, o que se autenticen mediante preguntas de seguridad.
- Antes de configurar PAM y MFA, verifique que la configuración SSH de la instancia cumpla los requisitos mínimos para Bastion. Consulte la sección SSH Server is Not Configured Properly on Target Instance en Troubleshooting Bastion.
- Instale y configure el PAM en la instancia y, a continuación, active la MFA. Consulte Activación de MFA para la autenticación en Linux.
Cifrado de datos
Siga estas mejores prácticas para utilizar SSH para cifrar la comunicación entre clientes y bastiones.
Uso de un módulo certificado por FIPS
Recomendamos que utilice el cliente OpenSSH 7.6 con protección Federal Information Processing Standard (FIPS) para todos los sistemas operativos de cliente.
Para obtener más información, consulte la OpenSSL FIPS documentation y el Cryptographic Module Validation Program.
El módulo criptográfico de cliente OpenSSH de Oracle Linux 7.8 aún no ha recibido la certificación FIPS. Consulte Oracle FIPS Certifications.
Por defecto, los pares de claves RSA no están soportados en la versión 8 del cliente OpenSSH y posteriores. Para activar pares de claves RSA, debe agregar el siguiente fragmento a la configuración de SSH.
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
Para obtener más información, consulte las notas de la versión OpenSSH.
No reutilizar pares de claves SSH para sesiones
Vuelva a generar un nuevo par de claves SSH efímeras para cada nueva sesión de bastión.
No reutilice los pares de claves generados anteriormente. Cree nuevos pares de claves para los tipos de sesión SSH gestionada y de reenvío de puerto.
Seguridad de la red
Proteja el acceso de red a los recursos a los que se conecta mediante Bastion.
Al crear un bastión, utilice Lista de permitidos del bloque de CIDR para especificar uno o más rangos de direcciones en notación CIDR a las que desee permitir la conexión a sesiones alojadas en este bastión.
Un rango de direcciones más limitado ofrece mayor seguridad. No especifique un rango de CIDR abierto como 0.0.0.0/0
.
Endurecimiento
Configure el servidor SSH en instancias informáticas de destino para obtener la máxima seguridad.
Recomendamos que actualice los valores por defecto de esta configuración en /etc/ssh/sshd_config
.
Valor | Descripción |
---|---|
MaxAuthTries |
Especifica el número máximo de intentos de autenticación permitidos por conexión. Una vez que el número de fallos alcanza la mitad de este valor, se registran los fallos. |
ClientAliveCountMax |
Define el número de mensajes activos del cliente que se pueden enviar sin recibir ningún mensaje del cliente. Si se alcanza este umbral mientras se envían los mensajes activos del cliente, el servidor desconecta el cliente y termina la sesión. |
ClientAliveInterval |
Establece un intervalo de timeout en segundos después del cual, si no se han recibido datos del cliente, el servidor enviará un mensaje a través del canal cifrado para solicitar una respuesta del cliente. |
Auditorías
Localice los logs de acceso y otros datos de seguridad de Bastion.
El servicio Audit registra automáticamente todas las llamadas de API a los recursos de Oracle Cloud Infrastructure. Puede lograr sus objetivos de seguridad y conformidad mediante el servicio Audit para supervisar toda la actividad de los usuarios dentro de su arrendamiento. Dado que todas las llamadas a la consola, SDK y la línea de comandos (CLI) pasan por nuestras API, se incluye toda la actividad de esos orígenes. Los registros de auditoría están disponibles mediante una API de consulta autenticada y filtrable o se pueden recuperar como archivos por lotes de Object Storage. El contenido del log de auditoría incluye la actividad que se produjo, el usuario que la inició, la fecha y la hora de la solicitud, así como la IP de origen, el agente de usuario y las cabeceras HTTP de la solicitud. Consulte Visualización de eventos del log de auditoría.
A continuación, se muestra un extracto de una entrada de log para la creación de una nueva sesión de bastión.
{
"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 ha activado Cloud Guard en su arrendamiento, informa de cualquier actividad de usuario que suponga posibles problemas de seguridad. Al detectar un problema, Cloud Guard sugiere acciones correctivas. También puede configurar Cloud Guard para que realice automáticamente determinadas acciones. Consulte Introducción a Cloud Guard y Procesamiento de problemas notificados.