0Pricing
Linux Server Deployment & SSH Mastery · Lezione

Protezione delle connessioni al database

Configuri connessioni sicure al database tramite SSL/TLS e limiti l'accesso in base agli indirizzi IP per una maggiore sicurezza.

Protezione delle connessioni al database è una lezione Linux Server Deployment & SSH Mastery gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Linux Server Deployment & SSH Mastery, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Linux Server Deployment & SSH Mastery include 4 lezioni in totale.

Perché proteggere le connessioni al database?

Quando le applicazioni si connettono a un database, spesso i dati sensibili viaggiano attraverso la rete. Senza una sicurezza adeguata, questi dati potrebbero essere intercettati o manomessi.

  • Riservatezza: impedisce la visualizzazione non autorizzata dei dati.
  • Integrità: garantisce che i dati non vengano alterati durante il trasferimento.
  • Autenticazione: verifica l'identità sia del client sia del server.

Questa lezione si concentra su due metodi fondamentali: la crittografia SSL/TLS e le restrizioni degli accessi basate sull'indirizzo IP.

Comprendere SSL/TLS per i database

SSL/TLS (Secure Sockets Layer/Transport Layer Security) è la tecnologia standard per stabilire un collegamento crittografato tra un server web e un client (o, nel nostro caso, tra un server di database e un client).

  • Crittografa tutti i dati scambiati, proteggendoli dalle intercettazioni.
  • Utilizza certificati digitali per verificare l'identità del server (e, facoltativamente, del client).
  • È fondamentale per proteggere dati come password, informazioni finanziarie e dati personali durante il trasferimento.

Generare certificati SSL/TLS

Per utilizzare SSL/TLS, il server di database ha bisogno di un certificato digitale e di una chiave privata. Questi elementi comprovano l'identità del server.

  • Certificati autofirmati: sono i più semplici da creare per i test o le reti interne, ma non sono considerati attendibili per impostazione predefinita.
  • Certificati firmati da una CA: rilasciati da un'autorità di certificazione (CA) e considerati attendibili a livello globale, sono ideali per gli ambienti di produzione.

Per questa lezione, supporremo che disponga già di un certificato del server (server.crt) e di una chiave privata (server.key).

PostgreSQL: abilitare SSL

Per abilitare SSL in PostgreSQL, deve modificare il file postgresql.conf. In questo modo indica al server di ascoltare le connessioni sicure e specifica dove trovare i certificati.

Parametri principali:

  • ssl = on: abilita SSL.
  • ssl_cert_file: percorso del certificato del server.
  • ssl_key_file: percorso della chiave privata del server.

Dopo aver apportato le modifiche, riavvii PostgreSQL.

# Snippet from postgresql.conf

ssl = on
ssl_cert_file = '/etc/ssl/certs/postgresql/server.crt'
ssl_key_file = '/etc/ssl/private/postgresql/server.key'
ssl_crl_file = '' # Optional: Certificate Revocation List

# Remember to restart PostgreSQL after changes!

MySQL: abilitare SSL/TLS

Per MySQL, configurerà SSL/TLS nel file my.cnf (o my.ini su Windows), in genere nella sezione [mysqld].

Specificherà i percorsi del certificato del server, della chiave privata e, facoltativamente, di un certificato dell'Autorità di certificazione (CA), se ne utilizza uno per verificare i certificati client.

Dopo aver apportato le modifiche, riavvii il servizio MySQL affinché diventino effettive.

# Snippet from my.cnf

[mysqld]
ssl_ca = /etc/mysql/certs/ca.pem
ssl_cert = /etc/mysql/certs/server-cert.pem
ssl_key = /etc/mysql/certs/server-key.pem

# Restart MySQL after changes!

Connessione del client con SSL/TLS

Dopo aver configurato il server, è necessario indicare ai client di utilizzare SSL/TLS durante la connessione. Spesso è sufficiente specificare le opzioni SSL nella stringa di connessione o nel comando.

Ecco un esempio che utilizza il client psql per PostgreSQL, richiedendo esplicitamente la modalità SSL:

  • sslmode=require: forza una connessione SSL.
  • sslrootcert: percorso del certificato CA per la verifica del server.
psql "host=your_db_host user=your_user dbname=your_db \
  sslmode=require sslrootcert=/path/to/ca.crt"

Limitare l'accesso per indirizzo IP

Oltre alla crittografia, limitare l'accesso in base all'indirizzo IP del client è una pratica di sicurezza fondamentale. In questo modo, solo i computer considerati attendibili possono anche solo tentare di connettersi al database.

Può configurare questa limitazione:

  • A livello del server di database (ad esempio, tramite pg_hba.conf di PostgreSQL o le istruzioni GRANT di MySQL).
  • Utilizzando un firewall (come UFW o firewalld) per bloccare il traffico verso la porta del database proveniente da IP non autorizzati.

