Saltar al contenido
TCPRiesgo alto si se expone

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

bash
sudo ss -tlnp | grep ':5432 '
nc -zv 203.0.113.10 5432
sudo nmap -p 5432 203.0.113.10

pg_hba.conf: solo desde la red de la aplicación

bash
# TIPO  BASE      USUARIO  ORIGEN          MÉTODO
host    tienda    app      10.0.0.0/24     scram-sha-256

Docker Compose: base de datos solo accesible en local

yaml
services:
  db:
    image: postgres:16
    ports:
      - "127.0.0.1:5432:5432"   # no "5432:5432"

Túnel SSH

bash
ssh -N -L 5433:127.0.0.1:5432 ana@203.0.113.10
psql -h 127.0.0.1 -p 5433 -U app tienda

Tambié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.

Puertos relacionados

Ver la lista de puertos