Mantingues la seguretat de les teves bases de dades MySQL creant usuaris i permisos separats

Sempre he estat amic de les bones pràctiques, molt més si aquestes ens ajuden a mantenir la seguretat dels nostres servidors, serveis, o simplement la nostra informació.

Un costum (mal costum) que tenen molts administradors o usuaris és utilitzar l'accés amb root per a totes les bases de dades, és a dir ... instal·len un lloc usant el CMS WordPress, i com a dades d'accés a la base de dades (perquè WP utilitzeu el servidor MySQL i utilitzi el seu DB) li posen l'usuari d'administració de servidor MySQL : root

També, instal·len qualsevol altra aplicació web (XNUMX xat, paste, fòrum, etc.) i fan el mateix, sempre usen l'usuari root de MySQL ...

ERROR !!!

Això és simplement un costum fatal.

Suposem que tenim els següents serveis en un servidor:

  1. Un lloc o portal fent servir WordPress.
  2. El nostre Fòrum de suport, xerrades, etc ... tota una comunitat.
  3. Un FTP que utilitza una base de dades MySQL per guardar els usuaris i contrasenyes.
  4. Els usuaris de correu electrònic s'emmagatzemen (usuaris i passwords) en una base de dades MySQL.
  5. Un petit Webchat que instal·lem per xerrar amb algun conegut.

I en tots, en els 5 serveis fem servir l'usuari root de MySQL perquè cada servei accedeixi i guardi les dades a la base de dades corresponent.

Un bon dia qualsevol troll dels tants que hi ha per la xarxa, però aquest no solament és un troll, sinó que també domina una mica de gestes, vulnerabilitats, hacking, etc ... decideix fer-nos alguna cosa perjudicial.

Troba un error en el Webchat que estem fent servir, aprofitant-se de aquest error aconsegueix tenir accés a arxius de l'Webchat, entre ells el fitxer de configuració de l'Webchat, i ... en aquest arxiu com és obvi, està l'usuari i password que utilitza el webchat per accedir a l'server MySQL, i endevinin què? ... és ni més ni menys l'USUARI ROOT!

A el fer-se amb aquesta informació, de forma molt simple el troll pot:

  1. Esborrar-nos i / o robar-nos tot el referent a el lloc o portal que tenim (el de WordPress).
  2. Pot esborrar-nos i / o robar-nos informació a nosaltres I als nostres usuaris que usen el Fòrum, la comunitat que creem.
  3. També podrà robar l'usuari i password de TOTS els usuaris que tinguin un compte de correu electrònic al nostre servidor, així com robar-li la informació dels seus correus electrònics, suplantar identitat, etc.
  4. I ara finalment, pot utilitzar un compte del nostre servidor FTP, i pujar qualsevol arxiu que contingui malware, la qual cosa li permetria fer-se amb el control TOTAL i ABSOLUT del nostre servidor.

Bé ... què creuen? ... 🙂

Veuen tot el que pot succeir només per no crear usuaris independents per a cada base de dades que tinguem?

Això NO és una exageració amics / es, això pot succeir amb una facilitat sorprenent ... doncs, tot el que es necessita per desencadenar la catàstrofe, és només un error en alguna de les aplicacions webs que tinguin instal·lades.

Ara ...

Com crear usuaris independents de MySQL per a cada aplicació web?

Primer hem d'entrar a l'servidor MySQL amb l'usuari root, ja que ell és qui té els privilegis per a crear bases de dades, establir permisos, crear usuaris, etc:

mysql -u root -p

Quan escriguin el de dalt i pressionin [Entrar] se'ls demanarà el password de l'usuari root de MySQL, l'escriuen i pressionen [Entrar] de nou, se'ls mostrarà a el moment alguna cosa com això:

Ara crearem una base de dades amb nom «webchatdb":
CREATE DATABASE webchatdb;

Notin el punt i coma «;»A la fi de la línia.

A punt, ja tenen creada la base de dades, ara passem a crear l'usuari «webchatuser«Amb el password«passworddelputowebchat":

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

Ara la màgia ... li donarem tots els privilegis (lectura i escriptura) a webchatuser NOMÉS a la DB webchatdb:

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

I ja està, ja l'usuari té els permisos en aquesta base de dades ... ara només queda refrescar els permisos a MySQL, és a dir, indicar-li a MySQL que torni a llegir els privilegis dels usuaris ja que nosaltres acabem de fer un canvi en ells:

FLUSH PRIVILEGES ;

Els deixo un screenshot:

I això ja és tot. Fent això per a cada aplicació web que usem, garantim que en cas que aconsegueixin vulnerar una d'aquestes aplicacions webs, les altres estaran fora de perill (al menys des del punt de vista de MySQL)

¿A que és una bona pràctica? 😉

