Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Visų pirma pradedantieji skverbties tikrintojai mažiau dėmesio skiria duomenų bazių saugumui apskritai. Programa be duomenų bazės konfigūracijos ir saugos testų negali būti saugi. Galbūt jau naudojate MySQL programinę įrangą, duomenų bazių valdymo sistemą, tad kaip galite padaryti ją saugesnę? Štai septyni žingsniai, kuriuos turite atlikti.

1. Vietoj nuotolinio ryšio naudokite SSH tuneliavimą

Pagal numatytuosius nustatymus „MySQL“ paslauga veikia 3306 prievade. Įdiegę MySQL pamatysite, kad 3306 prievadas yra visų jungčių klausymosi režimu. Dabartinis MySQL prievadas yra atviras išoriniam pasauliui. Štai kodėl turėtumėte nustatyti „MySQL“ paslaugą, kad ji klausytų tik vietinio adreso.

Kadangi serveriai paprastai veikia „Linux“ paskirstyme, toliau pateikti pavyzdžiai yra pagrįsti „Debian“ paskirstymu. Failas, kurį reikia naudoti SSH tuneliui vietoj nuotolinio ryšio ir uždaryti numatytąjį prievadą išoriniam pasauliui

instagram viewer
/etc/mysql/my.cnf. Šiame faile turite atidaryti lauką pavadinimu [mysqld] ir parašykite šią komandą:

[mysqld]
įpareigoti-adresas=127.0.0.1

Baigę šį procesą, nepamirškite išsaugoti šio failo ir iš naujo paleiskite paslaugą naudodami šią komandą:

sudo systemctl iš naujo paleiskite mysqld
# arba
sudosystemctlperkrautimariadb.paslauga

Tokiu atveju „MySQL“ paslauga klausys tik vietinio adreso.

Jei naudojate MariaDB, taip pat galite ištirti /etc/mysql/mariadb.conf.d/50-server.cnf ir patikrinkite, ar yra apibrėžimas įrišimo adresas.

Dabar, kai nustatėte susiejimo adresą 127.0.0.1, kuris yra localhost, galite paleisti Nmap nuskaitymą ir patikrinti išvestį:

Galite matyti MySQL prievadą, nes 127.0.0.1 reiškia jūsų matomą vietinį pagrindinį kompiuterį. Galite pabandyti dar kartą pakeisti susiejimo adresą, kad įsitikintumėte, jog tai veikia:

[mysqld]
įpareigoti-adresas=127.5.5.1

Tada išsaugokite /etc/mysql/my.cnf failą ir iš naujo paleiskite „MySQL“ paslaugą. Jei atliekate Nmap nuskaitymą vėl šiame etape neturėtumėte matyti šio susiejimo adreso „localhost“.

Kai žinosite, kad tai veikia, grįžkite į nustatymus nuo pirmojo veiksmo, nustatykite susiejimo adresą į 127.0.0.1 ir išsaugokite dar kartą.

2. Nustatykite vietinį failų prieigos barjerą

MySQL gali susisiekti su vietine failų sistema. Naudodami užklausas galite matyti teksto turinį vietinėje failų sistemoje arba įrašyti užklausos rezultatą į diską. Kad išvengtumėte kenkėjiškų užpuolikų, naudojančių šią funkciją, turite neleisti MySQL susisiekti su vietine failų sistema.

Norėdami imtis atsargumo priemonių, galite naudoti funkciją, vadinamą local-infile. Pavyzdžiui, įsivaizduokite, kad turite failą pavadinimu „/etc/secretfile.txt“ ir šiame faile turite slaptažodį. Jei jūsų /etc/mysql/my.cnf failo vietos failo funkcijos reikšmė yra 1, tada prieiga atidaryta. Taigi galite pasiekti failą secretfile.txt.

Vietinio failo funkcijos reikšmė yra 1. Iš naujo paleiskite MySQL duomenų bazę, kad pakeitimai įvyktų. Dabar prisijunkite prie MySQL naudodami šią komandą ir patikrinkite, ar matote failą secretfile.txt:

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

Nesunku užfiksuoti informaciją bet kuriame kompiuteryje esančiame faile.

Norėdami išspręsti šią problemą, pakeiskite vietinio failo reikšmę /etc/mysql/my.cnf faile taip:

[mysqld]
vietinis-infile=0

Iš naujo paleiskite MySQL paslaugą. Prisijunkite prie MySQL ir pakartokite ankstesnį veiksmą; nebeturėtumėte matyti failo turinio.

Jei vartotojai dar neturi vietinių failų skaitymo ir rašymo teisių, jie negalės matyti šio failo. Tačiau vis tiek turėtumėte patikrinti įsiskverbimo testus ir duomenų bazės saugumą.

3. Nustatykite programos naudotojus ir slaptažodžius

