Zaštitite svoje MySQL baze podataka stvaranjem zasebnih korisnika i dozvola

Uvijek sam bio prijatelj dobre prakse, još više ako nam pomažu u održavanju sigurnosti naših servera, usluga ili jednostavno naših podataka.

Navika (loša navika) koju imaju mnogi administratori ili korisnici je korištenje pristupa korijen za sve baze podataka, to jest ... oni instaliraju web lokaciju koristeći WordPress CMS, a kao pristup podacima bazi podataka (da WP koristi MySQL server i koristi njegovu DB) stavljaju korisnika administracije MySQL servera : root

Također, instaliraju bilo koju drugu web aplikaciju (chat, zalijepi, forum itd.) I rade isto, uvijek koriste matičnog korisnika MySQL-a ...

GREŠKA!!!

Ovo je jednostavno fatalna navika.

Pretpostavimo da na serveru imamo sljedeće usluge:

  1. Web lokacija ili portal koji koriste WordPress.
  2. Naš forum za podršku, razgovori itd ... cijela zajednica.
  3. FTP koji koristi MySQL bazu podataka za pohranu korisnika i lozinki.
  4. Korisnici e-pošte pohranjuju se (korisnici i lozinke) u MySQL bazu podataka.
  5. Mali WebChat koji instaliramo za čavrljanje s nekim koga poznajete.

I u svim njima, u 5 usluga koristimo osnovnog korisnika MySQL-a tako da svaka usluga pristupa i sprema podatke u odgovarajuću bazu podataka.

Jednog lijepog dana, bilo koji od mnogih trolova vani, ali ovo nije samo trol, već i savladava neke eksploatacije, ranjivosti, hakiranje itd ... odluči učiniti nešto štetno za nas.

Pronađite grešku u WebChatu koji koristimo, iskoristivši ovu grešku, on uspijeva pristupiti WebChat datotekama, uključujući datoteku za konfiguraciju WebChat, i ... u ovoj datoteci je očito korisničko ime i lozinka koje WebChat koristi za pristupiti MySQL serveru i pogodite šta? ... To je ništa više i ništa manje KORIJENI KORISNIK!

Dobivanjem ovih podataka, na vrlo jednostavan način, trol može:

  1. Izbrišite nas i / ili ukradite sve što se odnosi na web lokaciju ili portal koje imamo (WordPress).
  2. Možete obrisati i / ili ukrasti podatke od nas I od naših korisnika koji koriste Forum, zajednicu koju stvaramo.
  3. Takođe možete ukrasti korisničko ime i lozinku SVIH korisnika koji imaju račun e-pošte na našem serveru, kao i podatke iz njihove e-pošte, lažno se predstavljati itd.
  4. I konačno, možete koristiti račun na našem FTP serveru i prenijeti bilo koju datoteku koja sadrži zlonamjerni softver, što bi vam omogućilo da preuzmete UKUPNU i APSOLUTNU kontrolu nad našim serverom.

Pa ... šta ti misliš? … 🙂

Vidite li sve što se može dogoditi samo ne stvaranjem neovisnih korisnika za svaku bazu podataka koju imamo?

Ovo NIJE pretjerivanje, prijatelji, to se može dogoditi s nevjerovatnom lakoćom ... pa, sve što je potrebno za oslobađanje katastrofe je samo greška u nekim web aplikacijama koje ste instalirali.

Sad…

Kako stvoriti zasebne MySQL korisnike za svaku web aplikaciju?

Prvo moramo ući u MySQL server s root korisnikom, jer on ima privilegiju za stvaranje baza podataka, uspostavljanje dozvola, kreiranje korisnika itd.:

mysql -u root -p

Kada napišu gornje i pritisnu [unesite] od njih će se tražiti lozinka MySQL root korisnika, oni je napišu i pritisnu [unesite] opet, odmah će vam biti prikazano nešto poput ovog:

Sada ćemo stvoriti bazu podataka pod nazivom «webchatdb":
CREATE DATABASE webchatdb;

Primijetite tačku i zarez «;»Na kraju reda.

Spremni, već ste kreirali bazu podataka, sada kreirajmo korisnika «webchatuser«Sa lozinkom«passworddelputowebchat":

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

Sad je magija ... dat ćemo sve privilegije (čitati i pisati) webchatuser SAMO u DB-u webchatdb:

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

I voila, korisnik već ima dozvole u toj bazi podataka ... sada ostaje samo osvježiti dozvole za MySQL, odnosno reći MySQL-u da ponovno pročita privilegije korisnika, jer smo upravo napravili promjenu u njima:

FLUSH PRIVILEGES ;

Ostavljam vam snimak zaslona:

I ovo je bilo sve. Radeći to za svaku web aplikaciju koju koristimo, garantiramo da će u slučaju da uspiju prekršiti jednu od tih web aplikacija, ostale biti sigurne (barem s gledišta MySQL)

Šta je dobra praksa? 😉

Nadam se da je i vama bilo korisno kao i meni jer sam to pokušao objasniti najjednostavnije što sam mogao.

