Saugokite „MySQL“ duomenų bazes kurdami atskirus vartotojus ir leidimus

Aš visada buvau geros praktikos draugas, daug daugiau, jei jie padeda mums išlaikyti mūsų serverių, paslaugų ar tiesiog mūsų informacijos saugumą.

Įprotis (blogas įprotis), kurį turi daugelis administratorių ar vartotojų, yra naudotis prieiga šaknis visoms duomenų bazėms, tai yra ... jie įdiegia svetainę naudodami „WordPress CMS“ ir kaip prieigos prie duomenų bazės duomenis (kad WP galėtų naudoti „MySQL“ serverį ir naudoti jo DB), jie įdeda „MySQL“ serverio administravimo vartotoją: root

Be to, jie įdiegia bet kurią kitą žiniatinklio programą (pokalbį, įklijuoja, forumą ir kt.) Ir daro tą patį, jie visada naudoja pagrindinį MySQL vartotoją ...

KLAIDA !!!

Tai tiesiog lemtingas įprotis.

Tarkime, kad mes serveryje turime šias paslaugas:

  1. Svetainė ar portalas, kuriame naudojama „WordPress“.
  2. Mūsų palaikymo forumas, pokalbiai ir tt ... visa bendruomenė.
  3. FTP, kuris naudoja „MySQL“ duomenų bazę vartotojams ir slaptažodžiams saugoti.
  4. El. Pašto vartotojai (vartotojai ir slaptažodžiai) saugomi „MySQL“ duomenų bazėje.
  5. Mažas „WebChat“, kurį įdiegiame norėdami kalbėtis su pažįstamu žmogumi.

Visose iš jų 5 paslaugose naudojame „MySQL“ šakninį vartotoją, kad kiekviena tarnyba pasiektų ir išsaugotų duomenis atitinkamoje duomenų bazėje.

Vieną gražią dieną bet kuris iš daugelio trolių ten, bet tai ne tik trolis, bet ir įvaldo kai kuriuos išnaudojimus, pažeidžiamumus, įsilaužimus ir pan. ... nusprendžia padaryti mums kažką žalingo.

Raskite klaidą „WebChat“, kurią naudojame, pasinaudodamas šia klaida, ji sugeba pasiekti „WebChat“ failus, įskaitant „WebChat“ konfigūracijos failą, ir ... šiame faile, kaip akivaizdu, yra vartotojo vardas ir slaptažodis, kuriuos naudoja „WebChat“ prieiti prie MySQL serverio ir atspėti ką? ... Tai yra ne daugiau ir ne mažiau šaknų vartotojas!

Gavęs šią informaciją, trolis gali labai paprastai:

  1. Ištrinkite mus ir (arba) pavogkite viską, kas susiję su mūsų turima svetaine ar portalu (WordPress).
  2. Galite ištrinti ir (arba) pavogti informaciją iš mūsų IR iš mūsų vartotojų, kurie naudojasi forumu, mūsų sukurta bendruomene.
  3. Taip pat galite pavogti VISŲ vartotojų, turinčių el. Pašto paskyrą mūsų serveryje, vartotojo vardą ir slaptažodį, taip pat pavogti informaciją iš jų el. Laiškų, apsimetinėti ir pan.
  4. Dabar pagaliau galite naudoti mūsų FTP serverio abonementą ir įkelti bet kokį failą, kuriame yra kenkėjiškų programų, o tai leistų jums visiškai ir visiškai valdyti mūsų serverį.

Na ... ką tu galvoji? … 🙂

Ar matote viską, kas gali nutikti, nesukuriant nepriklausomų vartotojų kiekvienai mūsų turimai duomenų bazei?

Tai NĖRA perdėti draugai, tai gali atsitikti labai lengvai ... na, viskas, ko reikia katastrofai atskleisti, yra tik vienos iš jūsų įdiegtų žiniatinklio programų klaida.

Dabar ...

Kaip sukurti atskirus „MySQL“ vartotojus kiekvienai žiniatinklio programai?

Pirmiausia turime įvesti MySQL serverį su šakniniu vartotoju, nes jis turi teises kurti duomenų bazes, nustatyti leidimus, kurti vartotojus ir tt:

mysql -u root -p

Kai jie parašys aukščiau ir paspaus [Įveskite] Jų bus paprašyta „MySQL“ šakninio vartotojo slaptažodžio, jie jį įveskite ir paspaus [Įveskite] vėl jums akimirksniu bus parodyta maždaug taip:

Dabar sukursime duomenų bazę pavadinimu «webchatdb":
CREATE DATABASE webchatdb;

Atkreipkite dėmesį į kabliataškį «;»Eilutės pabaigoje.

Paruošta, jūs jau sukūrėte duomenų bazę, dabar kurkime vartotoją «žiniatinklio valdytojas«Su slaptažodžiu«slaptažodisdelputowebchat":

CREATE USER 'webchatuser'@'localhost' IDENTIFIED BY 'passworddelputowebchat';

Dabar magija ... suteiksime visas privilegijas (skaityti ir rašyti) žiniatinklio valdytojas TIK DB webchatdb:

GRANT ALL PRIVILEGES ON webchatdb.* TO 'webchatuser'@'localhost' WITH GRANT OPTION;

O voila, vartotojas jau turi leidimus toje duomenų bazėje ... dabar belieka tik atnaujinti „MySQL“ teises, tai yra liepti „MySQL“ perskaityti vartotojų teises, nes mes ką tik jas pakeitėme:

FLUSH PRIVILEGES ;

Aš palieku jums ekrano kopiją:

Ir tai buvo viskas. Tai darydami kiekvienai žiniatinklio programai, kurią naudojame, garantuojame, kad tuo atveju, jei joms pavyks pažeisti vieną iš tų žiniatinklio programų, kitos bus saugios (bent jau MySQL požiūriu)