Duomenų bazės valdymo vartotojas ir MySQL vartotojas, pasiekiantis duomenų bazę, turi skirtis vienas nuo kito. Kitaip tariant, programų prijungimas prie MySQL su root vartotojais yra labai pavojingas. Jei įmanoma, apibrėžkite neveikiančių programų vartotojus UPDATE arba INSERT operacijos atskirai.

Kitas dalykas, į kurį reikia atsižvelgti šiuo metu, yra vartotojo slaptažodžiai. Kaip ir beveik visose srityse, MySQL vartotojų slaptažodžiai turi būti sudėtingi ir nenuspėjami. Jei jums reikia pagalbos, galite naudoti puikias slaptažodžių generavimo sistemas.

4. Ištrinkite anoniminius vartotojus

Kai pagal numatytuosius nustatymus įdiegiate MySQL, atsiranda anoniminių vartotojų. Turite juos ištrinti ir užblokuoti prieigą. Jei naudojate saugų MySQL serverį, neturėtumėte gauti jokio atsakymo dėl šios užklausos:

PASIRINKTI * NUO mysql.user KURVARTOTOJAS="";
# Išvesties pavyzdys
Tuščia rinkinys (0,001 sek.)

Jei yra kokių nors rezultatų, turėtumėte ištrinti šiuos anoniminius vartotojus. Pavyzdžiui, jei aplinkoje, pavadintoje „localhost“, buvo anoniminė paskyra, pavadinta „anonuser“, norėdami ištrinti šią paskyrą turėsite naudoti tokią komandą, kaip nurodyta toliau:

PALEISTI NAUDOTOJĄ 'anonusas'@'vietinis šeimininkas';

5. Patikrinkite MySQL vietinio failo leidimus

Įsivaizduokite, kad esate duomenų bazės administratorius ir norite grįžti prie savaitės senumo duomenų. Tokiu atveju gali tekti prisijungti prie duomenų bazės serverio per SSH ir pakeisti norimus MySQL failus. Tai darydami galbūt naudojote pagrindines Linux vartotojo teises; tai yra, duomenų failų nuosavybė ir leidimai gali keistis. Tu to nenori.

Pažiūrėkite į /var/lib/mysql katalogą, kad patikrintumėte suteiktus leidimus. Čia reikia patikrinti, ar visų failų savininkas yra MySQL vartotojas. Ši komanda atliks triuką:

sudo ls -al /var/lib/mysql

Failų skaitymo ir rašymo leidimai turėtų būti tik MySQL naudotojui. Jokie kiti vartotojai neturi turėti jokių leidimų.

6. Naudokite MySQL SSL

Pagalvojus apie konkretų pavyzdį, geriausias būdas suprasti MySQL ir SSL naudojimą. Įsivaizduokite, kad vieną iš ABC regiono serverių, kur yra daug įvairių serverių, perima piktybiniai įsilaužėliai. Piratai atliks vidinį nuskaitymą ABC regione. Tokiu būdu jie renka informaciją apie serverius.

Jei šio proceso metu jie aptinka MySQL serverį, jie gali atlikti a „Man-in-the-Middle“ (MitM) ataka prieš tikslinį serverį, tai reiškia, kad jie gali pavogti programų ir vartotojų, besijungiančių prie šio serverio, seanso informaciją. Vienas geriausių būdų to išvengti yra įgalinkite SSL MySQL serveryje.

7. Žurnalo ir istorijos failai

Klaidoms analizuoti ir rasti naudojate MySQL žurnalus. Galite redaguoti, kur saugomi šie žurnalai, įvesdami my.cnf taip:

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

Galite pakeisti mylogfiles pavadinimą arba vietą, kaip norite. Turite patikrinti dar vieną failą. Kai prisijungiate prie MySQL serverio Linux terminale ir įvedate įvairias komandas, šios užklausos išsaugomos faile mysql_history. Jei vykdote šią komandą, galite pamatyti užklausas, kurias naudojate MySQL terminale:

katė ~/.mysql_history

Turite ištrinti šio failo turinį, jei nenorite pateikti informacijos apie tai, kokias užklausas atliekate serveryje. Norėdami ištrinti failo turinį, naudokite šią komandą:

sudo echo "išvalytas"> ~/.mysql_history

Tada galite dar kartą patikrinti failo turinį.

Kas valdo duomenų bazę, turi sistemą

Nesvarbu, kokioje pramonės šakoje dirbate, jūsų duomenų bazėje visada yra svarbios informacijos. Tai gali būti jūsų klientai, banko sąskaitos ir slaptažodžiai. Piktybiški užpuolikai žino jų svarbą ir vertę. Duomenų bazių kūrėjai ir administratoriai turi žinoti bent pagrindus, su kuriais susidurs atlikdami įsiskverbimo testus, kad įveiktų įsilaužėlius.