Introdução
Por padrão, o PostgreSQL utiliza a porta 5432 para gerenciar as conexões de entrada. Embora essa configuração seja funcional para ambientes de desenvolvimento local, manter a porta padrão em servidores expostos à internet pode aumentar a superfície de ataque, tornando seu banco de dados um alvo visível para varreduras automatizadas de bots e tentativas de força bruta.
Alterar a porta padrão é uma das práticas fundamentais de hardening (endurecimento de segurança) em infraestruturas de TI. Ao mudar o número da porta, você adiciona uma camada de "segurança por obscuridade", dificultando a identificação do serviço por scanners de rede comuns.
Neste tutorial da Toda Solução, você aprenderá o procedimento técnico completo para:
- Localizar e modificar o arquivo de configuração
postgresql.conf. - Ajustar as permissões de escuta (listen addresses) para permitir conexões externas.
- Configurar as regras de firewall (UFW ou iptables) para liberar o novo tráfego.
- Validar se a nova porta está operacional e acessível remotamente.
Este guia é essencial para administradores de sistemas e desenvolvedores que buscam elevar o nível de segurança de suas instâncias de banco de dados em servidores Linux (Ubuntu, Debian ou CentOS).
Pré-requisitos
Antes de iniciar a alteração da porta do seu serviço de banco de dados, é fundamental garantir que o ambiente esteja preparado para evitar interrupções críticas no funcionamento da sua aplicação ou perda de conectividade com o servidor. Certifique-se de atender aos seguintes itens:
- Acesso Privilegiado: Você deve possuir acesso via SSH ao servidor Linux com privilégios de root ou um usuário com permissões de sudo.
- Identificação da Versão: É necessário saber qual versão do PostgreSQL está instalada para localizar corretamente os diretórios de configuração. Você pode verificar isso com o comando:
psql --version - Backup de Configurações: Antes de qualquer modificação, realize uma cópia de segurança dos arquivos
postgresql.confepg_hba.conf. Alterações incorretas podem impedir o boot do serviço. - Conhecimento de Rede: Tenha em mente qual será a nova porta desejada (evite portas comuns de outros serviços) e certifique-se de que ela não esteja sendo utilizada por outro processo no servidor.
- Acesso ao Firewall: Você deve ter controle sobre o gerenciador de firewall ativo no sistema (comumente UFW em sistemas baseados em Debian/Ubuntu ou iptables).
Aviso de Risco: A alteração da porta do PostgreSQL interromperá as conexões ativas. Se você possui aplicações conectadas ao banco, elas perderão o contato imediatamente após o reinício do serviço e precisarão ser atualizadas com a nova porta.
Alteração da porta no PostgreSQL
Para alterar a porta de comunicação, precisamos editar o arquivo de configuração principal do PostgreSQL, chamado postgresql.conf. O caminho deste arquivo pode variar dependendo da sua distribuição Linux (Ubuntu, Debian ou CentOS), mas geralmente ele reside no diretório de dados do cluster.
- Primeiro, localize o arquivo de configuração. Se você não souber o caminho exato, pode usar o comando:
sudo find / -name postgresql.conf - Abra o arquivo utilizando um editor de texto via terminal, como o nano ou vi (substitua o caminho abaixo pelo caminho encontrado no passo anterior):
sudo nano /etc/postgresql/14/main/postgresql.conf - Dentro do arquivo, utilize o atalho Ctrl + W (no nano) para buscar pelo termo port.
- Você encontrará uma linha semelhante a
port = 5432. Altere o valor para a nova porta desejada (por exemplo, 5433). - Salve as alterações (no nano, pressione Ctrl + O, Enter e depois Ctrl + X para sair).
- Para que a mudança entre em vigor, é obrigatório reiniciar o serviço do PostgreSQL:
sudo systemctl restart postgresql
Atenção: Certifique-se de escolher uma porta que não esteja sendo utilizada por outro serviço no seu servidor para evitar conflitos de infraestrutura.
Configuração de acesso remoto
Após alterar a porta no arquivo postgresql.conf, o banco de dados ainda estará configurado para aceitar conexões apenas da interface de loopback (localhost). Para permitir que servidores externos ou ferramentas de gerenciamento (como DBeaver ou pgAdmin) se conectem ao seu banco, você precisa editar o arquivo pg_hba.conf.
Siga os passos abaixo para configurar as permissões de rede:
- Localize o arquivo pg_hba.conf (geralmente no mesmo diretório dos arquivos de configuração do PostgreSQL).
- Abra o arquivo com seu editor de preferência (ex: nano ou vim):
sudo nano /etc/postgresql/14/main/pg_hba.conf - Adicione uma nova linha ao final do arquivo para permitir o acesso. Você pode optar por permitir um IP específico (mais seguro) ou qualquer endereço (menos seguro):
- Para um IP específico:
host all all 200.1.2.3/32 scram-sha-256 - Para qualquer IP (Atenção: use apenas se o firewall estiver ativo):
host all all 0.0.0.0/0 scram-sha-256
- Para um IP específico:
- Salve o arquivo e saia do editor.
- Importante: Para que as alterações no
pg_hba.confentrem em vigor, você deve reiniciar o serviço do PostgreSQL:sudo systemctl restart postgresql
Certifique-se de que o método de autenticação (ex: scram-sha-256 ou md5) seja compatível com a versão do seu cliente PostgreSQL.
Liberação no Firewall (UFW/iptables)
Após alterar a porta no PostgreSQL, o banco de dados não será acessível externamente se o firewall do seu servidor Linux estiver bloqueando a nova porta. Por segurança, o padrão é que apenas a porta 22 (SSH) esteja aberta. Siga os passos abaixo para liberar o novo acesso conforme o firewall que você utiliza:
Se você utiliza o UFW (Uncomplicated Firewall):
Verificação da nova porta
Após realizar as alterações de configuração e reiniciar o serviço, é fundamental validar se o PostgreSQL está, de fato, escutando na nova porta definida e se o firewall não está bloqueando a conexão. Siga os passos abaixo para garantir que tudo esteja operando corretamente:
- Verificar o status do serviço: Certifique-se de que o PostgreSQL subiu sem erros após a mudança de porta.
sudo systemctl status postgresql - Validar a porta em escuta (Listening): Utilize o comando
ssounetstatpara confirmar se o processo do PostgreSQL está vinculado à nova porta escolhida.sudo ss -tulpn | grep postgresNo resultado, procure pelo número da porta que você configurou (ex: 5433).
- Teste de conexão local: Tente acessar o banco de dados via psql especificando explicitamente a nova porta para testar a autenticação.
psql -h localhost -p SUA_NOVA_PORTA -U seu_usuario -d seu_banco - Teste de conexão remota (Externo): De uma máquina externa (seu computador local, por exemplo), utilize o telnet ou nc (netcat) para verificar se a porta está aberta para o mundo.
nc -zv IP_DO_SERVIDOR SUA_NOVA_PORTASe receber uma mensagem de "Succeeded" ou "Connection established", a configuração está perfeita.
Troubleshooting
Se após realizar as alterações você não conseguir conectar ao banco de dados, siga este checklist de diagnóstico para identificar o gargalo:
- Verifique se o serviço está rodando: Uma alteração incorreta no arquivo de configuração pode impedir o boot do PostgreSQL. Use o comando:
Se o status estiver failed, revise o arquivosudo systemctl status postgresqlpostgresql.confem busca de erros de sintaxe. - Confirme a porta em execução: Verifique se o PostgreSQL realmente subiu na nova porta escolhida:
Certifique-se de que o número da porta listado é o que você configurou.sudo ss -nltp | grep postgres - Valide o Listen Addresses: Se o erro for "Connection refused", verifique se o parâmetro
listen_addressesnopostgresql.confestá definido como'*'ou com o IP correto da interface de rede, e não apenas como'localhost'. - Teste a conectividade local: Tente conectar via terminal dentro do próprio servidor usando a nova porta para isolar problemas de rede externa:
psql -h 127.0.0.1 -p [SUA_NOVA_PORTA] -U [SEU_USUARIO] - Regras de Firewall de terceiros: Se você utiliza instâncias em Cloud (como AWS, Azure ou Google Cloud), lembre-se que além do UFW/iptables, é necessário liberar a nova porta no Security Group ou na regra de firewall do painel de controle da infraestrutura.