sql >> Database teknologi >  >> RDS >> Mysql

Databasesikkerhed 101:Sikkerhed i Open Source-databaser

Datasikkerhed er et af de vigtigste aspekter ved administration af en database. Afhængigt af organisationsstrukturen skal du, hvis du administrerer produktionsdatabasen, overvåge for uautoriseret adgang og brug. Dette gælder også for den underliggende vært. I denne blog skal vi forklare sikkerhed i open source-databaser.

Generel sikkerhed

Efter installation af databasesoftwaren skal vi udføre nogle forhåndstjek for at undgå de mest almindelige sikkerhedsfejl.

De generelle retningslinjer er som følger:

  • Giv aldrig nogen root/admin adgang til andre! Dette er kritisk.

  • Find ud af, hvordan databaseadgangsprivilegiesystemet fungerer. Giv ikke flere privilegier end nødvendigt. Giv aldrig privilegier til alle værter.

  • Opbevar ikke klartekstadgangskoder i din database. I stedet for at bruge SHA2() eller en anden envejs-hash-funktion og gemme hash-værdien.

  • Brug ikke standardporte, og sørg for, at den valgte port ikke er tilgængelig fra en vært, der ikke er tillid til.

  • Placer open source-databasen bag en firewall. Dette beskytter dig mod mindst 50 % af alle typer udnyttelser i enhver software.

Adgangskontrol og kontostyring

En af databasens primære funktioner er at autentificere en bruger, der opretter forbindelse fra en given vært, og at knytte denne bruger med privilegier på en database. For at kontrollere, hvilke brugere der kan oprette forbindelse, kan hver konto tildeles autentificeringsoplysninger såsom en adgangskode.
 

Brugerroller 

En databaserolle er en samling af et vilkårligt antal privilegier, der kan tildeles en eller flere brugere. I moderne open source-databaser kommer størstedelen af ​​brugerne med foruddefinerede roller.

Adgangskodeadministration 

Adgang til databasen kræver, at deres brugere autentificerer sig selv med et brugernavn og en adgangskode. Databasen anvender den samme hash-funktion på den adgangskode, som brugeren indtastede, og sammenligner den med den hash, der er gemt i databasen. Hvis de begge matcher, gives tilladelse. Adgangskodens udløb er påkrævet for at alle databasebrugere kan ændre adgangskoder med jævne mellemrum. Og generering af tilfældig adgangskode er påkrævet for eksplicitte administratorspecificerede bogstavelige adgangskoder. En vigtig ting at overvåge er sporing af forkert adgangskode/godkendelsesfejl. Det anbefales at aktivere midlertidig kontolåsning efter for mange på hinanden følgende loginfejl med forkert adgangskode.

Håndtering af udløbne adgangskoder

Når adgangskoden er udløbet, afbryder databaseserveren en klientforbindelse med udløbet adgangskode.

Eksempel 
[[email protected] vagrant]# mysql -u severalnies -p
Password: ******
ERROR 1862 (HY000): Your password has expired. To log in you must
change it using a client that supports expired passwords.

 

Begrænsning af ressourcerne 

Begræns en klients brug af databaseserverressourcer ved at begrænse antallet af samtidige forbindelser, der kan oprettes af enhver brugerkonto. For eksempel kan vi begrænse antallet af forespørgsler, en bruger kan udføre pr. time eller antallet af gange, en bruger kan oprette forbindelse til serveren pr. time.

Krypterede forbindelser 

Databaser understøtter normalt krypterede forbindelser mellem klienter og serveren ved hjælp af nogle sikkerhedsprotokoller. Ved at bruge SSL krypterer det forbindelserne mellem klienter og serveren. Dette gør dataene til et ulæseligt format over netværkslaget og undgår netværksaflytning. Når vi aktiverer SSL på databasen, begynder den at understøtte krypterede forbindelser og tillader ikke ukrypterede forbindelser.

Sikkerhedskomponenter og plugins

Sikkerhedskomponenter integreres nemt med databasen. For eksempel indeholder mysql adskillige komponenter og plugins, der implementerer sikkerhedsfunktioner.

Authentication Plugins - Disse plugins er godkendelsesforsøg fra klienter på at oprette forbindelse til MySQL Serveren. Vi kan nemt integrere med vores databaseserver.

Adgangskode-plugin - Dette plugin kontrollerer, om den aktuelle adgangskode er stærk, og afviser adgangskoder, der anses for at være svage.

Nøglering plugin - Dette plugin krypterer tablespaces. Denne krypteringsteknik fungerer på basis af roterende nøglefiler. Her er et eksempel på hvordan man krypterer MySQL 8.0.

Revisionslog - Revision er processen med at overvåge og registrere den aktivitet, der sker på databaseserveren. Det bruges til at logge, hvem der gør hvad, f.eks. databasehandlinger af brugere, forbindelser eller mislykkede loginforsøg. Hvis du bruger en belastningsbalancer til at få adgang til databasen, skal du også overvåge det. Som standard er revisionslogfilerne gemt i mysql-datamappe.

Eksempellogfiler 
20210306 02:30:06,centos14,root,localhost,519,1832,QUERY,,'select sleep(5)',0
20210306 02:30:08,centos14,s9smysqlchk,localhost,571,0,DISCONNECT,,,0
20210306 02:30:09,centos14,root,localhost,519,1867,QUERY,,'show schemas',0

