Hold dine MySQL-databaser sikre ved at oprette separate brugere og tilladelser

Jeg har altid været ven med god praksis, meget mere, hvis de hjælper os med at opretholde sikkerheden på vores servere, tjenester eller simpelthen vores oplysninger.

En vane (dårlig vane), som mange administratorer eller brugere har, er at bruge adgang med rod for alle databaser, det vil sige ... de installerer et websted ved hjælp af WordPress CMS, og som adgangsdata til databasen (for WP at bruge MySQL-serveren og bruge dens DB) sætter de MySQL-serveradministrationsbrugeren: root

De installerer også enhver anden webapplikation (en chat, indsæt, forum osv.) Og gør det samme, de bruger altid rodbrugeren af ​​MySQL ...

FEJL!!!

Dette er simpelthen en fatal vane.

Antag, at vi har følgende tjenester på en server:

  1. Et websted eller en portal, der bruger WordPress.
  2. Vores supportforum, samtaler osv ... et helt samfund.
  3. En FTP, der bruger en MySQL-database til at gemme brugere og adgangskoder.
  4. E-mail-brugerne gemmes (brugere og adgangskoder) i en MySQL-database.
  5. Et lille WebChat, som vi installerer for at chatte med nogen, du kender.

Og i dem alle bruger vi i de 5 tjenester MySQL-rootbrugeren, så hver tjeneste får adgang til og gemmer dataene i den tilsvarende database.

En smuk dag trækker nogen af ​​de mange derude derude, men dette er ikke kun et trold, men det mestrer også nogle udnyttelser, sårbarheder, hacking osv ... beslutter at gøre noget skadeligt for os.

Find en fejl i WebChat, som vi bruger, og udnyt denne fejl, den formår at få adgang til WebChat-filer, inklusive WebChat-konfigurationsfilen, og ... i denne fil er det naturligvis brugernavnet og adgangskoden, som WebChat bruger til at få adgang til MySQL-server, og gæt hvad? ... Det er intet mere og intet mindre ROOT USER!

Ved at få disse oplysninger på en meget enkel måde kan troldet:

  1. Slet os og / eller stjæl alt relateret til det websted eller portal, vi har (WordPress).
  2. Du kan slette og / eller stjæle oplysninger fra os OG fra vores brugere, der bruger forummet, det samfund, vi opretter.
  3. Du kan også stjæle brugernavnet og adgangskoden til ALLE brugere, der har en e-mail-konto på vores server, samt stjæle oplysningerne fra deres e-mails, efterligne osv.
  4. Og nu, endelig, kan du bruge en konto på vores FTP-server og uploade enhver fil, der indeholder malware, som giver dig mulighed for at tage TOTAL og ABSOLUT kontrol over vores server.

Nå ... hvad synes du? … 🙂

Ser du alt, hvad der kan ske, bare ved ikke at oprette uafhængige brugere til hver database, vi har?

Dette er IKKE en overdrivelse venner, dette kan ske med forbløffende lethed ... alt hvad der er nødvendigt for at frigøre katastrofen er bare en fejl i nogle af de webapplikationer, du har installeret.

Nu…

Hvordan oprettes separate MySQL-brugere til hver webapplikation?

Først skal vi gå ind i MySQL-serveren med rodbrugeren, da det er ham, der har privilegierne til at oprette databaser, etablere tilladelser, oprette brugere osv .:

mysql -u root -p

Når de skriver ovenstående og trykker på [Gå ind] De bliver bedt om adgangskoden til MySQL-rodbrugeren, de skriver det og trykker på [Gå ind] igen vil du straks blive vist noget som dette:

Nu opretter vi en database med navnet «webchatdb":
CREATE DATABASE webchatdb;

Bemærk semikolonet «;»I slutningen af ​​linjen.

Klar, du har allerede oprettet databasen, lad os nu oprette brugeren «webchatbruger«Med adgangskoden«passworddelputowchat":

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

Nu magien ... vi vil give alle privilegier (læs og skriv) til webchatbruger KUN i DB webchatdb:

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

Og voila, brugeren har allerede tilladelserne i den database ... nu er det kun at opdatere tilladelserne til MySQL, det vil sige fortæl MySQL at genlæse brugernes privilegier, fordi vi lige har foretaget en ændring i dem:

FLUSH PRIVILEGES ;

Jeg efterlader et screenshot:

Og dette har været alt. Ved at gøre dette for hver webapplikation, vi bruger, garanterer vi, at hvis de formår at bryde en af ​​disse webapplikationer, vil de andre være sikre (i det mindste fra MySQL-synspunkt)

Hvad er god praksis? 😉

Jeg håber, det har været så nyttigt for dig som det er for mig, fordi jeg forsøgte at forklare det så simpelt som jeg kunne.

hilsen


