sql >> Databasteknik >  >> RDS >> Mysql

Databassäkerhet 101:Säkerhet i databaser med öppen källkod

Datasäkerhet är en av de viktigaste aspekterna av att administrera en databas. Beroende på organisationsstrukturen, om du hanterar produktionsdatabasen måste du övervaka för obehörig åtkomst och användning. Detta gäller även den underliggande värden. I den här bloggen kommer vi att förklara säkerhet i databaser med öppen källkod.

Allmän säkerhet

Efter att ha installerat databasprogramvaran måste vi göra några förkontroller för att undvika de vanligaste säkerhetsmisstagen.

De allmänna riktlinjerna är följande:

  • Ge aldrig någon root/admin åtkomst till andra! Detta är avgörande.

  • Läs om hur behörighetssystemet för databasen fungerar. Ge inte fler privilegier än nödvändigt. Ge aldrig privilegier till alla värdar.

  • Lagra inte klartextlösenord i din databas. Istället för att använda SHA2() eller någon annan enkelriktad hashfunktion och lagra hashvärdet.

  • Använd inte standardportar och se till att den valda porten inte är tillgänglig från en opålitlig värd.

  • Placera databasen med öppen källkod bakom en brandvägg. Detta skyddar dig från minst 50 % av alla typer av utnyttjande i någon programvara.

Åtkomstkontroll och kontohantering

En av databasens primära funktioner är att autentisera en användare som ansluter från en given värd och att associera den användaren med privilegier på en databas. För att styra vilka användare som kan ansluta kan varje konto tilldelas autentiseringsuppgifter som ett lösenord.
 

Användarroller 

En databasroll är en samling av valfritt antal privilegier som kan tilldelas en eller flera användare. I moderna databaser med öppen källkod har majoriteten av användarna fördefinierade roller.

Lösenordshantering 

För att komma åt databasen måste deras användare autentisera sig med ett användarnamn och lösenord. Databasen tillämpar samma hashfunktion på lösenordet som användaren angav och jämför det med hash som lagras i databasen. Om de båda matchar, beviljas tillstånd. Lösenordets utgångsdatum krävs för att alla databasanvändare ska kunna byta lösenord med jämna mellanrum. Och generering av slumpmässiga lösenord krävs för explicit administratörsspecificerade bokstavliga lösenord. En viktig sak att övervaka är spårning av fel lösenord/autentiseringsfel, det rekommenderas att aktivera tillfällig kontolåsning efter för många på varandra följande inloggningsfel med felaktigt lösenord.

Hantering av utgångna lösenord

När lösenordet har upphört att gälla kopplar databasservern bort en klientanslutning med utgånget lösenord.

