Zaščitite svoje zbirke podatkov MySQL z ustvarjanjem ločenih uporabnikov in dovoljenj

Vedno sem bil prijatelj dobrih praks, še bolj, če nam pomagajo ohranjati varnost naših strežnikov, storitev ali preprosto naših informacij.

Navada (slaba navada), ki jo imajo mnogi skrbniki ali uporabniki, je uporaba dostopa koren za vse zbirke podatkov, to je ... namestijo spletno mesto z uporabo WordPress CMS in kot dostop do podatkovne zbirke (da WP uporablja strežnik MySQL in uporablja njegovo bazo podatkov) postavijo uporabnika administracije strežnika MySQL: root

Prav tako namestijo katero koli drugo spletno aplikacijo (klepet, prilepi, forum itd.) In storijo enako, vedno uporabljajo korenskega uporabnika MySQL ...

NAPAKA !!!

To je preprosto usodna navada.

Recimo, da imamo na strežniku naslednje storitve:

  1. Spletno mesto ali portal, ki uporablja WordPress.
  2. Naš forum za podporo, pogovori itd ... cela skupnost.
  3. FTP, ki uporablja bazo podatkov MySQL za shranjevanje uporabnikov in gesel.
  4. Uporabniki e-pošte so (uporabniki in gesla) shranjeni v zbirki podatkov MySQL.
  5. Majhen spletni klepet, ki ga namestimo za klepet z nekom, ki ga poznate.

In v vseh njih v petih storitvah uporabljamo korenskega uporabnika MySQL, tako da vsaka storitev dostopa do podatkov in jih shrani v ustrezno bazo podatkov.

Nekega lepega dne se kateri koli od mnogih trollov tam zunaj, vendar to ni le trol, ampak obvlada tudi nekatere podvige, ranljivosti, vdore itd. ... se odloči, da nam bo naredil kaj škodljivega.

Poiščite napako v WebChatu, ki ga uporabljamo, izkoristi to napako in uspe dostopati do datotek WebChat, vključno s konfiguracijsko datoteko WebChat, in ... v tej datoteki je očitno uporabniško ime in geslo, ki ga WebChat uporablja za dostop do strežnika MySQL. , in ugani kaj? ... Nič več in nič manj KORENNI UPORABNIK!

S pridobivanjem teh informacij lahko trol na zelo preprost način:

  1. Izbrišite nas in / ali ukradite vse, kar je povezano s spletnim mestom ali portalom, ki ga imamo (WordPress).
  2. Podatke lahko izbrišete in / ali ukradete nam IN našim uporabnikom, ki uporabljajo forum, skupnost, ki jo ustvarjamo.
  3. Lahko tudi ukradete uporabniško ime in geslo VSE uporabnikom, ki imajo e-poštni račun na našem strežniku, pa tudi podatke iz njihovih e-poštnih sporočil, se lažno predstavljate itd.
  4. In zdaj lahko končno uporabite račun na našem FTP strežniku in naložite katero koli datoteko, ki vsebuje zlonamerno programsko opremo, kar bi vam omogočilo TOTAL in ABSOLUTE nadzor nad našim strežnikom.

No ... kaj misliš? … 🙂

Ali vidite vse, kar se lahko zgodi, če ne ustvarimo neodvisnih uporabnikov za vsako bazo podatkov, ki jo imamo?

To NE pretiravamo prijatelji, to se lahko zgodi z neverjetno lahkoto ... no, vse, kar je potrebno za sprožitev katastrofe, je le napaka v nekaterih spletnih aplikacijah, ki ste jih namestili.

Zdaj ...

Kako ustvariti ločene uporabnike MySQL za vsako spletno aplikacijo?

Najprej moramo vstopiti v strežnik MySQL s korenskim uporabnikom, saj je on tisti, ki ima privilegije za ustvarjanje baz podatkov, vzpostavitev dovoljenj, ustvarjanje uporabnikov itd.:

mysql -u root -p

Ko napišejo zgornje in pritisnejo [vnesite] vprašali jih bodo za geslo korenskega uporabnika MySQL, napisali ga bodo in pritisnili [vnesite] spet vam bo takoj prikazano nekaj takega:

Zdaj bomo ustvarili bazo podatkov z imenom «webchatdb":
CREATE DATABASE webchatdb;

Opazite podpičje «;»Na koncu vrstice.

Pripravljen, bazo podatkov si že ustvaril, zdaj pa ustvariva uporabnika «uporabnik spletnega klepeta«Z geslom«geslodelputowebchat":

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

Zdaj čarovnija ... dali bomo vse privilegije (branje in pisanje) uporabnik spletnega klepeta SAMO v DB webchatdb:

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

In voila, uporabnik že ima dovoljenja v tej bazi podatkov ... zdaj je treba le še osvežiti dovoljenja za MySQL, to je, povedati MySQL, naj ponovno prebere privilegije uporabnikov, ker smo jih pravkar spremenili:

FLUSH PRIVILEGES ;

Pustim posnetek zaslona:

In to je bilo vse. S tem za vsako spletno aplikacijo, ki jo uporabljamo, zagotavljamo, da bodo v primeru kršitve ene od teh spletnih aplikacij druge varne (vsaj z vidika MySQL)

Kaj je dobra praksa? 😉

