Teeme andmebaasiühendused turvalisemaks

Ingmar Aasoja
Jaga:

Teatavasti on SQL andmebaaside kasutajatel vaikeseadistustes lubatud ühenduda ainult lokaalselt, mis tagab selle, et andmed ei liigu üle võõraste võrkude. Zones liiguvad andmed niisamuti vaikeseadistuses üle andmebaasi- ja veebiserveri vahelise sisevõrgu ning nõnda pole neil võimalik kuidagi “jooksu panna”. Kui aga kasutaja soovib ühenduda SQL baasiga väljastpoolt, siis on soovitav aktiveerida selleks turvalist ühendust võimaldav TLS protokoll, mis krüpteerib kogu andmeliikluse klientrakenduse ja andmebaasi serveri vahel.

Zone klientidel on juba pikemat aega olnud võimalus seadistada oma rakendusi kasutama turvalist TLS ühendust. Kuivõrd andmebaasides on enamasti selline info, mis ei tohi lekkida ning selles seas ka palju tundlikke isikuandmeid, siis tuleb erilist tähelepanu pöörata just nende andmete käitlemise turvalisusele. Seetõttu saab ka Zones nüüd teha krüpteeritud ühenduse tingimuse kasutajatele kohustuslikuks. Allpool sellest pisut lähemalt.

Milleks mulle krüpteeritud SQL ühendus?

Reeglina peab turvalist TLS ühendust kasutama väliste ühenduste puhul, eeskätt olukorras, kui rakendus asub väljaspool Zone süsteemi. Näiteks siis, kui SQL serveriga on ühendatud mõni väline teenus, mis asub mõne teise teenusepakkuja pilves. Sellises olukorras pruugib piisata rakenduse administraatori teadmisest, et eelnevalt tuleb seadistada SSL ühendus. Küll aga tuleb sääraste väliste ühenduste puhul siiski ette olukordi, kus ühekordne seadistamine turvalist ühendust ei taga.

Sellistel puhkudel peab eriti tähelepanelik olema eeskätt siis, kui ligipääs on antud mõnele kasutajale, kes ühendub andmebaasiga nö desktop-rakenduse abil. Näiteks arendajate seas levinud Sequel Pro‘ga või pisut vähemtuntud Beekeeper Studio‘ga, mille kasutamisel tuleb kindlasti eelnevalt veenduda, et ühendus oleks TLS protokolliga krüpteeritud. Kuid mõistagi võib ette tulla olukordi, kus administraatoril puudub selle üle kontroll. Just selle välistamiseks ongi nüüd meil võimalik andmebaasi kasutajale määrata, et baasile pääseb ligi ainult üle TLS ühenduste. Selleks tuleb siseneda andmebaasi kasutaja haldusesse ja seadistada seal väärtus “Nõua kasutajalt TLS ühendust”.

MIlleks aga seda ikkagi vaja on? Mõnikord teeb tarkvara oma tööd nõnda, et sellel on vaja küsida arendajalt küsimusi stiilis “Ole hea, vaata järele, mis selle tellimusega andmebaasis toimub?”. Tänapäeval laialt levinud kaugtööd tehes võib arendaja andmebaasi vaadata kusagil kohvikus ning selle avalikus wifi’s. Kui sellises olukorras TLS ühendust ei kasutata, siis võib julgelt öelda, et tellimustega seotud isikuandmed on kolmandate isikute käest põhimõtteliselt läbi käinud.

Väliste ühenduste korral tuleb tähelepanu pöörata kindlasti ka sellele, et ühendusteed oleksid rangelt piiratud vaid lubatud IP-aadressidele. Seda tuleb niisamuti Minu Zone haldusliideses konkreetse andmebaasi kasutaja sätete juures seadistada. Oluline on teada, et krüpteeritud ühendust saab kasutada alates TLS protokolli versioonist 1.2. Juhime siiski tähelepanu sellele, et see võib takistuseks kujuneda vanematele rakendustele ja andmebaasiklientidele. Sestap tasub ka need võimaluse korral kaasajastada.

TLS kasutamine klientrakenduses

Desktop– ehk töölauaklientidel tuleb ühenduse seadistamisel paigutada õigesse kastikesse lithsalt vastav linnuke. Serverirakenduse seadistamiseks toome aga allpool mõned näited.

WordPress rakenduse puhul piisab faili wp-config.php ühe rea lisamisest:

define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );Code language: JavaScript (javascript)

PHP skriptis PDO ühendust kasutades tuleb määrata MYSQL_ATTR_SSL_CA väärtus. Zone serveris näiteks:

try {
    $db = new PDO(
        'mysql:host=dXXX.mysql.zonevs.eu;dbname=$database;port=3306',
        '{database_username}',
        '{database_password}',
        [
            PDO::MYSQL_ATTR_SSL_CA =>
'/etc/ssl/zse/infernal/cacrt.d/MYSQL.ZONEVS.EU.crt'
]
        );
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
} catch (PDOException $error) {
    echo $error->getMessage();
}Code language: PHP (php)

NB! TLS 1.2 on toetatud alates PHP versioonist 7.2!

Käsurealt ühendamiseks MariaDB’d kasutavas serveris tuleb kasutada –ssl võtit

mysql -h dXXX.mysql.zonevs.eu -u {database_username} --ssl -p

Käsurealt ühendamiseks MySQL 8.0 kasutavas serveris tuleb kasutada –ssl-mode= võtit

mysql -h dXXX.mysql.zonevs.eu -u {database_username} --ssl-mode=REQUIRED -p

Eelnevad võtmed tulevad kasuks siis, kui on soov kasutada mysqldump funktsionaalsust näiteks siis, kui tahad teha MySQL’i varukoopiaid väljapoole Zone võrku.

Kuidas kontrollida, kas ühendus on krüpteeritud?

Olenemata kasutusmeetodist saad SSL ühenduse toimivust kontrollida SQL lausega:

SHOW STATUS LIKE 'Ssl_cipher';Code language: JavaScript (javascript)

TLS ühenduse korral peaks Ssl_cipher väärtuseks olema näiteks TLS_AES_256_GCM_SHA384. Kui see väärtus on tühi, siis TLS ühendust ei kasutata.

Populaarsed postitused

Zone+ Turvamonitooring tagab rahuliku ööune

Zone+ Turvamonitooring tagab rahuliku ööune

Kaarel Urva
Veebilehe turvalisuse tagamise olulisuses ei kahtle tänapäeval enam mitte keegi. Sellegipoolest tuleme põhitõdede juurde käesolevas blogipostituses...

Toores jõud ja nutikus - võitmatu kooslus

Ardi Jürgens
Saame taaskord kinnitada, et just Zone klientide käsutuses on parim võimalik veebimajutuse platvorm. Juba täna teenindavad osasid meie klientide serverid,...

Repositooriumite seadistamine Composeriga

Ingmar Aasoja
Käesolevaga toome lugejani veebiarenduse tööd hõlbustava Composeri-nimelise pakihalduriga seotud blogiseeria kolmanda postituse, milles küsimusele:...

.COM domeen kallineb ka tänavu

Jaanus Putting
Ehkki oleme kolm viimast suve siinsamas blogis kirjutanud, et .com domeeni hinnatõusule saabub 2024. aastal paus, on selle tippdomeeni register otsustanud...