Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Conectando um Bastion Server a um PostgreSQL Server via SSH Tunnel


O PostgreSQL é um conhecido sistema de gerenciamento de banco de dados relacional que possui um ambiente seguro para desenvolvedores e usuários. Mas como o trabalho remoto continua a fazer parte do novo normal de todas as empresas, os profissionais de TI enfrentam um novo conjunto de desafios quando se trata de gerenciar a segurança e a acessibilidade de seus servidores.

Usar um servidor bastion para acessar um banco de dados PostgreSQL adiciona uma camada extra de segurança. Mas como os servidores bastion devem atuar como firewalls, é necessário usar um túnel Secure Shell (SSH) para diminuir o nível de exposição da rede privada.

Muitas ferramentas de gerenciamento de banco de dados PostgreSQL podem automatizar esse processo de conexão, mas a interação com o shell requer a criação manual de um túnel SSH. Compreender o processo e as precauções certamente pode ajudar sua empresa a manter bancos de dados seguros.

Benefícios de criar e usar um túnel SSH Secure Shell


O tunelamento SSH é usado em comunicações de rede há mais de trinta anos e é igualmente relevante para as necessidades de computação atuais.

Os desenvolvedores recorrem consistentemente aos protocolos SSH Secure Shell para gerenciar o acesso ao banco de dados em todos os tipos de servidores, incluindo PostgreSQL. O acesso remoto seguro é fundamental hoje, especialmente quando 50% dos dispositivos do local de trabalho são móveis (dispositivos móveis estão entre os mais vulneráveis ​​a ataques cibernéticos). Isso torna ainda mais importante que as organizações possam gerenciar remotamente os dispositivos e o acesso dos usuários às suas redes.

As empresas que lidam com grandes quantidades de dados precisam dar aos funcionários acesso expresso aos principais bancos de dados e adotar uma abordagem proativa à segurança do banco de dados. O uso de protocolos SSH é o número um no fornecimento de acesso seguro a usuários de servidores remotos. Também simplifica a autenticação de programas automatizados. Portanto, as empresas podem executar suas tarefas diárias com mais eficiência.

Como os padrões de segurança estão finalmente alcançando os dispositivos móveis e servidores remotos, podemos esperar que os protocolos de criptografia e autenticação também melhorem. Flexibilidade e interoperabilidade são o futuro da segurança da IoT. Ainda assim, os protocolos SSH continuarão a ser uma parte padrão no futuro próximo.

Como funciona o SSH?


Os protocolos SSH permitem que você controle remotamente o acesso aos seus servidores pela Internet em um ambiente seguro. Não apenas a conexão inicial é altamente segura, mas também toda a sessão de comunicação entre as duas partes. Os usuários podem efetuar login em um servidor remoto usando um túnel SSH Secure Shell aberto ou outros clientes SSH Secure Shell.

O servidor procura uma conexão de porta aberta. Depois de encontrar um, o servidor deve autenticar a conexão. Determina se um ambiente seguro foi estabelecido para comunicação e transferência de arquivos. Se a conexão for iniciada pelo cliente, o cliente deverá autenticar o servidor além de fornecer suas credenciais.

Quando ambas as partes são autenticadas e a conexão é estabelecida, o protocolo de criptografia SSH garante a privacidade contínua de todas as transmissões de dados entre o servidor e o cliente.

Existem três tipos de criptografia que os túneis SSH usam para proteger as conexões:
  • criptografia simétrica
  • criptografia assimétrica
  • hash.

Criptografia simétrica é usado durante a conexão para manter a comunicação segura. Tanto o cliente quanto o servidor compartilham a mesma chave secreta para criptografar e descriptografar dados. Este algoritmo é seguro porque uma chave real nunca é realmente trocada. Em vez disso, ambos os lados compartilham informações públicas das quais podem derivar a chave independentemente.

