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.confdi PostgreSQL o le istruzioniGRANTdi 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.confper PostgreSQL e le istruzioniGRANTper 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
- Installazione di PostgreSQL/MySQL
- Utenti del database e controllo degli accessi
- Protezione delle connessioni al database
- Strategie di backup e ripristino dei database