Puerto 5432 (PostgreSQL): para qué sirve y cómo protegerlo
El puerto 5432 TCP es el puerto por defecto de PostgreSQL. El acceso se controla con dos ficheros: postgresql.conf (listen_addresses, en qué interfaces escucha) y pg_hba.conf (quién puede conectar, desde dónde y cómo se autentica). No debe estar abierto a Internet.
Qué es el puerto 5432
Por defecto PostgreSQL solo escucha en localhost. Para que otro servidor de la red se conecte, hay que añadir su IP en listen_addresses y una línea en pg_hba.conf con el método scram-sha-256.
En Docker es frecuente publicar "5432:5432" en el docker-compose y dejar la base de datos accesible desde Internet sin darse cuenta, porque Docker se salta ufw.
¿Es peligroso tener abierto el puerto 5432?
Riesgo alto: No debe estar abierto a Internet.
- Fuerza bruta contra el usuario postgres.
- Ejecución de comandos del sistema con COPY ... FROM PROGRAM si se obtiene un superusuario.
Cómo proteger el puerto 5432
- listen_addresses solo en las interfaces necesarias.
- scram-sha-256 en pg_hba.conf; nunca trust.
- En Docker, no publiques el puerto o publícalo en 127.0.0.1.
Comandos y configuración
Comprobar si el puerto 5432 está abierto
sudo ss -tlnp | grep ':5432 '
nc -zv 203.0.113.10 5432
sudo nmap -p 5432 203.0.113.10pg_hba.conf: solo desde la red de la aplicación
# TIPO BASE USUARIO ORIGEN MÉTODO
host tienda app 10.0.0.0/24 scram-sha-256Docker Compose: base de datos solo accesible en local
services:
db:
image: postgres:16
ports:
- "127.0.0.1:5432:5432" # no "5432:5432"Túnel SSH
ssh -N -L 5433:127.0.0.1:5432 ana@203.0.113.10
psql -h 127.0.0.1 -p 5433 -U app tiendaTambién puedes comprobarlo desde fuera de tu red con nuestro escáner de puertos online.
Herramientas para comprobarlo
Preguntas frecuentes
¿Por qué no puedo conectar a PostgreSQL desde otro equipo?
Por defecto solo escucha en localhost. Hay que cambiar listen_addresses en postgresql.conf, añadir la IP en pg_hba.conf y reiniciar.