Criptografia assimétrica , por outro lado, requer uma chave pública e uma chave privada. Ele é usado no início do processo de encapsulamento para autenticar os servidores. O servidor usará uma chave pública para criptografar esses dados e o cliente deverá autenticá-los com uma chave privada. Como uma chave privada específica é a única coisa que pode descriptografar mensagens criptografadas com a chave pública, isso ajuda a autenticar as partes que buscam conexão.

Hashing criptográfico cria uma assinatura exclusiva para o conjunto de dados. Isso é útil em uma conexão SSH porque permite que o servidor saiba se um MAC é aceitável. Um hash correspondente só pode ser criado pelo dado idêntico ao que criou o original. Assim, o hash pode ser usado para verificar a entrada para garantir que seja a correta.

Autenticação SSH


Após estabelecer a criptografia, ocorre um processo de autenticação. A forma mais simples de autenticação é usando uma senha. Embora esta seja uma maneira fácil para os clientes, também é muito fácil para scripts automatizados maliciosos. Mesmo uma senha criptografada tem uma complexidade limitada. Isso o torna inseguro. Usar chaves assimétricas é uma medida comum em vez de usar senhas.

Uma vez que uma chave pública é estabelecida, o cliente deve fornecer a chave privada que acompanha a chave pública. Sem essa combinação, a autenticação falha. Isso ajuda a garantir que os dados criptografados não possam ser descriptografados por um invasor.

Todo o processo de autenticação é negociado durante a configuração e somente as partes com chaves complementares podem se comunicar. Esse processo também torna o processo de entrada rápido. Portanto, é ideal para procedimentos automatizados.

O processo de autenticação irá variar com base nos seguintes fatores:
  • o tipo de banco de dados que está sendo protegido
  • o relacionamento e a localização do servidor
  • as permissões do usuário no servidor.

O melhor de usar um protocolo SSH é que todo o processo é criptografado e altamente seguro.

Configurar túnel SSH


Se você deseja interagir com um banco de dados usando o shell, deve saber como criar um túnel SSH. Embora o uso de um aplicativo de gerenciamento SSH automatizado possa ser conveniente, muitos administradores de banco de dados preferem configurar ferramentas de gerenciamento de banco de dados do zero porque interagir com o shell é a melhor maneira de depurar, auditar e ter o máximo de controle.

Usar um túnel SSH é uma maneira muito segura de abrir uma sessão sem medo de perder dados ou ser hackeado (desde que você feche suas sessões e monitore seus servidores).

Veja como criar um túnel SSH:

Verifique o Bastion Server


Para criar um túnel SSH Secure Shell, você precisa saber os nomes de host do servidor bastion e do banco de dados PostgreSQL, bem como seu nome de usuário no servidor bastion. Execute o comando:
$ ssh <username>@<bastion_server>

Em seguida, digite sua senha quando a janela apropriada aparecer.

Túnel SSH aberto


Abra o túnel usando este comando:
$ ssh -L localhost:port_number:<sql_server>:port_number<username>@<bastion_server>

Deixe a janela aberta para manter a conexão. Os números de duas portas são para o seu computador e o servidor remoto, respectivamente.

Verifique sua conexão


Para certificar-se de que seu túnel está aberto e conectado ao servidor PostgreSQL, use o seguinte comando:
$ psql --port=X --host=localhost -c "SELECT * FROM pg_catalog.pg_tables"

Veja se as tabelas são retornadas. Se estiverem, sua conexão foi bem-sucedida e segura.

Algumas etapas opcionais podem aumentar a eficiência de seu acesso do host bastion ao servidor SQL. Tenha em mente que automatizar o acesso o tempo todo não é uma estratégia segura. É aconselhável sempre fazer login sempre que quiser abrir um túnel SSH para manter as sessões completamente privadas.

Criar perfil de usuário


Para evitar a necessidade de inserir senhas todas as vezes, você pode criar um perfil no servidor bastion. Para fazer isso, você deve adicionar sua chave SSH ao servidor usando o seguinte comando:
$ ssh-copy-id <username>@<bastion_server>