Saludos


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Martin rekao je

    Dobar post KZKG, da je na forumu tražio bih ljepljivu!

    1.    KZKG ^ Gaara rekao je

      Hvala 😀

      1.    CubaRed rekao je

        Lozinka koju ste stavili za webchat je dobra, još jedna stvar koja ima veze s mysqlom je upotreba njegove memorije

  2.   Hyuuga_Neji rekao je

    Hehehe, hvala što ste me podsjetili na MySQL naredbe. Sad da vidimo da li sam "stavio malo sigurnosti" na World of Warcraft serversku bazu podataka koju imam na svom LAN-u.

  3.   sieg84 rekao je

    moje znanje o tome je nikakvo, ali je gotovo isto kao kada se koristi MySQL za Amarok?
    STVARI BAZU PODATAKA amarokdb;
    DODATI SVE PRIVILEGIJE NA amarokdb. * ZA 'amarokuser' IDENTIFIKIRANO 'lozinkom'; FLUSH PRIVILEGES;

    1.    KZKG ^ Gaara rekao je

      Nisam koristio Amarok dugo, dugo, ali ako koristite DB koji je MySQL, u teoriji bi i on trebao tako funkcionirati.

  4.   Carlos Andres Restrepo rekao je

    Pozdrav, bilo bi dobro da stvorite unos za zaštitu od web servera u Linuxu, mnogi od njih nemaju odgovarajuću sigurnost, a administrator istih nije pravilno stručnjak, oni samo olakšavaju stvari, na primjer upotreba symlink-a na serverima omogućava čitajući konfiguracijske datoteke drugih računa na istom serveru mnogi administratori toga nisu svjesni i zato se defaceovi web stranica šire

    Saludos

    1.    KZKG ^ Gaara rekao je

      Zdravo, kako ide
      Dobrodošli na stranicu 🙂

      Zapravo se ne smatram stručnjakom za ovo pitanje, ali pokušat ću dati malo znanja koje sam stekao godinama 🙂

      Još jedna stvar koju ne rade mnogi mrežni administratori je davanje privilegija web lokacijama sa apacheom pojedinačno, to jest, korisničkim i grupnim www-podacima (ili sličnim), koji su različiti za svaku web lokaciju, a zauzvrat su kavezi svaki od ovih.

      Saludos

  5.   hackloper775 rekao je

    Dobar savjet

    Saludos

    1.    KZKG ^ Gaara rekao je

      Hvala

  6.   nano rekao je

    MRZIM izgled vašeg terminala, pozadinska slova me izvlače iz koncentracije. Ti si jebeno ludi xD

    Izvan toga, zanimljivo je jer sam vidio patetične slučajeve prekida usluge zbog tih stvari.

    Sad, ne samo da to ovisi o tome, sigurnost leži u tome kako je baza podataka izgrađena, objasnio mi je učitelj, ali još nisam previše uronjen u DB ... jednog dana bismo se trebali zezati s MongoDB = D

  7.   Carlos Colonel rekao je

    upravo mi se to danas dogodilo sa mojim unajmljenim serverom

    Slijedio sam vaše korake, ušao sam u cpanel i potražio MYSQL bazu podataka i ona mi govori da nije u redu.

    Ne znam kako sada ući pod root korisnika
    Ja sam neofit u tome, ali čitajući ovdje naučite mnogo, nadam se da ćete me uputiti da pristupim

    1.    KZKG ^ Gaara rekao je

      Pozdrav 🙂
      Ono što imate je hosting (SharedHosting) ili VPS (virtualni server)?

      Ako imate hosting, a ne VPS, trebali biste vidjeti ima li vaš hosting SSH pristup (kontaktirajte tehničku podršku kompanije koja vam je prodala hosting i pitajte ih kako da pristupe putem SSH-a), nakon što uđete putem SSH-a, korisnik NEĆE biti root, ali morate koristiti korisnika kojeg ste unijeli kada ste instalirali tu web aplikaciju.

      Zapravo je vaša složena tema, jer je varijanti i mogućnosti jako puno, preporučujem vam da otvorite novu temu na našem forumu, tamo će vam biti ugodnije pomoći - » http://foro.desdelinux.net

      Pozdrav 😀

  8.   bossbrondem rekao je

    Dobro,

    Razumijem da je dobra praksa ne davati sve privilegije bilo kojem korisniku osim root-a. Međutim, otkako sam instalirao phpmyadmin, stvoren je novi korisnik "phpmyadmin" sa svim privilegijama. Čini se logičnim da je to slučaj, jer je to samo grafička verzija za upravljanje bazama podataka u MySQL-u. U svakom slučaju želio bih biti siguran da li je u redu kakav jest ili bih trebao izvršiti neke izmjene u privilegijama korisnika "phpmyadmin".

    Pozdrav i hvala!

  9.   Emmanuel rekao je

    Izvrsno…
    Ja sam jedan od onih koji sve rade s root-om, ali otvorio si mi oči, prijatelju ..
    Hvala puno…