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

Uvijek sam bio prijatelj dobrih praksi, puno više ako nam pomažu u održavanju sigurnosti naših poslužitelja, usluga ili jednostavno naših podataka.

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

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

POGREŠKA !!!

Ovo je jednostavno kobna navika.

Pretpostavimo da na poslužitelju imamo sljedeće usluge:

  1. Web mjesto ili portal koji koristi 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 korijenskog 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ć svladava i 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, uspijeva pristupiti datotekama WebChat-a, uključujući konfiguracijsku datoteku WebChat-a, i ... u ovoj je datoteci očito korisničko ime i lozinka koje WebChat koristi za pristup MySQL poslužitelj, i pogodite što? ... To je ništa više i ništa manje KORIJENSKI 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 mjesto ili portal koje imamo (WordPress).
  2. Možete brisati i / ili krasti podatke od nas I od naših korisnika koji koriste Forum, zajednicu koju stvaramo.
  3. Također možete ukrasti korisničko ime i lozinku SVIH korisnika koji imaju račun e-pošte na našem poslužitelju, 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 poslužitelju i prenijeti bilo koju datoteku koja sadrži zlonamjerni softver koji će vam omogućiti da preuzmete UKUPNU i APSOLUTNU kontrolu nad našim poslužiteljem.

Pa ... što 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 nevjerojatnom lakoćom ... pa, sve što je potrebno za pokretanje katastrofe je samo greška u nekim web aplikacijama koje ste instalirali.

Sada…

Kako stvoriti zasebne MySQL korisnike za svaku web aplikaciju?

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

mysql -u root -p

Kad napišu gornje i pritisnu [Unesi] Tražit će se lozinka korijenskog korisnika MySQL-a, upišu je i pritisnu [Unesi] opet, odmah će vam biti prikazano nešto poput ovoga: Sada ćemo stvoriti bazu podataka pod nazivom «webchatdb„:
CREATE DATABASE webchatdb;

Primijetite točku sa zarezom «;»Na kraju retka.

Spremni, već ste stvorili bazu podataka, idemo sada na stvaranje korisnika «webchatuser«S lozinkom«lozinkadelputowebchat„:

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 u njih upravo promijenili:

FLUSH PRIVILEGES ;

Ostavljam snimku zaslona: I ovo je bilo sve. Čineć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)

Što je dobra praksa? 😉

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

pozdravi


Sadržaj članka pridržava se naših načela urednička etika. Da biste prijavili pogrešku, kliknite ovdje.

15 komentara, ostavi svoj

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   bregunica dijo

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

    1.    KZKG ^ Gaara dijo

      Hvala 😀

      1.    CubaRed dijo

        Lozinka koju ste postavili za webchat je dobra, još jedna stvar koja ima veze s mysqlom je korištenje njegove memorije

  2.   Hyuuga_Neji dijo

    Hehehe, hvala što ste me podsjetili na MySQL naredbe. Pogledajmo sada "stavljam li sigurnost" na World of Warcraft poslužiteljsku bazu podataka koju imam na svom LAN-u.

  3.   sieg84 dijo

    moje znanje o tome je nikakvo, ali gotovo je isto za korištenje MySQL-a za Amarok?
    IZRADI BAZU PODATAKA amarokdb;
    DODATI SVE PRIVILEGIJE NA amarokdb. * 'Amarokuser' IDENTIFICIRAN PO 'lozinci'; FLUSH PRIVILEGES;

    1.    KZKG ^ Gaara dijo

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

  4.   Carlos Andrés Restrepo dijo

    Pozdrav, bilo bi dobro da stvorite unos za zaštitu od web poslužitelja u Linuxu, mnogi od njih nemaju odgovarajuću sigurnost, a administrator istih nije stručnjak, oni samo olakšavaju stvari, na primjer upotrebu symlink na poslužiteljima omogućuje čitanje konfiguracijskih datoteka drugih računa na istom poslužitelju, mnogi administratori toga nisu svjesni i zato se deface web stranica umnožava

    pozdravi

    1.    KZKG ^ Gaara dijo

      Bok, kako si,
      Dobrodošli na stranicu 🙂

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

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

      pozdravi

  5.   hackloper775 dijo

    Dobar savjet

    pozdravi

    1.    KZKG ^ Gaara dijo

      Hvala ti

  6.   nano dijo

    MRZIM izgled vašeg terminala, pozadinska slova izvlače me 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 jako uronjen u DB ... trebali bismo se zezati s MongoDB = D jedan od ovih dana

  7.   Carlos pukovnik dijo

    upravo mi se to danas dogodilo s mojim unajmljenim serverom

    Slijedio sam vaše korake, otišao sam na 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 u tome neofit, ali čitajući ovdje naučite puno, nadam se da ćete me uputiti da pristupim

    1.    KZKG ^ Gaara dijo

      Pozdrav 🙂
      Ono što imate je hosting (SharedHosting) ili VPS (virtualni poslužitelj)?

      Ako imate hosting, a ne VPS, trebali biste vidjeti ima li vaš hosting SSH pristup (kontaktirajte tehničku podršku tvrtke koja vam je prodala hosting i pitajte ih kako pristupiti 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 komplicirana tema, jer je inačica i mogućnosti jako puno, preporučujem da otvorite novu temu na našem forumu, tamo će vam biti ugodnije pomoći - » http://foro.desdelinux.net

      Pozdrav 😀

  8.   bossbrondem dijo

    dobar,

    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 bi to trebao biti slučaj, jer je to samo grafička verzija za upravljanje bazama podataka u MySQL-u. U svakom slučaju, želio bih se uvjeriti je li u redu kakav jest ili bih li trebao izvršiti neke izmjene u privilegijama korisnika "phpmyadmin".

    Pozdrav i hvala!

  9.   Emmanuel dijo

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