Então, sua chave será usada automaticamente sempre que você quiser fazer login. No entanto, ela tem aspectos positivos e negativos. É mais conveniente, mas você deve garantir a existência de outros protocolos de segurança para proteger a máquina contra malware ou roubo. Se outra pessoa obtiver acesso à sua máquina, ela poderá fazer login automaticamente em seus servidores porque sua chave foi salva.

Atualize seu arquivo de configuração SSH


Pode ser sofisticado lembrar os nomes exatos e os números de porta dos servidores aos quais você deseja se conectar. É por isso que faz parte do protocolo de túnel SSH Secure Shell.

Você está acompanhando os nomes de host e se autentica com seu nome de usuário. É uma parte do que torna a conexão SSH segura em primeiro lugar. Mas existe uma forma de configurar seu procedimento para tornar o acesso mais rápido e fácil sem automatizar totalmente o processo. Você pode adicionar uma entrada ao seu arquivo de configuração SSH:

Host Bastion-produção
  • Nome do host
  • Usuário
  • LocalForward localhost:port_number:port_number

Em seguida, execute o comando:
$ ssh bastion-production 

Agora você pode se conectar em apenas uma etapa.

Dicas de privacidade SSH


É imperativo manter os bancos de dados seguros. Os dados são a moeda mais valiosa do mundo e, com a ascensão do ransomware e de outros crimes cibernéticos, deixar de proteger os dados do cliente é um lapso inaceitável.

O objetivo principal de usar o servidor bastion em primeiro lugar é proteger seu banco de dados. No entanto, alguns erros deixariam seus servidores abertos para qualquer pessoa entrar.

Aqui estão algumas dicas para se manter seguro ao usar túneis SSH para se conectar a servidores PostgreSQL:

Autenticar adequadamente os trabalhadores remotos


Se sua organização usa SSH para se conectar remotamente, todos devem conhecer os conceitos básicos de higiene digital. Use a autenticação baseada em chave que é protegida por uma senha forte. A verificação em duas etapas para cada login também é um bom ponto de partida, além de garantir que as chaves SSH públicas sejam autênticas.

Limite os logins SSH apenas para aqueles que precisam deles e defina privilégios que reflitam as tarefas dos usuários.

Desativar encaminhamento de porta


Apenas cerca de metade dos desenvolvedores aplicam procedimentos de prevenção de encaminhamento de porta. O encaminhamento de porta pode deixá-lo aberto a comunicações criptografadas com usuários e servidores não aprovados. Assim, os hackers podem entrar direto no seu banco de dados. Filtre todas as suas conexões por meio do servidor bastion e considere o uso de port knocking antes de permitir uma conexão.

Verifique se você está executando o software mais recente e se suas conexões SSH estão de acordo com os padrões de conformidade mais recentes.

Auditoria com frequência


Use uma ferramenta de monitoramento contínuo, além de auditorias manuais regulares. Limite suas conexões apenas àquelas que são necessárias e certifique-se de verificar quaisquer alterações em suas configurações que não foram aprovadas previamente.

Ao ficar de olho em quem está fazendo login e em que tipo de atividade eles estão envolvidos, você pode limitar a superfície de ataque e facilitar a identificação de vulnerabilidades desde o início.

Conclusão


O uso de túneis SSH criptografados é uma maneira segura de acessar bancos de dados PostgreSQL de servidores remotos. O processo mantém a criptografia pela duração das sessões conectadas. Embora os programas SSH automatizados sejam úteis para tarefas recorrentes e outros processos administrativos do sistema, abrir um túnel SSH manualmente pode ser benéfico. Nesse caso, você pode identificar facilmente todo o tráfego e comunicação em vez de usar uma versão ou cliente automatizado.

Se você usa o PostgreSQL ou qualquer sistema de gerenciamento de banco de dados SQL, precisa saber como utilizar o encapsulamento SSH. Pode ser crucial para monitorar e gerenciar processos do sistema e transferências de dados.

Os protocolos SSH proporcionam uma conexão altamente segura e seguir precauções extras ajudará a manter a integridade das conexões do servidor.