Kaip jau žinome, įsilaužimų yra papraščiausiai per daug. Įvykus įsilaužimui esame pripratę matyti saugumo ekspertus, įmonės darbuotojus ir kitus žmones patariančius mums kaip geriau apsaugoti savo duomenis ir infrastruktūrą.
Dauguma programuotojų tai ir daro – mes saugome savo infrastruktūrą, galbūt pasamdome keletą informacijos saugumo ekspertų ir klausiame jų patarimų kaip apsaugoti savo infrastruktūrą, kaip išvengti įsilaužimų ateityje ir pan.
Bet ar mes kada pagalvojome kaip apsaugoti MySQL įvykus įsilaužimui? Šiame straipsnyje bandysime tai aptarti.
Kai kalbame apie su MySQL susijusias saugumo galimybes, turime platų pasirinkimo galimybių spektrą:
Tai yra vieni pagrindinių klausimų į kuriuos turėtume atsakyti jei norime suprasti kaip geriau apsaugoti MySQL – dabar pažvelgsime į juos detaliau.
Jei įtariame, kad mūsų informacinė sistema patyrė įsilaužimą, verta apsvarstyti ar neturėtume iš naujo įdiegti MySQL savo serveriuose – taip pat pravartu pradėti nuo paties MySQL įdiegimo apsaugojimo, kas reiškia, kad iš naujo įdiegę MySQL į savo serverį turėtume pažvelgti į šiuos dalykus:
root
“) MySQL vartotojui – tai turėtų atrodyti akivaizdu, tačiau kartais pamirštame papraščiausius dalykus. Įsitikinkite, kad slaptažodį sudaro didžiosios, mažosios raidės, skaičiai ir specialieji simboliai.sudo rsync -a /var/lib/mysql /mount/volume-01
, tada į savo /var/lib/mysql/my.cnf
failą įrašykite:socket=/mount/volume_01/mysql/mysql.sock
datadir=/mount/volume_01/mysql
. Pakeiskite direktoriją pagal savo nuožiūrą.secure_file_priv
nustato katalogą, iš kurio leidžiama vykdyti importo ir eksporto operacijas – jei operacijos nekils iš šio katalogo, failai nebus importuoti į serverį./var/lib/mysql/my.cnf
failą ir pakeiskite secure_file_priv
kintamojo reikšmę į kitą katalogą.Aukščiau aprašyti pagrindiniai MySQL apsaugojimo veiksmai turėtų padėti apsaugoti jūsų MySQL instaliaciją, tačiau tai yra tik viena MySQL saugumo dalis. Dabar pažiūrėsime į MySQL prieigos kontrolę.
Norėdami užtikrinti tinkamą MySQL prieigos kontrolę apribokite tam tikrų užklausų naudojimą tik tam tikriems vartotojams – pasverkite savo galimybes ir vartotojams suteikite prieigą tik prie tų užklausų, kurios yra būtinos tam, kad jie atliktų reikalingas užduotis.
Pavyzdžiui, jei vartotojui reikia tik skaityti iš duomenų bazės, jam turėtų būti leidžiama naudoti tik SELECT
teiginius – vartotojams gali reikėti priskirti ir prieigą prie kelių užklausų, pavyzdžiui ALTER
, UPDATE
ir kitų.
Taip pat apsvarstykite galimybę atšaukti prieigą prie tam tikrų užklausų – jei matote, kad tam tikram vartotojui nebereikia pavyzdžiui, pridėti indeksų prie lentelės, apsvarstykite galimybę atšaukti jo prieigą prie ALTER
užklausų ir pan.
MySQL turi kelis papildinius, galinčius sustiprinti šios programinės įrangos saugumą. Visų jų neaptarsime, tačiau kai kurie iš jų yra:
sha256_password
įskiepiu:CREATE USER 'demo_user'@'localhost' IDENTIFIED WITH sha256_password;
old_passwords
variable to 2 (this will cause the PASSWORD()
function to use the SHA-256 hashing algorithm):SET old_passwords = 2;
SET PASSWORD FOR 'demo_user'@localhost = PASSWORD('demo_password');
validate_password
yra skirtas pagerinti saugumą įgalinant slaptažodžio patikimumo testus.validate_password
ir, jei reikia, pakeiskite validate_password_policy
reikšmę (kintamąjį galima nustatyti į skaitines reiškmes 0, 1 ir 2 arba žodines reikšmes LOW
, MEDIUM
ir STRONG
) – nustatymas LOW
tikrina tik slaptažodžio stiprumą – pagal numatytuosius nustatymus slaptažodžiai turi būti bent 8 simbolių ilgio. Šis ilgis gali būti pakeistas pakeičiant kintamąjį validate_password_length
. MEDIUM
nustatymas prideda tam tikras sąlygas – slaptažodžiai turi būti sudaryti ne mažiau kaip iš vieno skaičiaus, mažosios, didžiosios raidės ir specialaus simbolio. Šias reikšmes taip pat galima pakeisti modifikuojant kintamuosius validate_password_number_count
, validate_password_mixed_case_count
ir validate_password_special_char_count
. Nustatymas STRONG
prideda sąlygą, kad slaptažodžiai, kurie yra sudaryti iš arba viršija 4 simbolius, neturi sutapti su žodžiais žodyne, kurį galima nurodyti modifikuojant kintamąjį validate_password_dictionary_file
.audit_log
. MySQL auditas naudoja audito API tam, kad galėtų stebėti ir registruoti užklausas vykdomas MySQL serveriuose. Papildinys sukuria log failą, kurio turinys apima serverio veiklą tam tikru metu.Bendri duomenų bazių saugumo aspektai yra dažniausiai susiję su pagrindinių duomenų bazių saugumo priemonių naudojimu – visoms naudojamoms paskyroms turėtume naudoti tvirtus slaptažodžius, programuotojai prie duomenų turėtų leisti prieiti tik patikimiems žmonėms, neleisti duomenų bazėms būti per daug apkrautomis, vengti fizinės žalos serveriams, vengti naudoti programinę įrangą kurioje yra saugumo spragų (pavyzdžiui, SQL injekcijos galima išvengti naudojant paruoštas užklausas), taip pat išvengti duomenų sugadinimo ar praradimo ir pan.
Duomenys yra svarbi jūsų svetainės dalis. Duomenys gali būti sugadinami. Standieji diskai genda. Kiekviena informacinė sistema gali prarasti duomenis kas reiškia, kad jei nepadarysite atsarginių kopijų, galite patirti didelių problemų.
Savo failų ir duomenų bazės atsarginių kopijų kūrimas yra ypač svarbi bet kurios saugos rutinos dalis. Yra keli įrankiai ir paslaugos, skirtos automatizuoti šią užduotį (tai galima atlikti net sukūrus bash skriptus), galite saugoti duomenis debesų saugyklose, diskuose ir kt. – disko vieta yra pigi, tad atsarginių kopijų turėjimas yra prasmingas visada.
Jei įvyktų katastrofa ir jūsų duomenys būtų sunaikinti, turimų atsarginių kopijų išbandymas irgi yra labai svarbus – tai gali padėti jums išsaiškinti, ar galite greitai ir efektyviai atkurti duomenis. Atsarginių duomenų kopijų išbandymas turėtų būti esminė bet kurios atsarginių kopijų rutinos kūrimo dalis.
Apibendrinant galima pasakyti, kad norint apsaugoti savo MySQL duomenų bazę nuo įsilaužimo reikėtų iš naujo įdiegti MySQL savo serveriuose ir netrukus po įdiegimo apriboti vartotojų teises. Atminkite, kad jūsų vartotojų paskyrose turėtų būti naudojami stiprūs slaptažodžiai (naudokite didžiąsias, mažąsias raides, skaičius, ir jei tik įmanoma, simbolius), apsvarstykite galimybę naudoti MySQL saugos įskiepius, būtinai laikykitės MySQL duomenų bazių saugos praktikos ir pasirūpinkite atsarginėmis duomenų kopijomis. Sukurkite visų svarbių duomenų atsargines kopijas, įsitikinkite, kad jūsų atsarginės kopijos yra atnaujinamos ir visada jas išbandykite.
Jei atlikote šios veiksmus, jūsų MySQL duomenų bazės ateitis turėtų būti geresnė.
There have been rumors about a data breach targeting Schneider Electric. Did a data breach…
There have been rumors about the Fiskars Group – the company behind Fiskars scissors and…
Russia has fined Google more than two undecillion roubles because Google has refused to pay…
Why does RockYou 2024.txt look like a binary file when you open it up? Find…
Duolicious is a dating app that connects people who are “chronically online.” Did the Duolicious…
This blog will tell you what RockYou 2024 is, how RockYou 2024.txt came to be,…