12 MySQL/MariaDB saugos geriausios praktikos, skirtos Linux
MySQL yra populiariausia pasaulyje atvirojo kodo duomenų bazių sistema, o MariaDB (MySQL šakutė) yra greičiausiai pasaulyje auganti atvirojo kodo duomenų bazių sistema. Įdiegus MySQL serverį, jis yra nesaugus pagal numatytąją konfigūraciją, o jo apsauga yra viena iš esminių bendro duomenų bazių valdymo užduočių.
Taip pat skaitykite: išmokite MySQL/MariaDB pradedantiesiems – 1 dalis
Tai prisidės prie bendro Linux serverio saugumo stiprinimo ir padidinimo, nes užpuolikai visada nuskaito pažeidžiamumą bet kurioje sistemos dalyje, o duomenų bazės anksčiau buvo pagrindinės tikslinės sritys. Dažnas pavyzdys yra žiaurus MySQL duomenų bazės root slaptažodžio perkėlimas.
Šiame vadove paaiškinsime naudingą MySQL/MariaDB saugos praktiką, skirtą Linux.
1. Saugus MySQL diegimas
Tai pirmas rekomenduojamas žingsnis po MySQL serverio įdiegimo siekiant apsaugoti duomenų bazės serverį. Šis scenarijus padeda pagerinti jūsų MySQL serverio saugumą, prašydamas:
- nustatykite root paskyros slaptažodį, jei jo nenustatėte diegdami.
- išjunkite nuotolinį root vartotojo prisijungimą pašalindami root paskyras, kurias galima pasiekti ne iš vietinio pagrindinio kompiuterio.
- pašalinti anoniminių vartotojų paskyras ir išbandyti duomenų bazę, kurią pagal numatytuosius nustatymus gali pasiekti visi vartotojai, net ir anoniminiai.
mysql_secure_installation
Paleidę, nustatykite pagrindinį slaptažodį ir atsakykite į klausimus įvesdami [Taip/Y] ir paspauskite [Enter].
2. Susieti duomenų bazės serverį su atgalinio ryšio adresu
Ši konfigūracija apribos prieigą iš nuotolinių mašinų, ji nurodo MySQL serveriui priimti ryšius tik iš vietinio pagrindinio kompiuterio. Jį galite nustatyti pagrindiniame konfigūracijos faile.
vi /etc/my.cnf [RHEL/CentOS]
vi /etc/mysql/my.conf [Debian/Ubuntu]
OR
vi /etc/mysql/mysql.conf.d/mysqld.cnf [Debian/Ubuntu]
Pridėkite šią eilutę žemiau esančioje skiltyje [mysqld]
.
bind-address = 127.0.0.1
3. MySQL išjunkite LOCAL INFILE
Siekiant sustiprinti saugumą, turite išjungti local_infile, kad neleistumėte pasiekti pagrindinės failų sistemos iš MySQL, naudodami šią direktyvą, esančią skyriuje [mysqld]
.
local-infile=0
4. Pakeiskite MYSQL numatytąjį prievadą
Kintamasis Portas nustato MySQL prievado numerį, kuris bus naudojamas TCP/IP ryšiams klausytis. Numatytasis prievado numeris yra 3306, bet galite jį pakeisti skiltyje [mysqld], kaip parodyta.
Port=5000
5. Įjunkite MySQL registravimą
Žurnalai yra vienas geriausių būdų suprasti, kas vyksta serveryje, bet kokių atakų atveju iš žurnalo failų galite lengvai pamatyti bet kokią su įsibrovimu susijusią veiklą. MySQL registravimą galite įjungti įtraukdami šį kintamąjį prie skilties [mysqld]
.
log=/var/log/mysql.log
6. Nustatykite atitinkamą leidimą MySQL failams
Įsitikinkite, kad turite atitinkamus leidimus visiems mysql serverio failams ir duomenų katalogams. Failas /etc/my.conf turėtų būti rašomas tik root. Tai neleidžia kitiems vartotojams keisti duomenų bazės serverio konfigūracijų.
chmod 644 /etc/my.cnf
7. Ištrinkite MySQL apvalkalo istoriją
Visas MySQL apvalkale vykdomas komandas mysql klientas saugo istorijos faile: ~/.mysql_history. Tai gali būti pavojinga, nes visų sukurtų vartotojų abonementų visi naudotojų vardai ir slaptažodžiai, įvesti apvalkale, bus įrašyti į istorijos failą.
cat /dev/null > ~/.mysql_history
8. Nevykdykite MySQL komandų iš komandų eilutės
Kaip jau žinote, visos komandos, kurias įvedate terminale, yra saugomos istorijos faile, atsižvelgiant į naudojamą apvalkalą (pvz., ~/.bash_history bash). Užpuolikas, kuriam pavyksta gauti prieigą prie šio istorijos failo, gali lengvai pamatyti visus ten įrašytus slaptažodžius.
Labai nerekomenduojama įvesti slaptažodžių komandinėje eilutėje, maždaug taip:
mysql -u root -ppassword_
Kai patikrinsite paskutinę komandų istorijos failo skiltį, pamatysite aukščiau įvestą slaptažodį.
history
Tinkamas būdas prisijungti prie MySQL yra.
mysql -u root -p
Enter password:
9. Apibrėžkite konkrečios programos duomenų bazės vartotojus
Kiekvienai serveryje veikiančiai programai suteikite prieigą tik vartotojui, kuris yra atsakingas už konkrečios programos duomenų bazę. Pavyzdžiui, jei turite „WordPress“ svetainę, sukurkite konkretų „WordPress“ svetainės duomenų bazės vartotoją, kaip nurodyta toliau.
mysql -u root -p
MariaDB [(none)]> CREATE DATABASE osclass_db;
MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY 'osclass@dmin%!2';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit
ir nepamirškite visada pašalinti vartotojų abonementus, kurie nebetvarko jokios taikomųjų programų duomenų bazės serveryje.
10. Naudokite papildomus saugos papildinius ir bibliotekas
„MySQL“ apima daugybę saugos įskiepių, skirtų: autentifikuoti klientų bandymus prisijungti prie „mysql“ serverio, patvirtinti slaptažodį ir apsaugoti neskelbtinos informacijos saugyklą. Visa tai yra nemokamoje versijoje.
Daugiau galite rasti čia: https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html
11. Reguliariai keiskite MySQL slaptažodžius
Tai yra įprastas informacijos/programos/sistemos saugumo patarimas. Kaip dažnai tai darysite, visiškai priklausys nuo jūsų vidaus saugumo politikos. Tačiau tai gali neleisti „šniukšteliams“, kurie galėjo stebėti jūsų veiklą ilgą laiką, pasiekti jūsų mysql serverio.
MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
12. Reguliariai atnaujinkite MySQL serverio paketą
Labai rekomenduojama reguliariai atnaujinti mysql/mariadb paketus, kad galėtumėte neatsilikti nuo saugos naujinimų ir klaidų pataisų iš tiekėjo saugyklos. Paprastai paketai numatytosiose operacinės sistemos saugyklose yra pasenę.
yum update
apt update
Atlikę bet kokius mysql/mariadb serverio pakeitimus, visada paleiskite paslaugą iš naujo.
systemctl restart mariadb #RHEL/CentOS
systemctl restart mysql #Debian/Ubuntu
Taip pat skaitykite: 15 naudingų MySQL/MariaDB našumo derinimo ir optimizavimo patarimų
Tai viskas! Mums patinka išgirsti iš jūsų atsiliepimus naudodami toliau pateiktą komentarų formą. Pasidalykite su mumis visais MySQL/MariaDB saugos patarimais, kurių trūksta aukščiau esančiame sąraše.