Linux-servers implementeren en SSH beheersen · Les

Databaseverbindingen beveiligen

Configureer beveiligde verbindingen met uw database via SSL/TLS en beperk de toegang op basis van IP-adressen voor extra beveiliging.

Les 3 van 412 stappen

Databaseverbindingen beveiligen is een gratis Linux-servers implementeren en SSH beheersen-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Linux-servers implementeren en SSH beheersen. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Linux-servers implementeren en SSH beheersen bevat in totaal 4 lessen.

Waarom beveiligde databaseverbindingen?

Wanneer je toepassingen verbinding maken met een database, worden er vaak gevoelige gegevens over het netwerk verzonden. Zonder de juiste beveiliging kunnen deze gegevens worden onderschept of gemanipuleerd.

  • Vertrouwelijkheid: voorkomt dat onbevoegden gegevens bekijken.
  • Integriteit: zorgt ervoor dat gegevens tijdens de overdracht niet worden gewijzigd.
  • Authenticatie: verifieert de identiteit van zowel client als server.

Deze les richt zich op twee belangrijke methoden: SSL/TLS-versleuteling en IP-gebaseerde toegangsbeperkingen.

SSL/TLS voor databases begrijpen

SSL/TLS (Secure Sockets Layer/Transport Layer Security) is de standaardtechnologie voor het tot stand brengen van een versleutelde verbinding tussen een webserver en een client, of in ons geval tussen een databaseserver en een client.

  • De technologie versleutelt alle uitgewisselde gegevens en beschermt ze tegen afluisteren.
  • Ze gebruikt digitale certificaten om de identiteit van de server en optioneel die van de client te verifiëren.
  • Ze is essentieel voor het beschermen van wachtwoorden, financiële gegevens en persoonlijke informatie tijdens de overdracht.

SSL/TLS-certificaten genereren

Om SSL/TLS te gebruiken, heeft je databaseserver een digitaal certificaat en een privésleutel nodig. Hiermee wordt de identiteit van de server aangetoond.

  • Zelfondertekende certificaten: het eenvoudigst aan te maken voor tests of interne netwerken, maar standaard niet vertrouwd.
  • Door een CA ondertekende certificaten: uitgegeven door een certificaatautoriteit (CA) en wereldwijd vertrouwd, dus ideaal voor productieomgevingen.

Voor deze les gaan we ervan uit dat je een servercertificaat (server.crt) en een privésleutel (server.key) gereed hebt.

PostgreSQL: SSL inschakelen

Om SSL in PostgreSQL in te schakelen, moet je het bestand postgresql.conf bewerken. Hiermee geef je de server opdracht om naar beveiligde verbindingen te luisteren en waar de certificaten te vinden zijn.

Belangrijke parameters:

  • ssl = on: schakelt SSL in.
  • ssl_cert_file: pad naar je servercertificaat.
  • ssl_key_file: pad naar de privésleutel van je server.

Start PostgreSQL opnieuw nadat je wijzigingen hebt aangebracht.

# 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: SSL/TLS inschakelen

Voor MySQL configureer je SSL/TLS in het bestand my.cnf (of my.ini in Windows), meestal in de sectie [mysqld].

Je geeft de paden op naar het servercertificaat, de privésleutel en eventueel een certificaat van een Certificate Authority (CA) als je dat gebruikt om clientcertificaten te verifiëren.

Start de MySQL-service na het wijzigen opnieuw op, zodat de wijzigingen van kracht worden.

# 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!

Clientverbinding met SSL/TLS

Als de server is geconfigureerd, moeten clients worden ingesteld om SSL/TLS te gebruiken bij het verbinden. Hiervoor geef je vaak SSL-opties op in de verbindingsreeks of de opdracht.

Hier zie je een voorbeeld met de psql-client voor PostgreSQL, waarbij de SSL-modus expliciet wordt vereist:

  • sslmode=require: Dwingt een SSL-verbinding af.
  • sslrootcert: Pad naar het CA-certificaat voor serververificatie.
psql "host=your_db_host user=your_user dbname=your_db \
  sslmode=require sslrootcert=/path/to/ca.crt"

Toegang beperken op basis van IP-adres

Naast versleuteling is het beperken van toegang op basis van het IP-adres van de client een fundamentele beveiligingsmaatregel. Zo kunnen alleen vertrouwde machines überhaupt proberen verbinding te maken met je database.

Je kunt dit configureren:

  • Op het niveau van de databaseserver (bijvoorbeeld in PostgreSQL met pg_hba.conf of in MySQL met GRANT-instructies).
  • Met een firewall (zoals UFW of firewalld) om verkeer vanaf onbevoegde IP-adressen naar de databasepoort te blokkeren.

