Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Algajad läbitungimise testijad panevad andmebaasi turvalisusele üldiselt vähem rõhku. Ilma andmebaasi konfiguratsiooni ja turvatestideta rakendus ei saa olla turvaline. Võib-olla kasutate juba MySQL-i tarkvara, andmebaasihaldussüsteemi, kuidas saate seda turvalisemaks muuta? Siin on seitse sammu, mida peate järgima.

1. Kasutage kaugühenduse asemel SSH-tunnelit

MySQL-teenus töötab vaikimisi pordil 3306. Kui installite MySQL-i, näete, et port 3306 on kõigi ühenduste jaoks kuulamisrežiimis. Praegusel kujul on MySQL-port välismaailmale avatud. Sellepärast peaksite MySQL-i teenuse seadistama kuulama ainult kohalikku aadressi.

Kuna servereid käitatakse tavaliselt Linuxi distributsioonil, põhinevad alltoodud näited Debiani distributsioonil. Fail, mida peate kaugühenduse asemel kasutama SSH-tunneldamiseks ja välismaailma vaikepordi sulgemiseks, on /etc/mysql/my.cnf. Selles failis peate avama välja nimega [mysqld] ja kirjutage järgmine käsk:

[mysqld]
siduda-aadress = 127.0.0.1

Pärast seda protsessi ärge unustage seda faili salvestada ja taaskäivitage teenus järgmise käsuga:

sudo systemctl taaskäivitage mysqld
# või
sudosystemctlTaaskäivitamariadb.teenus

Sellega kuulab MySQL-teenus ainult kohalikku aadressi.

Kui kasutate MariaDB-d, saate ka uurida /etc/mysql/mariadb.conf.d/50-server.cnf ja kontrollige, kas selle jaoks on definitsioon sidumisaadress.

Nüüd, kui olete sidumisaadressi määranud 127.0.0.1, mis on kohalik host, saate käivitada Nmap skannimise ja kontrollida väljundit:

Näete MySQL-i porti, kuna 127.0.0.1 esindab kohalikku hosti, mida näete. Selle toimimises veendumiseks võite proovida sidumisaadressi uuesti muuta:

[mysqld]
siduda-aadress=127.5.5.1

Seejärel salvestage /etc/mysql/my.cnf faili ja taaskäivitage MySQL-teenus. Kui teostate Nmap skannimist jällegi selles etapis ei tohiks te localhostis seda sidumisaadressi näha.

Kui teate, et see töötab, minge tagasi esimese sammu sätete juurde ja määrake sidumisaadressiks 127.0.0.1 ja salvestage uuesti.

2. Kohaliku failijuurdepääsu barjääri seadistamine

MySQL suudab suhelda kohaliku failisüsteemiga. Päringute abil saate näha teksti sisu kohalikus failisüsteemis või kirjutada päringutulemuse kettale. Pahatahtlike ründajate selle funktsiooni kasutamise vältimiseks peate takistama MySQL-i suhtlemist kohaliku failisüsteemiga.

Ettevaatusabinõude võtmiseks võite kasutada funktsiooni nimega local-infile. Kujutage näiteks ette, et teil on fail nimega "/etc/secretfile.txt" ja teil on selles failis parool. Kui teie /etc/mysql/my.cnf faili funktsiooni local-infile väärtus on 1, on juurdepääs avatud. Nii pääsete juurde failile secretfile.txt.

Funktsiooni Local-infile väärtus on 1. Muudatuste jõustumiseks taaskäivitage MySQL-i andmebaas. Nüüd looge järgmise käsuga ühendus MySQL-iga ja kontrollige, kas näete faili secretfile.txt:

VALILOAD_FILE("/etc/secretfile.txt");

Teabe salvestamine mis tahes arvutisse faili pole keeruline.

Selle probleemi lahendamiseks muutke failis /etc/mysql/my.cnf kohaliku faili väärtust järgmiselt.

[mysqld]
kohalik-infile=0

Taaskäivitage MySQL-teenus. Ühendage uuesti MySQL-iga ja korrake eelmist sammu; te ei tohiks enam faili sisu näha.

Kui kasutajatel pole veel kohalike failide lugemis- ja kirjutamisõigusi, ei saa nad seda faili näha. Kuid see on ikkagi midagi, mida peaksite läbitungimistestides ja andmebaasi turvalisuses kontrollima.

3. Määrake rakenduse kasutajad ja paroolid

