Não importa que tipo de tecnologia ou sistema de segurança você tenha, sempre há o risco de ser hackeado, pois não existe um sistema 100% seguro. Como os dados são provavelmente o ativo mais importante de uma empresa, você deve proteger seu sistema o máximo possível para minimizar esse risco.
Este blog mencionará algumas verificações importantes a serem executadas em seu ambiente PostgreSQL para fechar a lacuna de vulnerabilidade e evitar alguns dos problemas de segurança mais comuns.
Protegendo as comunicações
Se você estiver usando diferentes Provedores de Nuvem, uma combinação de Provedor de Nuvem e On-Prem, ou mesmo apenas um ambiente On-Prem, a comunicação em todos os seus sistemas deve ser criptografada, e você deve restringir a tráfego somente de fontes conhecidas para reduzir o risco de acesso não autorizado à sua rede.
O uso de VPN, SSH ou Regras de Firewall, ou mesmo uma combinação delas, são boas soluções para este ponto.
Controlando o acesso ao banco de dados
Você precisa restringir o acesso físico e remoto.
-
Acesso físico (on-prem):Restrinja o acesso físico não autorizado ao servidor de banco de dados.
-
Acesso remoto:Limite o acesso remoto apenas às pessoas necessárias e da menor quantidade possível de fontes. Usar uma VPN para acessá-lo é definitivamente útil aqui, mas também existem outras opções, como o SSH Tunneling. Você deve encontrar a melhor solução para sua empresa.
Gerenciando contas de usuário do banco de dados
Há muitas maneiras de melhorar a segurança de suas contas de usuário no PostgreSQL.
-
Remover usuários inativos. Para isso, você deve definir um período de tempo para considerar um usuário como inativo, podendo agendá-lo para removê-lo automaticamente.
-
Conceda apenas os privilégios necessários ao criar uma nova conta de usuário.
-
Restringir a fonte para cada conexão de usuário usando o arquivo de configuração pg_hba.conf.
-
Defina uma política de senha segura (ou habilite um plugin para isso, por exemplo, passwordcheck).
Instalações e configurações seguras
Existem algumas mudanças a serem feitas para proteger sua instalação do PostgreSQL.
-
Instale apenas os pacotes e serviços necessários no servidor.
-
Altere a senha do usuário admin padrão e restrinja o uso apenas do localhost.
-
Altere a porta padrão e especifique a interface para escutar.
-
Ativar plug-in de política de segurança de senha.
-
Configure certificados SSL para criptografar dados em trânsito.
-
Criptografar dados em repouso.
-
Configure o firewall local para permitir o acesso à porta do banco de dados somente a partir da rede local.
Caso você esteja usando um banco de dados PostgreSQL gerenciado, alguns dos pontos mencionados acima não serão necessários.
Auditoria e registro
As instruções de registro podem ajudá-lo a detectar problemas de segurança ou evitá-los se você os recuperar a tempo.
Você pode usar o recurso de log padrão do PostgreSQL usando o parâmetro log_statement, mas também pode usar uma extensão como pgAudit para ter um log de auditoria de sessão e objeto mais detalhado.
Implementar um WAF (Web Application Firewall)
SQL Injections ou ataques DoS (Denial of Service) são os ataques mais comuns a um banco de dados, e a maneira mais segura de evitá-los é usar um WAF para capturar esse tipo de consultas SQL ou um SQL Proxy para analisar o tráfego.
Verifique CVE (vulnerabilidades e exposições comuns) com frequência
Todos os dias, novas vulnerabilidades são detectadas em seu servidor de banco de dados. Você deve verificar com frequência para saber se precisa aplicar um patch ou alterar algo em sua configuração. Uma maneira de saber é revisando o site do CVE, onde você pode encontrar uma lista de vulnerabilidades com uma descrição e procurar a versão e o fornecedor do seu banco de dados para confirmar se há algo crítico para corrigir o mais rápido possível.
Para ser mais específico, você pode verificar a seção PostgreSQL para tentar encontrar problemas para a versão do seu banco de dados.
Mantenha seu SO e banco de dados atualizados
Existem várias correções e melhorias que o fornecedor do banco de dados ou o sistema operacional lança para corrigir ou evitar vulnerabilidades. É importante manter seu sistema o mais atualizado possível aplicando patches e atualizações de segurança.
Monitoramento
Para saber o status de seus sistemas, você precisará ter um bom sistema de monitoramento instalado. Isso pode ser útil para encontrar problemas de segurança ou até mesmo para evitá-los.
Para isso, o ClusterControl é uma boa opção, pois é um sistema de gerenciamento e monitoramento que ajuda você a implantar, gerenciar, monitorar e dimensionar seus bancos de dados a partir de uma interface amigável. Ele tem suporte para as principais tecnologias de banco de dados de código aberto e você pode automatizar muitas das tarefas de banco de dados que precisa executar regularmente, como adicionar e dimensionar novos nós, executar backups e restaurações e muito mais.
ClusterControl permite monitorar seus servidores em tempo real com um conjunto predefinido de painéis para analisar algumas das métricas mais comuns.
Permite customizar os gráficos disponíveis no cluster e habilitar o monitoramento baseado em agente para gerar dashboards mais detalhados.
Você também pode criar alertas, que informam sobre eventos em seu cluster, ou integrar-se a diferentes serviços, como PagerDuty ou Slack.
Na seção do monitor de consulta, você pode encontrar as principais consultas, as consultas em execução, os valores discrepantes de consulta e as estatísticas de consulta para monitorar o tráfego do banco de dados.
Com esses recursos, você pode ver como está o seu banco de dados PostgreSQL.
Conclusão
Os pontos mencionados acima ajudarão você a preencher a lacuna de vulnerabilidade em seu banco de dados PostgreSQL, mas, como mencionamos, sempre existe o risco de ser hackeado.
Além disso, você deve ter um bom sistema de monitoramento como o ClusterControl, e executar periodicamente algumas ferramentas de verificação de segurança em busca de vulnerabilidades como o Nessus para minimizar ainda mais os riscos de segurança.