Door beide methoden te combineren, creëer je een gelaagde beveiliging.

PostgreSQL: IP-beperkingen met pg_hba.conf

PostgreSQL gebruikt het bestand pg_hba.conf voor hostgebaseerde authenticatie. Elke regel specificeert verbindingstypen, databases, gebruikers en toegestane IP-adressen.

Veelgebruikte velden:

  • TYPE: host (TCP/IP), local (Unix-socket).
  • DATABASE: all, specifieke databasenaam.
  • GEBRUIKER: all, specifieke gebruiker.
  • ADRES: IP-bereik (bijvoorbeeld 192.168.1.0/24) of één IP-adres.
  • METHODE: scram-sha-256, md5, peer, enzovoort.

Vergeet niet PostgreSQL na het bewerken opnieuw op te starten.

# 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: IP-beperkingen met GRANT

In MySQL beperk je de toegang van gebruikers door de host op te geven waarvan ze verbinding mogen maken wanneer je een gebruiker aanmaakt of wijzigt met de instructie GRANT.

De syntaxis 'user'@'host' is hierbij essentieel:

  • 'localhost': Alleen vanaf de server zelf.
  • '192.168.1.100': Alleen vanaf een specifiek IP-adres.
  • '%': Vanaf elke host (gebruik dit uiterst voorzichtig!).
  • '192.168.1.%': Vanaf elk IP-adres binnen het bereik 192.168.1.x.

Gebruik altijd de meest beperkende host die mogelijk is.

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;

Aanbevolen beveiligingspraktijken

Het beveiligen van databaseverbindingen is een doorlopend proces. Hier volgen enkele aanbevolen praktijken:

  • Minimale rechten: Geef gebruikers en toepassingen alleen de benodigde machtigingen.
  • Sterke wachtwoorden: Stel complexe wachtwoorden verplicht en wijzig ze regelmatig.
  • Firewallregels: Gebruik de firewall van je server (UFW/firewalld) om de toegang tot databasepoorten (bijvoorbeeld 5432 voor PostgreSQL en 3306 voor MySQL) te beperken tot alleen vertrouwde IP-adressen.
  • Regelmatige controles: Controleer periodiek de databaselogboeken en toegangsconfiguraties.
  • Software bijwerken: Installeer beveiligingsupdates voor je databaseserver en besturingssysteem zo snel mogelijk.

Test je kennis

Welke van de volgende methoden zijn geldig om de beveiliging van databaseverbindingen te verbeteren?

Samenvatting: beveilig je gegevens

In deze les hebben we belangrijke technieken voor het beveiligen van je databaseverbindingen onderzocht:

  • SSL/TLS: Versleutelt gegevens tijdens de overdracht en zorgt zo voor vertrouwelijkheid en integriteit. We hebben gezien hoe je dit inschakelt in PostgreSQL en MySQL en hoe clients veilig verbinding maken.
  • IP-beperkingen: Beperken wie verbinding kan maken met je database op basis van het netwerkadres, met pg_hba.conf voor PostgreSQL en GRANT-instructies voor MySQL.
  • Aanbevolen praktijken: We hebben ook algemene beveiligingstips behandeld, zoals het gebruik van sterke wachtwoorden en regelmatige controles.

Door deze maatregelen toe te passen, verklein je het risico op onbevoegde toegang en datalekken aanzienlijk.

Gratis beginnen

Leer Linux-servers implementeren en SSH beheersen met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Databaseverbindingen beveiligen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Linux-servers implementeren en SSH beheersen, waaronder “Databaseverbindingen beveiligen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Linux-servers implementeren en SSH beheersen bevat in totaal 4 lessen.

Wat leer ik in “Databaseverbindingen beveiligen”?

Configureer beveiligde verbindingen met uw database via SSL/TLS en beperk de toegang op basis van IP-adressen voor extra beveiliging. Je oefent met Linux-servers implementeren en SSH beheersen door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Linux-servers implementeren en SSH beheersen te beginnen?

Ervaring vooraf is niet nodig. Linux-servers implementeren en SSH beheersen op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Databaseverbindingen beveiligen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Linux-servers implementeren en SSH beheersen?

Ja. Elke les over Linux-servers implementeren en SSH beheersen bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. PostgreSQL/MySQL installeren
  2. Databasegebruikers en toegangsbeheer
  3. Databaseverbindingen beveiligen
  4. Strategieën voor databaseback-ups en herstel
← Terug naar Linux-servers implementeren en SSH beheersen