Protegendo o Bastion
Este tópico fornece informações e recomendações de segurança para o Bastion.
O Oracle Cloud Infrastructure Bastion oferece acesso restrito e com tempo limitado para recursos de destino que não têm pontos finais públicos. Os bastions permitem que os usuários autorizados se conectem de endereços IP específicos a recursos de destino usando sessões SSH (Secure Shell). Quando conectados, os usuários podem interagir com o recurso de destino usando qualquer software ou protocolo suportado pelo SSH. Por exemplo, você pode usar o RDP (Remote Desktop Protocol) para se conectar a um host do Windows ou usar o Oracle Net Services para se conectar a um banco de dados.
Responsabilidades de Segurança
Para usar o Bastion de forma segura, saiba mais sobre suas responsabilidades de segurança e conformidade.
A Oracle é responsável pelos seguintes requisitos de segurança:
- Segurança Física: A Oracle é responsável por proteger a infraestrutura global que executa todos os serviços oferecidos no Oracle Cloud Infrastructure. Essa infraestrutura consiste em hardware, software, redes e equipamentos que executam os serviços do Oracle Cloud Infrastructure.
Suas responsabilidades de segurança estão descritas nesta página, que incluem as seguintes áreas:
- Controle de Acesso: Limite os privilégios o máximo possível. Os usuários devem receber apenas o acesso necessário para executar seu trabalho.
- Segurança de Rede: Limite os nós da sua rede na nuvem que podem acessar bastions.
- Segurança de Host: configure o SSH em clientes e instâncias de destino para obter segurança máxima.
Tarefas iniciais de segurança
Use esta lista de verificação para identificar as tarefas que você executa para proteger o Bastion em uma nova tenancy do Oracle Cloud Infrastructure.
Tarefa | Mais Informações |
---|---|
Usar políticas de IAM para conceder acesso a usuários e recursos | Políticas do serviço IAM |
Ao criar bastions, restrinja o acesso à rede | Segurança de Rede |
Tarefas de Segurança de Rotina
Depois de se familiarizar com o Bastion, use esta lista de verificação para identificar tarefas de segurança que recomendamos que você execute regularmente.
Tarefa | Mais Informações |
---|---|
Integrar instâncias de destino com o serviço IAM | Controle de Acesso |
Comunicação segura entre clientes e bastiões | Criptografia de Dados |
Configurar o servidor SSH nas instâncias de destino para obter segurança máxima | Proteção |
Execute uma auditoria de segurança | Auditando |
Políticas do Serviço IAM
Use políticas para limitar o acesso ao Bastion.
Uma política especifica quem pode acessar os recursos do Oracle Cloud Infrastructure e como. Para obter mais informações, consulte Como as Políticas Funcionam.
Designe a um grupo o mínimo de privilégios necessários para executar suas responsabilidades. Cada política tem um verbo que descreve quais ações o grupo tem permissão para executar. Do menor acesso ao máximo, os verbos disponíveis são: inspect
, read
, use
e manage
.
O Bastion suporta variáveis de política para restringir ainda mais o acesso a bastions, incluindo:
target.bastion-session.username
- Restrinja o acesso a nomes de usuário específicos do sistema operacional POSIX ao criar uma sessão que se conecte a uma instância de computação.target.resource.ocid
- Restrinja o acesso a instâncias de computação específicas ao criar uma sessão.
Recomendamos que você restrinja o acesso ao usuário
opc
(e ao usuário ubuntu
nas imagens da plataforma Ubuntu) porque, por padrão, ele tem recursos sudoer
nas imagens da plataforma Oracle Cloud Infrastructure.Recomendamos que você conceda permissões DELETE
a um conjunto mínimo de usuários e grupos do IAM. Esta prática minimiza a perda de dados de exclusões inadvertidas por usuários autorizados ou por agentes maliciosos. Só conceda permissões DELETE
aos administradores de tenancies e compartimentos.
Permita que os usuários do grupo SecurityAdmins
criem, atualizem e excluam todos os recursos do Bastion na tenancy inteira:
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
Permita que os usuários do grupo BastionUsers
criem, estabeleçam conexão e encerrem sessões em toda a tenancy:
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
Permita que os usuários do grupo SalesAdmins
criem, estabeleçam conexão e encerrem sessões para um host de destino específico no 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
Permita que os usuários do grupo SalesAdmins
criem, estabeleçam conexão e encerrem sessões no compartimento SalesApps
e com o usuário 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 que qualquer usuário crie, estabeleça conexão e encerre sessões no compartimento HRProd
, mas somente se especificar um nome de usuário que corresponda exatamente ao nome de usuário do IAM:
Allow any-user to manage bastion-session in compartment HRProd where ALL {target.bastion-session.username=request.user.name}
Para obter mais informações sobre políticas do serviço Bastion e para exibir mais exemplos, consulte Políticas do Serviço Bastion.
Controle de Acesso
Além de criar políticas do serviço IAM, siga estas melhores práticas adicionais para proteger o acesso aos destinos aos quais você se conecta com o Bastion.
Ativar Autenticação Multifator (MFA)
O PAM permite integrar as instâncias do Linux de destino ao serviço IAM para executar a autenticação de usuário final com autenticação de primeiro e segundo fatores.
Os usuários finais podem fazer log-in em um servidor Linux usando SSH e autenticar-se com suas credenciais de usuário do serviço IAM. Além disso, você pode usar os recursos de autenticação multifator do IAM. Com a MFA, os usuários finais são solicitados a fazer a autenticação com um segundo fator, como um código de Senha Única, enviado por E-mail, SMS, um aplicativo Mobile Authenticator ou autenticado com perguntas de segurança.
- Antes de configurar o PAM e o MFA, verifique se a configuração SSH da instância atende aos requisitos mínimos do Bastion. Consulte a seção Servidor SSH Não Está Configurado Adequadamente na Instância de Destino em Diagnosticando e Solucionando Problemas do Bastion.
- Instale e configure o PAM na instância e, em seguida, ative a MFA. Consulte Ativando a MFA para Autenticação no Linux.
Criptografia de Dados
Siga essas melhores práticas para usar o SSH a fim de criptografar a comunicação entre clientes e bastions.
Usar um Módulo Certificado por FIPS
Recomendamos que você use o cliente OpenSSH 7.6 com proteção FIPS (Federal Information Processing Standard) para todos os sistemas operacionais do cliente.
Para obter mais detalhes, consulte a documentação do FIPS OpenSSL e o Programa de Validação de Módulo Criptográfico.
O Módulo Criptográfico do Cliente Oracle Linux 7.8 OpenSSH ainda não recebeu a certificação FIPS. Consulte Certificações Oracle FIPS.
Por padrão, os pares de chaves RSA não são suportados no cliente OpenSSH versão 8 e posterior. Para ativar pares de chaves RSA, adicione a seguinte estrofe à sua configuração SSH.
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
Para obter mais detalhes, consulte as notas da release OpenSSH.
Não Reutilizar Pares de Chaves SSH para Sessões
Gere novamente um novo par de chaves SSH efêmero para cada nova sessão do bastion.
Não reutilize pares de chaves gerados anteriormente. Crie novos pares de chaves para os tipos de sessão SSH gerenciada e de encaminhamento de porta.
Segurança de Rede
Proteja o acesso à rede aos recursos aos quais você se conecta usando o Bastion.
Ao criar um bastion, use Lista de permissões do bloco CIDR para especificar um ou mais intervalos de endereços em notação CIDR cuja conexão com sessões hospedadas por este bastion você deseja permitir.
Um intervalo de endereços mais limitado oferece melhor segurança. Não especifique um intervalo CIDR aberto como 0.0.0.0/0
.
Proteção
Configure o servidor SSH nas instâncias de computação de destino para obter segurança máxima.
Recomendamos que você atualize os valores padrão para essas definições em /etc/ssh/sshd_config
.
Definindo | Descrição |
---|---|
MaxAuthTries |
Especifica o número máximo de tentativas de autenticação permitidas por conexão. Depois que o número de falhas atingir metade desse valor, as falhas serão registradas. |
ClientAliveCountMax |
Define o número de mensagens ativas do cliente que podem ser enviadas sem receber nenhuma mensagem de volta do cliente. Se esse limite for atingido enquanto as mensagens ativas do cliente estiverem sendo enviadas, o servidor desconectará o cliente, encerrando a sessão. |
ClientAliveInterval |
Define um intervalo de timeout em segundos após o qual, se nenhum dado tiver sido recebido do cliente, o servidor enviará uma mensagem por meio do canal criptografado para solicitar uma resposta do cliente. |
Auditando
Localize logs de acesso e outros dados de segurança para o Bastion.
O serviço Audit registra automaticamente todas as chamadas de API para recursos do Oracle Cloud Infrastructure. Você pode atingir suas metas de segurança e conformidade usando o serviço Audit para monitorar todas as atividades do usuário em sua tenancy. Como todas as chamadas da Console, SDK e CLI (linha de comando) passam por nossas APIs, todas as atividades dessas origens são incluídas. Os registros de auditoria estão disponíveis por meio de uma API de consulta filtrável autenticada ou podem ser recuperados como arquivos batch do serviço Object Storage. O conteúdo do log de auditoria inclui a atividade ocorrida, o usuário que a iniciou, a data e a hora da solicitação, bem como o IP de origem, o agente do usuário e cabeçalhos HTTP da solicitação. Consulte Exibindo Eventos de Log de Auditoria.
Veja a seguir um trecho de uma entrada de log para a criação de uma nova sessão 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",
...
}
}
Se você tiver ativado o Cloud Guard em sua tenancy, ele reportará quaisquer atividades do usuário que sejam possíveis preocupações de segurança. Ao detectar um problema, o Cloud Guard sugere ações corretivas. Você também pode configurar o Cloud Guard para executar automaticamente determinadas ações. Consulte Conceitos Básicos do Cloud Guard e Processando Problemas Relatados.