Exempel 
[[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änsa resurserna 

Begränsa en klients användning av databasserverresurser genom att begränsa antalet samtidiga anslutningar som kan göras av vilket användarkonto som helst. Vi kan till exempel begränsa antalet frågor en användare kan utföra per timme eller antalet gånger en användare kan ansluta till servern per timme.

Krypterade anslutningar 

Databaser stöder vanligtvis krypterade anslutningar mellan klienter och servern med vissa säkerhetsprotokoll. Med hjälp av SSL kommer den att kryptera anslutningarna mellan klienter och servern. Detta förvandlar data till ett oläsbart format över nätverkslagret och undviker nätverksavlyssning. När vi aktiverar SSL på databasen, börjar den stödja krypterade anslutningar och tillåter inte okrypterade anslutningar.

Säkerhetskomponenter och plugins

Säkerhetskomponenter integreras enkelt med databasen. Till exempel innehåller mysql flera komponenter och plugins som implementerar säkerhetsfunktioner.

Autentiseringsinsticksprogram - Dessa insticksprogram är autentiseringsförsök av klienter att ansluta till MySQL-servern. Vi kan enkelt integrera med vår databasserver.

Lösenordsplugin – Denna plugin kontrollerar om det aktuella lösenordet är starkt och avvisar alla lösenord som anses vara svaga.

Nyckelring-plugin - Denna plugin krypterar tabellutrymmen. Denna krypteringsteknik fungerar på basis av roterande nyckelfiler. Här är ett exempel på hur man krypterar MySQL 8.0.

Revisionslogg - Granskning är processen att övervaka och registrera aktiviteten som sker på databasservern. Den används för att logga vem som gör vad, t.ex. databasoperationer av användare, anslutningar eller misslyckade inloggningsförsök. Om du använder en lastbalanserare för att komma åt databasen måste du också övervaka det. Som standard lagras revisionsloggfilerna i mysql-datakatalogen.

Exempelloggar 
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

Om du vill lagra granskningsloggfilerna på olika platser kan du lägga till denna parameter i din konfigurationsfil "server_audit_file_path".

Loggövervakning - Loggövervakning ger operationsteamet större insyn i databasmiljön, som består av databasinstanserna men även lastbalanserare. Det hjälper till att identifiera avvikelser, när dessa avvikelser uppstår och med vilken frekvens de uppstår.

Plugin för lösenordsvalidering

Lösenordet är som ord, siffror och teckensträng. På databas- och serversidan behövdes användarnamnet och lösenordet för viss åtkomst. Om lösenordet till exempel anges som ett klartextvärde kontrollerar plugin-programmet validate_password lösenordet mot den nuvarande lösenordspolicyn och avvisar lösenordet om det är svagt.

validate_password_policyn har tre värden LOW, MEDIUM eller STRONG. Värdet på LOW kontrollerar endast lösenordslängden, MEDIUM-policyn lägger till vissa villkor och STRONG-policyn lägger till villkoret att lösenordsdelsträngar som består av 4 eller fler tecken inte får matcha ord i en ordboksfil som kan specificeras genom att ändra variabeln validate_password_dictionary_file.

LDAP-plugin

LDAP-plugin gör att databasservern kan acceptera anslutningar från användare som definierats i LDAP-kataloger. I LDAP-autentisering kommunicerar insticksprogram på klientsidan och serversidan lösenordet som klartext. En säker anslutning mellan klienten och servern rekommenderas för att förhindra lösenordsexponering. Om klientens användarnamn och värdnamn inte matchade, kommer databasen att avvisa anslutningen.

 LDAP-konfigurationen är väldigt enkel i ClusterControl. I det här inlägget förklarade vi konfigurationsstegen med ClusterControl.

Säkra databassäkerhetskopior 

Datasäkerhetskopior är viktiga när det gäller att skydda dina data. Det är ännu viktigare att se till att dina säkerhetskopior hålls säkra och tillgängliga för snabbare återställning. ClusterControl tillhandahåller omfattande stöd för säkerhetskopieringsprocessen, inklusive kryptering av säkerhetskopiorna med AES-256-krypteringsalgoritmen innan de skickas utanför platsen.

VPN-åtkomst till jump-värdnätverket 

För att komma åt det privata nätverkets öppen källkodsdatabas från lokalt är den bästa metoden att använda VPN. VPN ger integritet och säkerhet för användare att bygga en privat nätverksanslutning över ett offentligt nätverk. En hoppvärd är en mellanliggande värd eller en SSH-gateway för åtkomst till fjärrnätverksservrar. Jump-servern fungerar som en mellanhand för att ansluta båda ändarna, vilket gör den till en "hopp"-värd för åtkomst till den andra sidan. Detta är ett av de populära sätten att säkra servern från omvärlden. Vi kan använda SSH-tunnling för att komma åt ett fjärrnätverk på ett säkert sätt, vilket gör mindre ansträngning än att konfigurera en VPN-server.

Databasåtkomsthantering via Jump-värd

För att komma åt produktionsdatabasservrar till säkrare, krävs en dedikerad hoppserver. Denna dedikerade hoppserver ger åtkomst till ett privat nätverk från ett externt eller offentligt nätverk, såsom internet. Det ger en nivånivå för alla användare att nå ditt privata nätverk, det minimerar risken för en potentiell serverattack.

Hur kan vi uppnå detta?

Den bästa praxis är att ställa in en hoppserver för att ansluta till dina databaser från en Linux-maskin, även om DB-instansen är på ett privat nätverk. Följ riktlinjerna nedan efter att ha skapat Jump-värden,

  • Begränsa offentligt tillgängliga på dina databaser med privata undernät.

  • Begränsa internetgatewayen i rutttabeller.

  • Skapa en ny VPC eller lägg till din hoppvärd till samma VPC som din databasinstans. Lägg sedan till en internetgateway till din hoppserver med offentliga undernät.

  • Tillåt endast specifika databasportar till obligatoriska IP-adresser.

Då kan vi skapa SSH-tunnling för att komma åt en databasserver på ett säkert sätt.

SELinux

SELinux är en uppsättning kärnmodifieringar och verktyg för användarutrymme och den har några policymoduler. Policymodulerna är SELinux-kontexter för att definiera regler för hur processer, filer, portar och andra systemobjekt interagerar med varandra. Interaktion mellan systemobjekt är endast tillåten om en policyregel tillåter.

Systemanvändare kommer till stor del att vara omedvetna om SELinux. Endast systemadministratörer behöver överväga hur strikt en policy de ska implementera för sin servermiljö. Denna detalj ger SELinux-kärnan fullständig, granulär kontroll över hela systemet.


  1. 7 sätt att returnera alla tabeller med en primärnyckel i SQL Server

  2. Beräknar värde med hjälp av föregående värde på en rad i T-SQL

  3. Återkomsten av XFS på Linux

  4. SQLite datatyper