Este documento descreve as práticas recomendadas para controlar o acesso à rede SSH para instâncias de máquinas virtuais (VM) Linux.
Para se conectar a uma instância de VM usando SSH, o usuário precisa de acesso de rede à instância de VM e de credenciais SSH válidas. Por padrão, o Compute Engine usa uma regra de firewall que não restringe o acesso à rede SSH, mas permite que qualquer pessoa na Internet se conecte à porta 22
das instâncias de VM. Embora seja conveniente para os desenvolvedores começarem rapidamente sem considerar os controles de rede ou segurança, permitir que os usuários se conectem a partir de qualquer dispositivo, rede e local apresenta riscos:
- Os usuários podem se conectar a partir de dispositivos ou redes não confiáveis.
- Agentes mal-intencionados podem lançar ataques de força bruta e tentar comprometer suas instâncias de VM.
- Atores mal-intencionados com acesso a credenciais SSH que foram vazadas ou não revogadas a tempo podem usar as credenciais para acessar e entrar em uma VM de qualquer rede.
As seções a seguir descrevem como você pode reduzir o risco limitando as redes, locais ou dispositivos a partir dos quais os usuários podem estabelecer conexão SSH com suas VMs:
- Reduza a exposição da rede
- Use uma VM bastião se precisar de gravação de sessão
- Use políticas de firewall e restrinja a exposição SSH
- Desabilitar o acesso ao console serial
O documento centra-se em práticas que são específicas de Google Cloud ou de particular relevância ao usar SSH em Google Cloud. O documento não aborda práticas recomendadas para implementações específicas de cliente ou servidor SSH.
Reduza a exposição da rede
Permitir que os usuários estabeleçam conexões SSH de qualquer lugar significa que você depende totalmente da autenticação SSH e dos mecanismos de autorização para proteger suas VMs. Você pode reduzir o risco e estabelecer uma camada adicional de proteção reduzindo a exposição das VMs na rede.
Existem várias abordagens para reduzir a exposição da rede das suas VMs. Para identificar a abordagem mais adequada ao seu ambiente, você deve considerar vários fatores, conforme ilustrado pelo fluxograma a seguir:
Acesso externo : o primeiro fator a considerar é se a VM só precisa ser acessível dentro da rede VPC ou se você precisa que a VM também seja acessível externamente.
Se o acesso interno da VPC for suficiente, você não precisará atribuir um endereço IP externo à VM, mas ainda assim deverá decidir como gerenciar o acesso.
Tamanho da rede interna: se o acesso interno da VPC for suficiente, o segundo fator a considerar é o tamanho da sua rede interna.
Em redes menores, pode ser suficiente usar regras de firewall que permitam a entrada de endereços internos na porta
22
para ajudar a proteger suas VMs. Em redes maiores, confiar apenas nas regras de firewall pode ser muito limitante: nesses casos, você pode se beneficiar do uso do encaminhamento de TCP do Identity-Aware Proxy para impor o acesso baseado no contexto às VMs.Design de perímetro do VPC Service Controls : o próximo fator a considerar é se a instância de VM faz parte de um perímetro do VPC Service Controls.
Se a VM fizer parte de um perímetro de serviço, qualquer acesso à API originado da VM será considerado originário de dentro do perímetro. Quando você concede a um usuário situado fora do perímetro acesso SSH a uma VM dentro do perímetro, ele pode potencialmente copiar dados do perímetro para sua estação de trabalho local ou vice-versa – isso pode colocar em risco a confidencialidade e a integridade dos dados do seu perímetro.
Sempre que você precisar conceder acesso SSH a uma instância de VM que faz parte de um perímetro do VPC Service Controls, use o encaminhamento de TCP do IAP . O IAP detecta se a estação de trabalho do usuário faz parte do mesmo perímetro do VPC Service Controls e bloqueia tentativas de acesso de fora do perímetro de serviço por padrão. Para permitir o acesso externo, use regras de entrada e configure-as para impor o acesso baseado no contexto .
Gerenciamento de dispositivos clientes: O último fator a considerar é como os dispositivos clientes são gerenciados, porque isso determina as maneiras pelas quais você pode controlar o acesso baseado no contexto.
O acesso baseado no contexto é mais eficaz quando o Access Context Manager tem acesso a um conjunto avançado de sinais sobre um usuário, seu dispositivo e sua localização e, portanto, funciona em conjunto com o Chrome Enterprise Premium: se você usa o Chrome Enterprise Premium para gerenciar seus dispositivos, você pode configurar níveis de acesso que controlam o acesso com base na postura do dispositivo. Você pode então aplicar esse nível de acesso ao acesso SSH usando o encaminhamento TCP do IAP em combinação com vinculações de acesso ou condições IAM .
Se você não controlar a configuração de um dispositivo cliente, deverá considerá-lo não gerenciado e potencialmente não confiável.
Para permitir o acesso de dispositivos não gerenciados, você também pode usar o encaminhamento TCP do IAP, mas só pode gerenciar o acesso com base na identidade do usuário e no endereço IP do dispositivo. Como o Access Context Manager não tem acesso a nenhum sinal do dispositivo, você não poderá restringir o acesso com base na postura do dispositivo.
Com base nos fatores e usando o fluxograma, você pode identificar qual abordagem para reduzir a exposição da rede é mais adequada ao seu ambiente. As seções a seguir descrevem essas abordagens com mais detalhes.
Acesso SSH baseado em IAP
A ideia dessa abordagem é permitir apenas o acesso SSH por meio do encaminhamento TCP do IAP e permitir que o IAP controle o acesso com base na identidade do usuário.
Recomendamos essa abordagem para instâncias de VM às quais se aplica o seguinte:
- A instância de VM deve ser acessível externamente ou por meio de uma grande rede interna.
- A VM não faz parte de um perímetro do VPC Service Controls.
Por padrão, uma instância de VM com um endereço IP externo permite acesso SSH porque os firewalls padrão permitem conexões da Internet pública à porta 22, mas essa não é uma abordagem recomendada. Esta abordagem pode aumentar significativamente o risco de a VM ficar sujeita a ataques como os seguintes:
- Uso de credenciais não revogadas: ex-funcionários cujo acesso não foi totalmente revogado poderão continuar a acessar a VM.
- Abuso de credenciais válidas: maus atores que possuem credenciais roubadas ou vazadas podem usá-las para fazer login.
- Negação de serviço: os malfeitores podem tentar esgotar os recursos da VM inundando-a com solicitações.
Uma maneira mais segura de habilitar o acesso SSH externo a uma instância de VM é usar o encaminhamento TCP do IAP. Semelhante a um host bastião ou proxy reverso, o encaminhamento TCP do IAP atua como um intermediário entre o dispositivo cliente e a VM.
O encaminhamento TCP do IAP executa as quatro funções a seguir quando um usuário tenta estabelecer uma conexão SSH:
- Autenticação: o IAP verifica se o usuário possui uma credencial válida do Google.
- Autorização: o IAP verifica as políticas do IAM para verificar se o usuário recebeu permissão para se conectar à VM por meio do IAP.
- Acesso baseado no contexto: opcionalmente, o IAP pode verificar se o usuário, seu dispositivo e localização atendem a determinados níveis de acesso.
- Auditoria: quando os logs de acesso a dados estão habilitados, o IAP registra cada tentativa bem-sucedida e falha de conexão com uma instância de VM.
Ao atuar como intermediário e executar essas funções, o IAP elimina a necessidade de atribuir um endereço IP externo à VM e fornece uma camada adicional de segurança.
Acesso SSH com reconhecimento de contexto baseado em IAP
A ideia dessa abordagem é permitir apenas o acesso SSH por meio do encaminhamento TCP do IAP e permitir que o IAP controle o acesso com base na identidade do usuário e em fatores adicionais.
Recomendamos essa abordagem para instâncias de VM às quais se aplica o seguinte:
- A instância de VM deve ser acessível de fora da VPC e das redes conectadas à VPC.
- A VM não faz parte de um perímetro do VPC Service Controls.
- A VM só precisa ser acessível a partir de determinados dispositivos, redes ou locais.
Quando você concede acesso SSH a um usuário a uma instância de VM – seja diretamente ou por meio de IAP – então, por padrão, ele pode acessar a instância de VM de qualquer dispositivo, rede e local. Embora seja conveniente para os usuários, esse nível de acesso aumenta os riscos, pois os usuários podem estar se conectando a partir de dispositivos comprometidos ou de redes não confiáveis.
Para reduzir o risco, configure o encaminhamento TCP do IAP para que os usuários só possam acessar instâncias de VM de determinados dispositivos ou locais. Você pode configurar esse acesso baseado no contexto de duas maneiras:
Ligações de acesso : você pode criar um nível de acesso e atribuí-lo a um grupo usando uma ligação de acesso . As vinculações de acesso são um formulário ou uma política baseada em identidade e se aplicam a todos os recursos que um usuário tenta acessar, incluindo o IAP, mas também outras APIs e o console do Google Cloud.
O uso de vinculações de acesso funciona melhor se você quiser garantir que o acesso baseado no contexto seja aplicado uniformemente nos recursos.
Condições do IAM: você pode criar um nível de acesso e atribuí-lo a vinculações de funções do IAM individuais usando condições do IAM .
Usar vinculações de função do IAM é uma forma de política baseada em recursos e a abordagem funciona melhor se você quiser aplicar políticas diferentes a conjuntos diferentes de VMs.
Os níveis de acesso básicos permitem limitar o acesso por rede ou localização geográfica. Como assinante do Chrome Enterprise Premium, você também pode limitar o acesso com base em outros atributos, como a força da credencial , a configuração do navegador usado para autenticação ou a postura do dispositivo .
Acesso SSH baseado em VPC Service Controls
A ideia desta abordagem é permitir apenas o acesso SSH através do encaminhamento TCP do IAP e configurar o perímetro de serviço para permitir a entrada do IAP para determinadas identidades de nossas fontes.
Recomendamos essa abordagem para instâncias de VM que fazem parte de um perímetro do VPC Service Controls.
Conceder aos usuários acesso SSH externo a uma VM que faz parte de um perímetro de serviço pode ser arriscado porque pode permitir que os usuários prejudiquem seu perímetro do VPC Service Controls exfiltrando dados por meio de SSH.
Ao permitir apenas o acesso SSH por meio do encaminhamento TCP do IAP, você pode reduzir esse risco e garantir que todo o acesso SSH esteja sujeito à configuração do seu perímetro do VPC Service Controls:
- Se um usuário tentar se conectar de fora do perímetro de serviço (conforme ilustrado no exemplo anterior), o encaminhamento TCP do IAP não apenas verifica se o usuário recebeu acesso IAM à VM, mas também verifica se a solicitação satisfaz alguma das regras de entrada do perímetro .
Se um usuário tentar se conectar de dentro do perímetro de serviço, o encaminhamento TCP do IAP também verificará se o usuário recebeu acesso do IAM à VM, mas ignorará as regras de entrada do VPC Service Controls.
O IAP considera que uma conexão se origina dentro de um perímetro de serviço se alguma das seguintes situações se aplicar:
- O IP de origem é o endereço IP externo de uma VM que faz parte do perímetro de serviço.
- A conexão é feita através do Private Google Access a partir de uma VM que faz parte do perímetro de serviço.
- A conexão é feita por meio de um endpoint de acesso do Private Service Connect que faz parte do perímetro de serviço.
Acesso SSH interno controlado por firewall
A ideia desta abordagem é proibir todo o acesso externo e permitir apenas o acesso SSH interno da VPC.
Você pode usar essa abordagem para instâncias de VM às quais se aplica o seguinte:
- A instância da VM não precisa estar acessível externamente.
- A VM está conectada a uma rede interna de pequeno a médio porte.
- A VM não faz parte de um perímetro do VPC Service Controls.
Para proibir todo o acesso externo, você pode fazer o seguinte:
- Implante as instâncias de VM sem um endereço IP externo.
- Configure regras de firewall para que o tráfego SSH de entrada de intervalos de IP fora da VPC não seja permitido.
Desabilitar o acesso ao console serial
Para solucionar problemas de instâncias de VM com defeito, o Compute Engine permite conectar-se ao console da porta serial de uma instância por meio de um gateway SSH, ssh-serialport.googleapis.com
. Este gateway é acessível publicamente pela Internet.
O gateway SSH acessa a VM por meio do hipervisor subjacente, em vez da rede VPC. O acesso ao console serial é, portanto, controlado pelas políticas do IAM e não pelas regras de firewall.
Permitir que os usuários acessem um console serial da VM pode deixar a VM superexposta involuntariamente. Para evitar essa superexposição, use a restrição de política organizacional compute.disableSerialPortAccess
para desabilitar o acesso ao console serial e suspenda a restrição temporariamente quando precisar de acesso de emergência à porta serial da VM.
Use uma VM bastião se precisar de gravação de sessão
Ao atuar como intermediário entre dispositivos clientes e VMs, o encaminhamento TCP do IAP executa funções que normalmente são executadas por hosts bastiões ou servidores de salto. Essas funções incluem:
- Aplicar políticas de acesso de forma centralizada
- Acesso de auditoria
Ao contrário de alguns hosts bastiões, o encaminhamento TCP do IAP não encerra conexões SSH: quando você estabelece uma conexão SSH com uma VM por meio do encaminhamento TCP do IAP, a conexão SSH é criptografada de ponta a ponta entre o cliente e a VM. Como resultado desta criptografia ponta a ponta, o encaminhamento TCP do IAP não pode inspecionar o conteúdo da sessão SSH e não fornece recursos de gravação de sessão. Os logs de auditoria do IAP contêm metadados de conexão, mas não revelam nenhuma informação sobre o conteúdo da sessão.
Se você precisar de gravação de sessão, use uma VM bastião:
- Configure a VM bastião para que ela encerre conexões SSH e registre seu conteúdo. Certifique-se de restringir o uso do encaminhamento de porta SSH, pois isso pode prejudicar a eficácia da gravação da sessão.
- Configure regras de firewall de VMs de destino para que as conexões SSH sejam permitidas apenas na VM bastião.
- Permitir acesso à VM bastião apenas por meio de encaminhamento TCP do IAP
Use políticas de firewall para restringir a exposição SSH
Depois de determinar qual maneira de limitar a exposição SSH funciona melhor para seu ambiente, você deverá garantir que todas as VMs e projetos estejam configurados adequadamente. Em particular, você deve garantir que todos os projetos usem um conjunto consistente de regras de firewall que determinem como o SSH pode ser usado.
Para aplicar um conjunto de regras de firewall em vários projetos, use políticas de firewall hierárquicas e aplique-as a pastas na sua hierarquia de recursos .
Por exemplo, para ajudar a garantir que todo o acesso SSH seja realizado através do encaminhamento TCP do IAP, aplique uma política de firewall que inclua as duas regras personalizadas a seguir (em ordem de prioridade):
- Permita a entrada de
35.235.240.0/20
para a porta 22 das VMs selecionadas.35.235.240.0/20
é o intervalo de IP usado pelo encaminhamento TCP do IAP. - Negar a entrada de
0.0.0.0/0
à porta 22 de todas as VMs.
O que vem a seguir
- Continue lendo sobre as práticas recomendadas para controlar o acesso de login SSH