Espero els hagi estat tan útil com m'ho és a mi, ja que vaig intentar explicar-ho de manera tan simple com vaig poder.

Salutacions


15 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Martin va dir

    Bon post KZKG, si fos al fòrum demanaria un sticky!

    1.    KZKG ^ Gaara va dir

      gràcies 😀

      1.    CubaRed va dir

        Aquesta bona la contrasenya que pusistes per al webchat, una altra cosa que té a veure amb el mysql és l'ús de la memòria de la mateixa

  2.   Hyuuga_Neji va dir

    Jejeje ja gràcies per recordar-me les ordres de l'MySQL ara veurem si «li poso una mica de seguretat» a les BD de servidor de World of Warcraft que tinc al meu LAN.

  3.   sieg84 va dir

    els meus coneixements en això són nuls, però és gairebé el mateix per a quan es fa servir MySQL per Amarok ¿?
    CREATE DATABASE amarokdb;
    GRANT ALL PRIVILEGES ON amarokdb. * TO 'amarokuser' identified BY 'contrasenya'; FLUSH PRIVILEGES;

    1.    KZKG ^ Gaara va dir

      Fa molt, moltíssim que no ús Amarok, però si usa una DB que és MySQL, en teoria hauria de funcionar així també.

  4.   Carlos Andrés Restrepo va dir

    Hola fora bo que creessis una entrada per a la seguretat contra els servidors web a linux molts d'ells no tenen la deguda seguretat i l'administrador de la mateixa no és pròpiament un expert només els faciliten les coses, per exemple l'ús de symlink en els servidors permet llegir els arxius de configuració d'altres comptes en el mateix server molts administradors desconeixen això i és per això que proliferen els deface de llocs web

    Salutacions

    1.    KZKG ^ Gaara va dir

      Hola que tal,
      Benvingut a el lloc 🙂

      En realitat no em considero ni de lluny un expert en aquesta matèria, però intentaré aportar els pocs coneixements que he anat adquirint al llarg dels anys 🙂

      Una altra cosa que no molts administradors de xarxa fan, és donar privilegis als llocs amb apatxe de forma individual, és a dir, l'usuari i grup www-data (o similars), que sigui un de diferent per a cada lloc, i al seu torn engabiar cada un d'aquests.

      Salutacions

  5.   hackloper775 va dir

    bon tip

    Salutacions

    1.    KZKG ^ Gaara va dir

      gràcies

  6.   nano va dir

    Detesto l'aspecte de la teva terminal, les lletres de fons em treuen de la meva concentració. Ets un puto boig xD

    Fora d'això, és interessant perquè he vist casos patètics de caigudes de servei per aquestes coses.

    Ara bé, no només depèn d'això, la seguretat rau en com es va construir la base de dades, m'explicava un professor, però tampoc estic molt submergit encara en les BD ... hauríem trastejar un d'aquests dies amb MongoDB = D

  7.   Carlos Coronel va dir

    m'ha passat justament això avui amb el meu servidor llogat

    vaig seguir els teus passos, vaig entrar a l'cpanel i busqui la base de dades de MYSQL i em diu que està fora de servei.

    no sé com entrar ara sota el usuari root
    sóc neòfit en això, però llegint aquí s'aprèn molt, espero em orientis per accedir

    1.    KZKG ^ Gaara va dir

      Hola 🙂
      ¿El que tens és un Hosting (SharedHosting) o un VPS (servidor virtual)?

      Si tens un Hosting i no un VPS, llavors has de veure si el teu Hosting té accés SSH (contacteu el suport tècnic de l'empresa que et va vendre el hosting i els preguntes com accedir via SSH), Una vegada que entris per SSH, l'usuari NO serà root, sinó que has de fer servir l'usuari que vas posar quan vas instal·lar aquesta aplicació web.

      En realitat és un tema complicat el teu, ja que les variants i possibilitats són mooooltes, et recomano que obris un tema nou en el nostre fòrum, aquí serà més còmode ajudar-te - » http://foro.desdelinux.net

      Salutacions 😀

  8.   capbrondem va dir

    bones,

    Tinc entès que és bona pràctica no donar-li tots els privilegis a cap usuari excepte root. No obstant això, des que vaig instal·lar phpmyadmin s'ha creat un nou usuari «phpmyadmin» amb tots els privilegis. Sembla lògic que sigui així, ja que només es tracta d'una versió gràfica per administrar les bases de dades en MySQL. De tota manera m'agradaria assegurar-me si està bé tal com està o hauria de fer alguna modificació en els privilegis de l'usuari «phpmyadmin».

    Una salutació i gràcies!

  9.   Emmanuel va dir

    Excel·lent ...
    sóc dels que fan tot amb el root, però has obert els ulls amic ..
    moltes gràcies ...