Zabezpečení dat je jedním z nejdůležitějších aspektů správy databáze. V závislosti na organizační struktuře, pokud spravujete produkční databázi, musíte sledovat neoprávněný přístup a použití. To platí také pro základního hostitele. V tomto blogu vysvětlíme zabezpečení v open source databázích.
Obecné zabezpečení
Po instalaci databázového softwaru musíme provést několik předběžných kontrol, abychom se vyhnuli nejčastějším bezpečnostním chybám.
Obecné pokyny jsou následující:
-
Nikdy nedávejte nikomu root/admin přístup k ostatním! To je kritické.
-
Zjistěte, jak funguje systém oprávnění pro přístup k databázi. Neudělujte více oprávnění, než je nutné. Nikdy neudělujte oprávnění všem hostitelům.
-
Neukládejte hesla ve formě čistého textu do databáze. Místo použití SHA2() nebo nějaké jiné jednosměrné hašovací funkce a uložení hodnoty hash.
-
Nepoužívejte výchozí porty a ujistěte se, že zvolený port není přístupný z nedůvěryhodného hostitele.
-
Umístěte databázi s otevřeným zdrojovým kódem za firewall. To vás ochrání před nejméně 50 % všech typů zneužití v jakémkoli softwaru.
Řízení přístupu a správa účtu
Jednou z primárních funkcí databáze je ověřit uživatele, který se připojuje z daného hostitele, a přiřadit tomuto uživateli oprávnění k databázi. Ke kontrole toho, kteří uživatelé se mohou připojit, lze každému účtu přiřadit ověřovací údaje, jako je heslo.
Uživatelské role
Databázová role je kolekce libovolného počtu oprávnění, která lze přiřadit jednomu nebo více uživatelům. V moderních open source databázích přichází většina uživatelů s předdefinovanými rolemi.
Správa hesel
Přístup k databázi vyžaduje, aby se jejich uživatelé autentizovali pomocí uživatelského jména a hesla. Databáze aplikuje stejnou hashovací funkci na heslo, které uživatel zadal, a porovná jej s hashem uloženým v databázi. Pokud se oba shodují, je uděleno povolení. Vypršení platnosti hesla je vyžadováno, aby všichni uživatelé databáze pravidelně měnili hesla. A náhodné generování hesel je vyžadováno pro doslovná hesla specifikovaná administrátorem. Jednou z důležitých věcí, které je třeba sledovat, je sledování chybného hesla/selhání ověření. Doporučuje se povolit dočasné uzamčení účtu po příliš mnoha po sobě jdoucích chybách přihlášení s nesprávným heslem.
Zpracování hesel, jejichž platnost vypršela
Jakmile vyprší platnost hesla, databázový server odpojí připojení klienta s vypršenou platností hesla.
Příklad
[[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.
Omezení zdrojů
Omezte klientem použití prostředků databázového serveru omezením počtu současných připojení, která lze vytvořit libovolným uživatelským účtem. Můžeme například omezit počet dotazů, které může uživatel provést za hodinu nebo kolikrát se může uživatel připojit k serveru za hodinu.
Šifrovaná připojení
Databáze obvykle podporují šifrovaná spojení mezi klienty a serverem pomocí některých bezpečnostních protokolů. Pomocí SSL zašifruje spojení mezi klienty a serverem. Tím se data přes síťovou vrstvu změní na nečitelný formát a zabrání se odposlechu sítě. Jakmile v databázi povolíme SSL, začne podporovat šifrovaná připojení a nepovolí nešifrovaná připojení.
Bezpečnostní komponenty a pluginy
Bezpečnostní komponenty lze snadno integrovat do databáze. Například mysql obsahuje několik komponent a zásuvných modulů, které implementují bezpečnostní funkce.
Autentizační pluginy – Tyto pluginy ověřují pokusy klientů o připojení k serveru MySQL. Můžeme se snadno integrovat s naším databázovým serverem.
Plugin hesla – Tento plugin kontroluje, zda je aktuální heslo silné, a odmítá všechna hesla, která jsou považována za slabá.
Plugin Keyring – Tento plugin šifruje tabulkové prostory. Tato technika šifrování funguje na základě rotujících souborů klíčů. Zde je příklad, jak šifrovat MySQL 8.0.
Audit log - Audit je proces sledování a zaznamenávání aktivity probíhající na databázovém serveru. Slouží k logování, kdo co dělá, např. databázové operace uživatelů, připojení nebo neúspěšné pokusy o přihlášení. Pokud pro přístup k databázi používáte nástroj pro vyrovnávání zatížení, musíte to také sledovat. Ve výchozím nastavení jsou soubory protokolu auditu uloženy v datovém adresáři mysql.
Ukázkové protokoly
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
Pokud chcete soubory protokolu auditu ukládat do různých umístění, můžete tento parametr přidat do konfiguračního souboru „server_audit_file_path“.
Monitorování protokolů – Monitorování protokolů poskytuje operačnímu týmu větší přehled o prostředí databáze, které se skládá z instancí databáze, ale také z vyvažovačů zatížení. Pomáhá identifikovat anomálie, kdy se tyto anomálie vyskytují a jak často se vyskytují.
Plugin pro ověření hesla
Heslo je jako slova, čísla a řetězec znaků. Na straně databáze a serveru bylo pro určitý přístup potřeba uživatelské jméno a heslo. Pokud je například heslo zadáno jako hodnota čistého textu, plugin validate_password zkontroluje heslo podle aktuálních zásad hesel a odmítne heslo, pokud je slabé.
Zásady validate_password_policy mají tři hodnoty NÍZKÁ, STŘEDNÍ nebo SILNÁ. Hodnota LOW kontroluje pouze délku hesla, zásada MEDIUM přidává některé podmínky a zásada STRONG přidává podmínku, že podřetězce hesel, které se skládají ze 4 nebo více znaků, se nesmějí shodovat se slovy v souboru slovníku, který lze zadat úpravou proměnné validate_password_dictionary_file.
Plugin LDAP
Zásuvný modul LDAP umožňuje databázovému serveru přijímat připojení od uživatelů definovaných v adresářích LDAP. Při ověřování LDAP sdělují moduly plug-in na straně klienta a na straně serveru heslo jako prostý text. Doporučuje se zabezpečené připojení mezi klientem a serverem, aby se zabránilo odhalení hesla. Pokud se uživatelské jméno klienta a název hostitele neshodují, databáze odmítne připojení.
Konfigurace LDAP je v ClusterControl velmi přímočará. V tomto příspěvku jsme vysvětlili kroky konfigurace pomocí ClusterControl.
Zabezpečení záloh databáze
Zálohování dat je důležité, pokud jde o ochranu vašich dat. Ještě důležitější je zajistit, aby vaše zálohy byly bezpečné a dostupné pro rychlejší obnovu. ClusterControl poskytuje komplexní podporu pro proces správy zálohování, včetně šifrování záložních souborů pomocí šifrovacího algoritmu AES-256 před jejich odesláním mimo pracoviště.
Přístup VPN k hostitelské síti skoku
Pro přístup k privátní open source databázi z místní sítě je nejlepší použít VPN. VPN poskytuje uživatelům soukromí a zabezpečení pro vytvoření privátního síťového připojení přes veřejnou síť. Skokový hostitel je zprostředkující hostitel nebo brána SSH pro přístup ke vzdáleným síťovým serverům. Jump server funguje jako prostředník pro připojení obou konců, čímž se stává hostitelem "skoku" pro přístup na druhou stranu. Toto je jeden z oblíbených způsobů, jak zabezpečit server před vnějším světem. Můžeme použít tunelování SSH pro bezpečný přístup ke vzdálené síti, což vynakládá méně úsilí než konfigurace serveru VPN.
Správa přístupu k databázi prostřednictvím hostitele skoku
Pro větší zabezpečení přístupu k produkčním databázovým serverům je vyžadován vyhrazený skokový server. Tento vyhrazený skokový server poskytuje přístup k privátní síti z externí nebo veřejné sítě, jako je internet. Poskytuje každému uživateli víceúrovňový přístup, jak dosáhnout vaší privátní sítě, a minimalizuje šance na potenciální útok na server.
Jak toho můžeme dosáhnout?
Osvědčeným postupem je nastavit skokový server pro připojení k databázím z počítače se systémem Linux, i když je instance DB v privátní síti. Po vytvoření hostitele Jump postupujte podle níže uvedených pokynů
-
Omezte veřejný přístup ve svých databázích pomocí soukromých podsítí.
-
Omezit internetovou bránu v tabulkách směrování.
-
Vytvořte nové VPC nebo přidejte hostitele skoku do stejného VPC, jako je vaše instance databáze. Poté přidejte internetovou bránu na váš skokový server s veřejnými podsítěmi.
-
Povolit pouze konkrétní databázové porty na požadované IP adresy.
Potom můžeme vytvořit tunelování SSH pro bezpečný přístup k databázovému serveru.
SELinux
SELinux je sada úprav jádra a nástrojů uživatelského prostoru a obsahuje některé moduly zásad. Moduly zásad jsou kontexty SELinuxu, které definují pravidla pro vzájemnou interakci procesů, souborů, portů a dalších systémových objektů. Interakce mezi systémovými objekty je povolena pouze v případě, že to dovoluje pravidlo zásad.
Uživatelé systému nebudou o SELinuxu z velké části vědět. Pouze správci systému musí zvážit, jak přísnou politiku implementovat pro jejich serverové prostředí. Tento detail dává jádru SELinux úplnou, granulární kontrolu nad celým systémem.