La combinazione di entrambi i metodi offre una difesa a più livelli.

PostgreSQL: limitazioni IP con pg_hba.conf

PostgreSQL utilizza il file pg_hba.conf per l'autenticazione basata sull'host. Ogni riga specifica i tipi di connessione, i database, gli utenti e gli indirizzi IP autorizzati.

Campi comuni:

  • TYPE: host (TCP/IP), local (socket Unix).
  • DATABASE: all, nome di un database specifico.
  • USER: all, utente specifico.
  • ADDRESS: intervallo di IP (ad esempio, 192.168.1.0/24) o singolo IP.
  • METHOD: scram-sha-256, md5, peer, ecc.

Ricordi di riavviare PostgreSQL dopo la modifica.

# Snippet from pg_hba.conf

# Allow connections from localhost for all users/databases
host    all             all             127.0.0.1/32            scram-sha-256

# Allow 'app_user' from specific IP range to 'app_db'
host    app_db          app_user        192.168.1.0/24          scram-sha-256

# Deny all other connections (implicit if no other rules match)

MySQL: limitazioni IP con GRANT

In MySQL, limita l'accesso degli utenti specificando l'host da cui possono connettersi quando crea o modifica un utente con l'istruzione GRANT.

La sintassi 'user'@'host' è fondamentale:

  • 'localhost': solo dal server stesso.
  • '192.168.1.100': solo da uno specifico indirizzo IP.
  • '%': da qualsiasi host (utilizzare con estrema cautela!).
  • '192.168.1.%': da qualsiasi IP nell'intervallo 192.168.1.x.

Utilizzi sempre l'host più restrittivo possibile.

CREATE USER 'app_user'@'192.168.1.10' IDENTIFIED BY 'StrongPassword!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'192.168.1.10';
FLUSH PRIVILEGES;

Best practice di sicurezza

La protezione delle connessioni al database è un'attività continua. Ecco alcune best practice:

  • Principio del privilegio minimo: conceda agli utenti e alle applicazioni solo le autorizzazioni necessarie.
  • Password robuste: imponga password complesse e le cambi regolarmente.
  • Regole del firewall: utilizzi il firewall del server (UFW/firewalld) per limitare l'accesso alle porte del database (ad esempio, 5432 per PostgreSQL e 3306 per MySQL) ai soli IP attendibili.
  • Verifiche regolari: esamini periodicamente i log del database e le configurazioni di accesso.
  • Mantenga aggiornato il software: applichi tempestivamente le patch di sicurezza al server di database e al sistema operativo.

Verifichi le Sue conoscenze

Quali dei seguenti sono metodi validi per migliorare la sicurezza delle connessioni al database?

Riepilogo: proteggere i dati

In questa lezione abbiamo analizzato tecniche fondamentali per proteggere le connessioni al database:

  • SSL/TLS: crittografa i dati in transito, garantendone la riservatezza e l'integrità. Abbiamo visto come abilitarlo in PostgreSQL e MySQL e come i client possano connettersi in modo sicuro.
  • Limitazioni IP: limita chi può connettersi al database in base al proprio indirizzo di rete, utilizzando pg_hba.conf per PostgreSQL e le istruzioni GRANT per MySQL.
  • Best practice: abbiamo inoltre esaminato consigli generali di sicurezza, come l'utilizzo di password robuste e l'esecuzione di verifiche regolari.

Implementando queste misure, ridurrà significativamente il rischio di accessi non autorizzati e violazioni dei dati.

Domande Frequenti

La lezione «Protezione delle connessioni al database» è gratuita?

Sì — il testo completo di «Protezione delle connessioni al database» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Linux Server Deployment & SSH Mastery, passa a CoddyKit PRO. Il corso Linux Server Deployment & SSH Mastery include 4 lezioni in totale.

Cosa imparerò in «Protezione delle connessioni al database»?

Configuri connessioni sicure al database tramite SSL/TLS e limiti l'accesso in base agli indirizzi IP per una maggiore sicurezza. Eserciti Linux Server Deployment & SSH Mastery con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Linux Server Deployment & SSH Mastery?

Non è richiesta alcuna esperienza precedente. Linux Server Deployment & SSH Mastery su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Protezione delle connessioni al database»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Linux Server Deployment & SSH Mastery?

Sì. Ogni lezione Linux Server Deployment & SSH Mastery include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Installazione di PostgreSQL/MySQL
  2. Utenti del database e controllo degli accessi
  3. Protezione delle connessioni al database
  4. Strategie di backup e ripristino dei database
← Torna a Linux Server Deployment & SSH Mastery