Upam, da je bilo tako koristno za vas kot zame, ker sem poskušal to razložiti čim bolj preprosto.

pozdrav


15 komentarja, pustite svojega

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Martin je dejal

    Dober prispevek KZKG, če bi bil na forumu, bi prosil za lepljivo!

    1.    KZKG ^ Gaara je dejal

      Hvala 😀

      1.    CubaRdeča je dejal

        Geslo, ki ste ga vnesli za spletni klepet, je dobro, druga stvar, ki je povezana s mysqlom, je uporaba njegovega pomnilnika

  2.   Hyuuga_Neji je dejal

    Hehehe, hvala, ker ste me opozorili na ukaze MySQL. Zdaj pa poglejmo, ali sem "dal nekaj varnosti" v strežniško bazo podatkov World of Warcraft, ki jo imam v svojem LAN-u.

  3.   sieg84 je dejal

    moje znanje o tem je nič, vendar je skoraj enako kot pri uporabi MySQL za Amarok?
    USTVARI BAZO PODATKOV amarokdb;
    DODELITE VSE PRIVILEGIJE NA amarokdb. * ZA 'amarokuser' IDENTIFICED BY 'password'; FLUSH PRIVILEGES;

    1.    KZKG ^ Gaara je dejal

      Amaroka že dolgo, dolgo nisem uporabljal, toda če uporabljate DB, ki je MySQL, bi teoretično moral delovati tudi tako.

  4.   Carlos Andres Restrepo je dejal

    Pozdravljeni, dobro bi bilo, če bi ustvarili vnos za zaščito pred spletnimi strežniki v Linuxu, mnogi od njih nimajo ustrezne zaščite in skrbnik istih ni pravilno strokovnjak, ampak le olajšajo stvari, na primer uporabo symlink v strežnikih omogoča branje konfiguracijskih datotek drugih računov na istem strežniku, saj se mnogi skrbniki tega ne zavedajo, zato se obrazci spletnih mest množijo

    pozdrav

    1.    KZKG ^ Gaara je dejal

      Živijo, kako gre
      Dobrodošli na strani 🙂

      V resnici se še zdaleč ne imam za strokovnjaka, bom pa poskušal prispevati malo znanja, ki sem ga pridobil v preteklih letih 🙂

      Druga stvar, ki jo ne počne veliko skrbnikov omrežij, je, da podeli privilegije spletnim mestom z apachejem posebej, to je uporabnikov in skupin www-data (ali podobnih), ki so za vsako spletno mesto drugačni in nato vsakega od njih postavijo v kletko.

      pozdrav

  5.   hekloper775 je dejal

    Dober namig

    pozdrav

    1.    KZKG ^ Gaara je dejal

      Hvala

  6.   nano je dejal

    SovRAŽIM videz vašega terminala, črke v ozadju me spravijo iz koncentracije. Ti si prekleto nor xD

    Zunaj tega je zanimivo, ker sem že videl patetične primere izpada storitev zaradi teh stvari.

    Zdaj, ne samo, da je odvisno od tega, varnost je v tem, kako je bila zgrajena baza podatkov, mi je razložil učitelj, vendar še nisem zelo poglobljen v DB ... morali bi se zmešati z MongoDB = D eno od teh dnevi

  7.   Carlos Colonel je dejal

    prav to se mi je danes zgodilo z najetim strežnikom

    Sledil sem vašim korakom, vstopil sem v cpanel in poiskal bazo podatkov MYSQL, ki mi pove, da ni v redu.

    Ne vem, kako zdaj vnesti pod root uporabnikom
    V tem sem neofit, toda ob branju tukaj se veliko naučiš, upam, da me boš vodil do dostopa

    1.    KZKG ^ Gaara je dejal

      Pozdravljeni 🙂
      Na voljo imate gostovanje (SharedHosting) ali VPS (navidezni strežnik)?

      Če imate gostovanje in ne VPS, morate preveriti, ali ima vaše gostovanje dostop do SSH (obrnite se na tehnično podporo podjetja, ki vam je prodalo gostovanje, in jih vprašajte, kako dostopati prek SSH), ko enkrat vstopite prek SSH, uporabnik NE bo root, vendar morate uporabiti uporabnika, ki ste ga vnesli, ko ste namestili to spletno aplikacijo.

      Pravzaprav je tvoja zapletena tema, ker je različic in možnosti takooooo veliko, priporočam, da odpreš novo temo na našem forumu, tam ti bo lažje pomagati - » http://foro.desdelinux.net

      Lep pozdrav 😀

  8.   bossbrondem je dejal

    dobro,

    Razumem, da je dobra praksa, če nobenemu uporabniku ne dodeljujemo vseh privilegijev, razen root. Ker pa sem namestil phpmyadmin, je bil ustvarjen nov uporabnik "phpmyadmin" z vsemi privilegiji. Zdi se logično, da je temu tako, saj gre le za grafično različico za upravljanje baz podatkov v MySQL. Vseeno bi se rad prepričal, ali je v redu, kakršen je, ali bi moral spremeniti privilegije uporabnika "phpmyadmin".

    Lep pozdrav in hvala!

  9.   Emmanuel je dejal

    Odlično ...
    Sem eden tistih, ki delajo vse s koreninami, toda prijatelj si mi odprl oči.
    Najlepša hvala…