GNU/Linux >> Linux Esercitazione >  >> Linux

Come proteggere PostgreSQL Server

PostgreSQL, noto anche come Postgres, è un sistema di gestione di database relazionale a oggetti generico. È uno dei database open source più avanzati disponibili. Tuttavia, ci sono molti problemi di sicurezza e potenziali vulnerabilità se l'applicazione non è protetta correttamente.

Se sei un amministratore di sistema o database, devi sapere come proteggere Postgres prima di entrare in produzione.

In questo tutorial, ti mostreremo come proteggere il server PostgreSQL su Ubuntu18.04.

Prerequisiti

  • Un nuovo VPS Ubuntu 18.04 sulla piattaforma Atlantic.net Cloud.
  • Una password di root configurata sul tuo server.

Fase 1:crea un server cloud Atlantic.Net

Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 18.04 come sistema operativo con almeno 1GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.

Dopo aver effettuato l'accesso al tuo server Ubuntu 18.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.

apt-get update -y

Passaggio 2:installazione di PostgreSQL

apt-get install postgresql postgresql-contrib -y

Una volta completata l'installazione, avvia il server PostgreSQL e abilitalo all'avvio al riavvio:

systemctl start postgresql
systemctl enable postgresql

Fase 3:crea database e utente

Successivamente, dovrai creare un database e un utente a scopo di test.

Innanzitutto, accedi alla shell di PostgreSQL con il seguente comando:

sudo -i -u postgres psql

Dovresti vedere il seguente output:

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

postgres=#

Quindi, crea un utente chiamato testuser e imposta la password.

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

Quindi, crea un database chiamato testdb e concedi l'accesso completo al nuovo utente:

postgres=# CREATE DATABASE testdb OWNER testuser;

Quindi, esci dalla shell di PostgreSQL con il seguente comando:

postgres=# \q

Fase 4:configurare l'indirizzo di ascolto

Per l'ambiente di produzione, dovrai configurare PostgreSQL per l'ascolto su un'interfaccia pubblica.

Puoi modificare questa impostazione modificando il file /postgresql.conf:

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

Trova la riga seguente:

#listen_addresses = 'localhost'

Sostituiscilo con il seguente:

listen_addresses = 'localhost,your-server-ip'

Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio PostgreSQL per implementare le modifiche:

systemctl restart postgresql

Fase 5:configurare gli host consentiti

Per una maggiore sicurezza, si consiglia di consentire solo a IP specifici di accedere e modificare il database PostgreSQL. Puoi farlo modificando il file pg_hba.conf:

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

Trova la riga seguente:

# local      DATABASE  USER  METHOD  [OPTIONS]

Aggiungi la seguente riga sotto la riga sopra:

host  testdb  testuser   client-ip-address/32   md5

Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio PostgreSQL per implementare le modifiche:

systemctl restart postgresql

Dove:

ospite :l'host è un socket TCP/IP semplice o crittografato con SSL.
database :testdb è il nome del database a cui l'host può connettersi.
utente :testuser è il nome dell'utente autorizzato a effettuare la connessione.
indirizzo :client-ip-address/32 specifica l'indirizzo IP del computer client.
auth-method :md5 è il nome del metodo di autenticazione.

Passaggio 6:configurazione del firewall UFW

apt-get install ufw -y

Successivamente, si consiglia di configurare la regola del firewall UFW per concedere l'accesso alla porta predefinita di PostgreSQL 5432 solo all'IP del client.

IMPORTANTE: Prima di iniziare, dovrai consentire la connessione SSH in entrata tramite UFW, poiché ciò ti farà perdere l'accesso alla shell. Sarai bloccato e non potrai connetterti alla tua istanza.

Puoi consentire il servizio SSH utilizzando il seguente comando:

ufw allow ssh

Quindi, abilita il firewall UFW con il seguente comando:

ufw enable

Quindi, consenti alla porta 5432 di PostgreSQL solo l'indirizzo IP del client utilizzando il seguente comando:

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

Quindi, controlla lo stato della regola UFW con il seguente comando:

ufw status

Dovresti ottenere il seguente output:

Status: active

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

Fase 7:verifica della connessione remota

A questo punto, il server PostgreSQL è protetto e accessibile solo dall'IP del client.

Per verificarlo, collega il tuo database PostgreSQL dal sistema del client:

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

Ti verrà chiesto di fornire la password per testuser, come mostrato di seguito:

Password for user testuser:

Digita la tua password e premi Invio . Una volta stabilita la connessione, dovresti ottenere il seguente output:

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=>

Per ora è tutto.

Conclusione

Nella guida sopra, hai imparato come proteggere PostgreSQL configurando PostgreSQL per concedere l'accesso solo a host specifici. Hai anche imparato come configurare UFW per consentire connessioni solo da host specifici. Ora dovresti essere in grado di proteggere il tuo server PostgreSQL da determinati tipi di attacchi. Inizia oggi con l'hosting VPS di Atlantic.Net!


Linux
  1. Come installare il server Redis su CentOS 8

  2. Come installare DenyHost su CentOS 6.7

  3. Come installare e proteggere Redis su Ubuntu 18.04

  4. Come installare PostgreSQL Server su CentOS 8

  5. Come proteggere Rocky Linux 8

Come installare Hiawatha Web Server su CentOS 7

Come installare Consul Server su Ubuntu 20.04

Come installare Monit Monitoring Server su Ubuntu 20.04.

Come installare il server PandoraFMS su CentOS 8

Come installare il server EteSync su Ubuntu 20.04

Come proteggere SSH con Fail2Ban