Kas yra gera praktika? 😉

Tikiuosi, kad tai buvo naudinga ir jums, ir man, nes stengiausi tai paaiškinti kuo paprasčiau.

saludos


15 komentarai, palikite savo

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   kregždė sakė

    Geras pranešimas KZKG, jei jis būtų forume, aš paprašyčiau lipnios!

    1.    KZKG ^ Gaara sakė

      Ačiū 😀

      1.    KubaRaudona sakė

        Tinklaraščiui įvestas slaptažodis yra geras, dar vienas dalykas, susijęs su „mysql“, yra jo atminties naudojimas

  2.   Hyuuga_Neji sakė

    Hehehe, ačiū, kad priminėte „MySQL“ komandas. Dabar pažiūrėkime, ar „Aš įdėjau šiek tiek saugumo“ „World of Warcraft“ serverio duomenų bazėje, kurią turiu savo LAN.

  3.   84 sakė

    mano žinios apie tai yra lygios nuliui, bet beveik tokios pačios, kaip naudojant „MySQL for Amarok“?
    Sukurti duomenų bazę amarokdb;
    SUTEIKKITE VISAS PRIVILEGIJAS APIE „amarokdb“. * Į „amarokuser“, NUSTATYTĄ „slaptažodžiu“; SKALAVIMO PRIVILEGIJOS;

    1.    KZKG ^ Gaara sakė

      „Amarok“ nenaudojau ilgai ir ilgai, bet jei naudojate „MySQL“ DB, teoriškai jis taip pat turėtų veikti.

  4.   Carlosas Andrésas Restrepo sakė

    Sveiki, būtų gerai, jei sukurtumėte įrašą, skirtą apsaugai nuo žiniatinklio serverių sistemoje „Linux“, daugelis jų neturi tinkamo saugumo, o to paties administratorius nėra tinkamai ekspertas, jie tik palengvina dalykus, pavyzdžiui, „symlink“ serveriuose leidžia skaityti kitų paskyrų, esančių tame pačiame serveryje, konfigūracijos failus, daugelis administratorių to nežino, todėl daugėja svetainės defektų

    saludos

    1.    KZKG ^ Gaara sakė

      Sveiki, kaip tai vyksta
      Sveiki atvykę į svetainę 🙂

      Tikrai nelaikau savęs šio klausimo ekspertu, bet stengsiuosi prisidėti prie nedaugelio žinių, kurias įgijau per metus 🙂

      Kitas dalykas, kurį daro nedaug tinklo administratorių, yra suteikti privilegijas svetainėms su apache atskirai, tai yra vartotojui ir grupuoti www duomenis (ar panašius), kurie yra skirtingi kiekvienai svetainei, ir savo ruožtu kiekvienam iš šių .

      saludos

  5.   775 sakė

    Geras patarimas

    saludos

    1.    KZKG ^ Gaara sakė

      Ačiū

  6.   nanotechnologijų sakė

    NESKYBU tavo terminalo išvaizdos, foninės raidės mane išstumia iš koncentracijos. Jūs esate sušikti beprotiški xD

    Be to, įdomu, nes mačiau apgailėtinus atvejus, kai dėl tų dalykų nutrūko paslaugos.

    Dabar ne tik nuo to priklauso, bet ir saugumas yra tai, kaip buvo sukurta duomenų bazė, - paaiškino man mokytojas, bet aš dar nesu paniręs į DB ... turėtume susipainioti su „MongoDB = D“. dienų

  7.   Carlosas Coronelis sakė

    kaip tik tai nutiko man šiandien su mano nuomojamu serveriu

    Aš vykdžiau jūsų veiksmus, nuėjau į „cpanel“ ir ieškojau „MYSQL“ duomenų bazės, ir ji man sako, kad ji neveikia.

    Aš nežinau, kaip įvesti dabar su root vartotoju
    Aš esu neofitas šioje srityje, bet čia skaitydamas jūs daug išmokote, tikiuosi, kad nurodysite man prieigą

    1.    KZKG ^ Gaara sakė

      Sveiki 🙂
      Ką turite, yra priegloba („SharedHosting“) arba VPS (virtualus serveris)?

      Jei turite prieglobą, o ne VPS, turėtumėte pamatyti, ar jūsų priegloba turi SSH prieigą (susisiekite su įmonės, kuri pardavė jums prieglobą, technine pagalba ir paklauskite, kaip pasiekti per SSH), kai įvesite per SSH, vartotojas NEBUS root, tačiau turite naudoti tą vartotoją, kurį įvedėte, kai įdiegėte tą žiniatinklio programą.

      Tiesą sakant, jūsų problema yra sudėtinga, nes variantų ir galimybių yra labai daug, rekomenduoju atidaryti naują temą mūsų forume, ten bus patogiau jums padėti - » http://foro.desdelinux.net

      Sveikinimai 😀

  8.   bossbrondem sakė

    geras,

    Suprantu, kad gera praktika nesuteikti visų privilegijų bet kuriam vartotojui, išskyrus root. Tačiau nuo tada, kai įdiegiau „phpmyadmin“, sukurtas naujas vartotojas „phpmyadmin“ su visomis privilegijomis. Atrodo logiška, kad taip yra, nes „MySQL“ duomenų bazėms tvarkyti yra tik grafinė versija. Bet kokiu atveju norėčiau įsitikinti, ar viskas gerai, ar turėčiau šiek tiek pakoreguoti vartotojo „phpmyadmin“ teises.

    Sveikinimai ir ačiū!

  9.   Emmanuelis sakė

    Puiku…
    Aš esu iš tų, kurie viską daro su šaknimis, bet tu atvarei mano draugą ..
    Labai ačiū…