Hvis du vil gemme revisionslogfilerne forskellige steder, kan du tilføje denne parameter i din konfigurationsfil "server_audit_file_path".

Logovervågning - Logovervågning giver operationsteamet et større niveau af synlighed i databasemiljøet, som består af databaseforekomsterne, men også belastningsbalancerne. Det hjælper med at identificere anomalier, hvornår disse anomalier opstår og hyppigheden, hvormed de opstår.

Adgangskodevalideringsplugin

Adgangskoden er som et ord, tal og en streng af tegn. På database- og serversiden var brugernavnet og adgangskoden nødvendige for en bestemt adgang. Hvis f.eks. adgangskoden er angivet som en klartekstværdi, kontrollerer plugin'et validate_password adgangskoden mod den aktuelle adgangskodepolitik, og den afviser adgangskoden, hvis den er svag.

validate_password_policy har tre værdier LOW, MEDIUM eller STRONG. Værdien af ​​LOW kontrollerer kun adgangskodelængden, MEDIUM-politikken tilføjer nogle betingelser, og STRONG-politikken tilføjer betingelsen om, at adgangskodeunderstrenge, der består af 4 eller flere tegn, ikke må matche ord i en ordbogsfil, der kan specificeres ved at ændre variablen validate_password_dictionary_file.

LDAP-plugin

LDAP-plugin gør det muligt for databaseserveren at acceptere forbindelser fra brugere, der er defineret i LDAP-mapper. I LDAP-godkendelse kommunikerer plugins på klientsiden og serversiden adgangskoden som klartekst. En sikker forbindelse mellem klienten og serveren anbefales for at forhindre adgangskodeeksponering. Hvis klientbrugernavnet og værtsnavnet ikke matchede, vil databasen afvise forbindelsen.

 LDAP-konfigurationen er meget ligetil i ClusterControl. I dette indlæg forklarede vi konfigurationstrinnene ved hjælp af ClusterControl.

Sikring af databasesikkerhedskopier 

Datasikkerhedskopier er vigtige, når det kommer til at beskytte dine data. Det er endnu vigtigere at sikre, at dine sikkerhedskopier holdes sikre og tilgængelige for hurtigere gendannelse. ClusterControl giver omfattende support til backup-administrationsprocessen, herunder kryptering af backup-filerne ved hjælp af AES-256-krypteringsalgoritmen, før de sendes offsite.

VPN-adgang til jump-værtsnetværket 

For at få adgang til den private netværks open source-database fra lokalt er den bedste metode at bruge VPN. VPN giver brugere privatliv og sikkerhed for at opbygge en privat netværksforbindelse på tværs af et offentligt netværk. En jump-vært er en mellemvært eller en SSH-gateway til at få adgang til eksterne netværksservere. Jump-serveren fungerer som en mellemmand til at forbinde begge ender, hvilket gør den til en "hop"-vært for at få adgang til den anden side. Dette er en af ​​de populære måder at sikre serveren på fra omverdenen. Vi kan bruge SSH-tunneling til at få adgang til et fjernnetværk på en sikker måde, hvilket gør en mindre indsats end at konfigurere en VPN-server.

Administration af databaseadgang via Jump-vært

For at få adgang til produktionsdatabaseservere til mere sikker kræves en dedikeret jump-server. Denne dedikerede jump-server giver adgang til et privat netværk fra et eksternt eller offentligt netværk, såsom internettet. Det giver en trindelt tilgang for enhver bruger til at nå dit private netværk, det minimerer chancerne for et potentielt serverangreb.

Hvordan kan vi opnå dette?

Den bedste praksis er at konfigurere en jump-server til at oprette forbindelse til dine databaser fra en Linux-maskine, selvom DB-instansen er på et privat netværk. Efter oprettelse af Jump-værten skal du følge nedenstående retningslinjer,

  • Begræns offentligt tilgængelig på dine databaser med private undernet.

  • Begræns internetgatewayen i rutetabeller.

  • Opret en ny VPC eller tilføj din jump-vært til den samme VPC som din databaseinstans. Tilføj derefter en internetgateway til din jump-server med offentlige undernet.

  • Tillad kun specifikke databaseporte til påkrævede IP'er.

Så kan vi oprette SSH-tunneling for at få adgang til en databaseserver på en sikker måde.

SELinux

SELinux er et sæt kernemodifikationer og brugerrumsværktøjer, og det har nogle politikmoduler. Politikmodulerne er SELinux-kontekster til at definere regler for, hvordan processer, filer, porte og andre systemobjekter interagerer med hinanden. Interaktion mellem systemobjekter er kun tilladt, hvis en politikregel tillader det.

Systembrugere vil stort set være uvidende om SELinux. Kun systemadministratorer skal overveje, hvor streng en politik de skal implementere for deres servermiljø. Denne detalje giver SELinux-kernen fuldstændig, granulær kontrol over hele systemet.


  1. Hvordan kan jeg implementere et .NET-program, der bruger ODAC uden at installere hele komponenten til brugeren?

  2. Laravel Eloquent vælg alle rækker med max created_at

  3. MySQL MariaDB – Forespørgsel ved hjælp af Temp-tabel

  4. Sådan opdaterer du en kolonne baseret på et filter af en anden kolonne