15 kommentarer, lad dine

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Martin sagde han

    Godt indlæg KZKG, hvis det var i forummet, ville jeg bede om en klæbrig!

    1.    KZKG ^ Gaara sagde han

      Tak 😀

      1.    CubaRød sagde han

        Den adgangskode, du har sat til webchat, er god, en anden ting, der har at gøre med mysql, er brugen af ​​dens hukommelse

  2.   Hyuuga_Neji sagde han

    Hehehe, tak for at minde mig om MySQL-kommandoerne. Lad os nu se, om "jeg sætter en vis sikkerhed" på World of Warcraft-serverdatabasen, som jeg har på mit LAN.

  3.   sieg84 sagde han

    min viden om dette er nul, men det er næsten det samme, når jeg bruger MySQL til Amarok?
    OPRET DATABASE amarokdb;
    TILGIV ALLE PRIVILEGIER PÅ amarokdb. * TIL 'amarokuser' IDENTIFICERET MED 'adgangskode'; FLUSH PRIVILEGES;

    1.    KZKG ^ Gaara sagde han

      Jeg har ikke brugt Amarok i lang, lang tid, men hvis du bruger en DB, der er MySQL, skal det i teorien også fungere på den måde.

  4.   Carlos Andres Restrepo sagde han

    Hej, det ville være godt, hvis du oprettede en post til sikkerhed mod webservere i Linux, mange af dem har ikke den rette sikkerhed, og administratoren af ​​den samme er ikke korrekt en ekspert, de letter kun ting, for eksempel brugen af symlink på serverne gør det muligt at læse konfigurationsfilerne på andre konti på den samme server, mange administratorer er ikke opmærksomme på dette, og det er derfor, webstedsdefaces spredes

    hilsen

    1.    KZKG ^ Gaara sagde han

      Hej hvordan går det
      Velkommen til siden 🙂

      Faktisk betragter jeg mig ikke som en ekspert i denne sag, men jeg vil forsøge at bidrage med den lille viden, jeg har tilegnet mig gennem årene 🙂

      En anden ting, som ikke mange netværksadministratorer gør, er at give privilegier til websteder med apache individuelt, det vil sige brugeren og gruppen www-data (eller lignende), som er forskellig for hvert websted, og til gengæld bur hver af disse .

      hilsen

  5.   hackloper775 sagde han

    Godt tip

    hilsen

    1.    KZKG ^ Gaara sagde han

      Tak

  6.   nano sagde han

    Jeg HADER udseendet på din terminal, baggrundsbogstaverne tager mig ud af min koncentration. Du er en skide skør xD

    Uden for det er det interessant, fordi jeg har set patetiske tilfælde af serviceafbrydelser fra disse ting.

    Nu afhænger det ikke kun af det, sikkerheden ligger i, hvordan databasen blev bygget, forklarede en lærer for mig, men jeg er ikke meget nedsænket endnu i DB ... vi skal rode med MongoDB = D en af ​​disse dage

  7.   Carlos oberst sagde han

    netop det skete mig i dag med min lejede server

    Jeg fulgte dine trin, jeg gik til cpanel og ledte efter MYSQL-databasen, og den fortæller mig, at den er ude af drift.

    Jeg ved ikke, hvordan jeg skal gå ind nu under rodbrugeren
    Jeg er en neofyt i dette, men når du læser her, lærer du meget, jeg håber du leder mig til adgang

    1.    KZKG ^ Gaara sagde han

      Hej 🙂
      Hvad du har er en Hosting (SharedHosting) eller en VPS (virtuel server)?

      Hvis du har en hosting og ikke en VPS, skal du se, om din hosting har SSH-adgang (kontakt den tekniske support fra det firma, der solgte dig hosting, og spørg dem, hvordan de får adgang via SSH), når du først er kommet ind gennem SSH, vil brugeren IKKE være root, men du skal bruge den bruger, du indtastede, da du installerede det webapplikation.

      Faktisk er dit et kompliceret emne, fordi varianterne og mulighederne er såååå mange, jeg anbefaler, at du åbner et nyt emne i vores forum, der vil det være mere behageligt at hjælpe dig - » http://foro.desdelinux.net

      Hilsner 😀

  8.   bossbrondem sagde han

    god,

    Jeg forstår, at det er god praksis ikke at give alle rettigheder til nogen bruger undtagen root. Men siden jeg installerede phpmyadmin, er der oprettet en ny bruger "phpmyadmin" med alle privilegier. Det virker logisk, at dette er tilfældet, da det kun er en grafisk version at administrere databaser i MySQL. Under alle omstændigheder vil jeg gerne sikre mig, om det er fint, som det er, eller skal jeg foretage nogle ændringer i brugerens "phpmyadmin" privilegier.

    Hilsner og tak!

  9.   Emmanuel sagde han

    Fremragende ...
    Jeg er en af ​​dem, der gør alt med rod, men du har åbnet mine øjne ven ..
    Mange tak…