Andmebaasi haldamise kasutaja ja andmebaasile juurdepääsetav MySQL-i kasutaja peavad olema üksteisest erinevad. Teisisõnu on rakenduste ühendamine MySQL-iga juurkasutajatega äärmiselt ohtlik. Võimalusel määrake mittetoimivate rakenduste kasutajad UPDATE või INSERT toimingud eraldi.

Teine asi, mida siinkohal kaaluda, on kasutajate paroolid. Nagu peaaegu igas valdkonnas, peavad MySQL-i kasutajate paroolid olema keerulised ja ettearvamatud. Kui vajate selles abi, saate kasutada suurepäraseid parooligeneraatorisüsteeme.

4. Kustuta anonüümsed kasutajad

Kui installite MySQL-i vaikimisi, ilmnevad mõned anonüümsed kasutajad. Peate need kustutama ja neile juurdepääsu blokeerima. Turvalise MySQL-serveri puhul ei tohiks te järgmise päringu tulemusel mingit vastust saada:

VALI * FROM mysql.user KUSKASUTAJA="";
# Näidisväljund
Tühi seatud (0,001 sek)

Kui on tulemusi, peaksite need anonüümsed kasutajad kustutama. Näiteks kui keskkonnas nimega "localhost" oli anonüümne konto nimega "anonuser", peaksite selle konto kustutamiseks kasutama järgmist käsku:

KASUTAJA 'anonuser'@'kohalik host';

5. Kontrollige MySQL kohaliku faili õigusi

Kujutage ette, et olete andmebaasi administraator ja soovite naasta nädalataguste andmete juurde. Sel juhul peate võib-olla looma SSH kaudu ühenduse andmebaasiserveriga ja muutma soovitud MySQL-faile. Seda tehes võisite kasutada Linuxi juurkasutaja õigusi; see tähendab, et andmefailide omandiõigus ja õigused võivad muutuda. Sa ei taha seda.

Antud õiguste kontrollimiseks vaadake kataloogi /var/lib/mysql. Siin peate kontrollima, kas kõigi failide omanik on MySQL-i kasutaja. Järgmine käsk teeb asja ära:

sudo ls -al /var/lib/mysql

Failide lugemis- ja kirjutamisõigused peaksid olema ainult MySQL-i kasutajad. Ühelgi teisel kasutajal ei tohiks olla õigusi.

6. Kasutage MySQL SSL-i

Konkreetsele näitele mõtlemine on parim viis MySQL-i ja SSL-i kasutamise mõistmiseks. Kujutage ette, et ühe serveri ABC piirkonnas, kus on palju erinevaid servereid, võtavad üle pahatahtlikud häkkerid. Häkkerid viivad ABC piirkonnas läbi sisemise skaneerimise. Sel viisil koguvad nad teavet serverite kohta.

Kui nad tuvastavad selle protsessi käigus MySQL-serveri, saavad nad teha a Man-in-the-Middle (MitM) rünnak sihtserveri vastu, mis tähendab, et nad võivad varastada selle serveriga ühenduse loovate rakenduste ja kasutajate seansiteabe. Üks parimaid viise selle vältimiseks on lubage MySQL serveris SSL.

7. Logi- ja ajaloofailid

Vigade analüüsimiseks ja leidmiseks kasutate MySQL-i logisid. Saate muuta, kus neid logisid hoitakse, sisestades my.cnf järgmiselt:

# /etc/mysql/my.cnf
[mysqld]
logi =/var/logi/mylogfiles

Saate muuta mylogfilesi nime või asukohta vastavalt oma soovile. Peate kontrollima veel ühte faili. Kui loote Linuxi terminalis ühenduse MySQL-serveriga ja sisestate erinevaid käske, salvestatakse need päringud faili mysql_history. Kui käivitate järgmise käsu, näete MySQL-i terminalis kasutatavaid päringuid:

kass ~/.mysql_history

Peate selle faili sisu kustutama, kui te ei soovi anda teavet selle kohta, milliseid päringuid serveris teete. Faili sisu kustutamiseks kasutage järgmist käsku:

sudo kaja "puhastatud"> ~/.mysql_history

Seejärel saate faili sisu uuesti kontrollida.

Kes omab andmebaasi, omab süsteemi

Ükskõik, millises valdkonnas te töötate, sisaldab teie andmebaas alati olulist teavet. Need võivad olla teie kliendid, pangakontod ja paroolid. Pahatahtlikud ründajad teavad nende tähtsust ja väärtust. Andmebaasi arendajad ja administraatorid peavad häkkerite võitmiseks teadma vähemalt põhitõdesid, millega nad läbitungimistestides kokku puutuvad.