PostgreSQL – accediendo como postgres

postgresql

Consejos de configuración de acceso a postgresql

  • Tener una cuenta de sistema (postgres) en el sistema operativo sin clave definida. Habrá que ser root y utilizar su – postgres para convertirse en el usuario “postgres”. No será posible acceder directamente al sistema como “postgres” via tcp/ip
  • El acceso mediante sockets será usado solamente por la cuenta de administrador “postgres”. El resto de usuarios utilizarán el protocolo tcp/ip.
  • Cambiar los permisos del socket utilizado por PostgreSQL
  • Utilizar el metodo de autentificación ‘ident’ para la cuenta “postgres” en nuestro gestor de base de datos. De esta manera solamente el usuario postgres del sistema operativo podrá acceder a PostgreSQL como el usuario “postgres” de la base de datos

Para implementar estas medidas tendremos que cambiar la configuración por defecto siguiendo estos pasos:

Para convertir la cuenta postgres del sistema operativo en una cuenta sin clave definida ejecutar como root:

passwd -d postgres

Comprobar que no teneis ninguna definición en pg_hba.conf para usuarios normales usando sockets (local) en el tipo de conexión. Si teneis usuarios usando sockets, cambiar el tipo de conexión a host y usar 127.0.0.1/255.255.255.255 (localhost) como IP de acceso. Con psql tendreis que utilizar psql -h localhost -U usuario para acceder al sistema.

Cambiar en el fichero de configuración postgresql.conf las siguientes lineas:


listen_addresses = 'localhost'
unix_socket_permissions = 0700

Si las bases de datos van a ser accedidas desde otras maquinas externas, tendreis que definir tambien en listen_addresses la IP del servidor postgreSQL.
Actualizar el fichero pg_ident.conf con la siguiente linea:

administrador postgres postgres

Y comprobar que la única linea en pg_hba.conf con información sobre el usuario “postgres” es la siguiente:

local all postgres ident administrador

No olvidar ejecutar un restart de PostgreSQL para que los cambios se instalen.

Accedemos ahora por ssh y como root ejecutamos lo siguiente:

# ssh root@10.0.0.1
# psql -U postgres
psql: FATAL: Ident authentication failed for user "postgres"

-bash-3.2# psql -h localhost -U postgres
psql: FATAL: Ident authentication failed for user "postgres"


-bash-3.2# su - postgres
-bash-3.2$ psql

Welcome to psql 8.1.21, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
postgres=#

Links
http://www.postgresql-es.org/node/224

One thought on “PostgreSQL – accediendo como postgres

  1. Edison Rivadeneira says:

    Porque se debe cambiar a que el acceso por sockets solo sea para el usuario Administrador que riesgos o problemas pueden darse al no realizar este cambio.

    Agradeceria una respuesta.
    Saludos
    @EdisonRivas2010

Leave a Reply

Your email address will not be published. Required fields are marked *