GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo proteger el servidor PostgreSQL

PostgreSQL, también conocido como Postgres, es un sistema de administración de bases de datos relacionales de objetos de propósito general. Es una de las bases de datos de código abierto más avanzadas disponibles. Sin embargo, existen muchos problemas de seguridad y posibles vulnerabilidades si la aplicación no está protegida correctamente.

Si es administrador de un sistema o de una base de datos, necesita saber cómo proteger Postgres antes de pasar a producción.

En este tutorial, le mostraremos cómo proteger el servidor PostgreSQL en Ubuntu 18.04.

Requisitos

  • Un Ubuntu 18.04 VPS nuevo en Atlantic.net Cloud Platform.
  • Una contraseña raíz configurada en su servidor.

Paso 1:crear un servidor en la nube de Atlantic.Net

Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Ubuntu 18.04 como sistema operativo con al menos 1 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.

Una vez que haya iniciado sesión en su servidor Ubuntu 18.04, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.

apt-get update -y

Paso 2:instalar PostgreSQL

apt-get install postgresql postgresql-contrib -y

Una vez que se haya completado la instalación, inicie el servidor PostgreSQL y habilítelo para que se inicie al reiniciar:

systemctl start postgresql
systemctl enable postgresql

Paso 3:Crear base de datos y usuario

A continuación, deberá crear una base de datos y un usuario con fines de prueba.

Primero, inicie sesión en el shell de PostgreSQL con el siguiente comando:

sudo -i -u postgres psql

Debería ver el siguiente resultado:

psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.

postgres=#

A continuación, cree un usuario llamado testuser y establezca la contraseña.

postgres=# CREATE USER testuser WITH PASSWORD 'password';

A continuación, cree una base de datos llamada testdb y otorgue acceso completo al nuevo usuario:

postgres=# CREATE DATABASE testdb OWNER testuser;

A continuación, salga del shell de PostgreSQL con el siguiente comando:

postgres=# \q

Paso 4:configurar la dirección de escucha

Para el entorno de producción, deberá configurar PostgreSQL para escuchar en una interfaz pública.

Puede cambiar esta configuración editando el archivo /postgresql.conf:

nano /etc/postgresql/10/main/postgresql.conf

Busque la siguiente línea:

#listen_addresses = 'localhost'

Reemplácelo con lo siguiente:

listen_addresses = 'localhost,your-server-ip'

Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio PostgreSQL para implementar los cambios:

systemctl restart postgresql

Paso 5:configurar los hosts permitidos

Para mayor seguridad, se recomienda permitir que solo IP específicas accedan y modifiquen la base de datos de PostgreSQL. Puedes hacerlo editando el archivo pg_hba.conf:

nano /etc/postgresql/10/main/pg_hba.conf

Busque la siguiente línea:

# local      DATABASE  USER  METHOD  [OPTIONS]

Agregue la siguiente línea debajo de la línea anterior:

host  testdb  testuser   client-ip-address/32   md5

Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio PostgreSQL para implementar los cambios:

systemctl restart postgresql

Dónde:

anfitrión :host es un socket TCP/IP simple o cifrado con SSL.
base de datos :testdb es el nombre de la base de datos a la que se puede conectar el host.
usuario :testuser es el nombre del usuario que puede realizar la conexión.
dirección :client-ip-address/32 especifique la dirección IP de la computadora del cliente.
auth-method :md5 es el nombre del método de autenticación.

Paso 6:configurar el cortafuegos UFW

apt-get install ufw -y

A continuación, se recomienda configurar la regla de firewall UFW para otorgar acceso al puerto predeterminado de PostgreSQL 5432 solo a la IP del cliente.

IMPORTANTE: Antes de comenzar, deberá permitir la conexión SSH entrante a través de UFW, ya que eso hará que pierda el acceso al shell. Estará bloqueado y no podrá conectarse a su instancia.

Puede permitir el servicio SSH usando el siguiente comando:

ufw allow ssh

Luego, habilite el firewall UFW con el siguiente comando:

ufw enable

A continuación, permita el puerto 5432 de PostgreSQL solo a la dirección IP del cliente mediante el siguiente comando:

ufw allow from client-ip-address to any port 5432

A continuación, verifique el estado de la regla UFW con el siguiente comando:

ufw status

Deberías obtener el siguiente resultado:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                 
5432                       ALLOW       client-ip-address
22/tcp (v6)                ALLOW       Anywhere (v6)

Paso 7:verificar la conexión remota

En este punto, el servidor PostgreSQL está protegido y solo se puede acceder a él desde la IP del cliente.

Para verificarlo, conecte su base de datos PostgreSQL desde el sistema del cliente:

psql -U testuser -h postgres-server-ip -d testdb

Se le pedirá que proporcione la contraseña para testuser, como se muestra a continuación:

Password for user testuser:

Escriba su contraseña y pulse Introducir . Una vez que se haya establecido la conexión, debería obtener el siguiente resultado:

psql (9.3.24, server 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
WARNING: psql major version 9.3, server major version 10.
         Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

testdb=>

Eso es todo por ahora.

Conclusión

En la guía anterior, aprendió cómo proteger PostgreSQL configurando PostgreSQL para otorgar acceso solo a hosts específicos. También aprendió cómo configurar UFW para permitir conexiones solo desde hosts específicos. Ahora debería poder proteger su servidor PostgreSQL de ciertos tipos de ataques. ¡Empiece hoy con alojamiento VPS de Atlantic.Net!


Linux
  1. Cómo instalar el servidor Redis en CentOS 8

  2. Cómo instalar DenyHost en CentOS 6.7

  3. Cómo instalar y asegurar Redis en Ubuntu 18.04

  4. Cómo instalar el servidor PostgreSQL en CentOS 8

  5. Cómo asegurar Rocky Linux 8

Cómo instalar el servidor web Hiawatha en CentOS 7

Cómo instalar el servidor Consul en Ubuntu 20.04

Cómo instalar Monit Monitoring Server en Ubuntu 20.04.

Cómo instalar el servidor de PandoraFMS en CentOS 8

Cómo instalar el servidor EteSync en Ubuntu 20.04

Cómo proteger SSH con Fail2Ban