Udržujte své databáze MySQL v bezpečí vytvořením samostatných uživatelů a oprávnění

Vždy jsem byl přítelem osvědčených postupů, mnohem více, pokud nám pomohou udržet bezpečnost našich serverů, služeb nebo jednoduše našich informací.

Zvyk (špatný zvyk), který má mnoho správců nebo uživatelů, je používat přístup kořen pro všechny databáze, to znamená ... instalují web pomocí WordPress CMS a jako přístupová data do databáze (pro WP pro použití serveru MySQL a použití jeho databáze) umístí administrátora serveru MySQL: root

Také instalují jakoukoli jinou webovou aplikaci (chat, paste, forum atd.) A dělají totéž, vždy používají root uživatele MySQL ...

CHYBA!!!

To je prostě osudový zvyk.

Předpokládejme, že máme na serveru následující služby:

  1. Web nebo portál využívající WordPress.
  2. Naše fórum podpory, rozhovory atd ... celá komunita.
  3. FTP, který k ukládání uživatelů a hesel používá databázi MySQL.
  4. Uživatelé e-mailu jsou uloženi (uživatelé a hesla) v databázi MySQL.
  5. Malý WebChat, který instalujeme, abychom mohli chatovat s někým, koho znáte.

A ve všech z těchto 5 služeb používáme uživatele root MySQL, takže každá služba přistupuje a ukládá data do odpovídající databáze.

Jednoho krásného dne se kdokoli z mnoha trolů venku, ale nejedná se pouze o trolla, ale také ovládá některé exploity, zranitelnosti, hackování atd ... rozhodne se udělat něco škodlivého pro nás.

Najděte chybu ve WebChatu, který používáme, s využitím této chyby se mu podaří získat přístup k souborům WebChat, včetně konfiguračního souboru WebChat, a… v tomto souboru je samozřejmě uživatelské jméno a heslo, které WebChat používá pro přístup k MySQL server a hádejte co? … Není to nic víc a nic méně KOŘENOVÝ UŽIVATEL!

Získáním těchto informací může velmi jednoduchým způsobem troll:

  1. Smažte nás nebo ukradněte vše, co souvisí s webem nebo portálem, který máme (WordPress).
  2. Můžete nám smazat a / nebo ukrást informace A od našich uživatelů, kteří používají fórum, komunitu, kterou vytváříme.
  3. Můžete také ukrást uživatelské jméno a heslo VŠECH uživatelů, kteří mají na našem serveru e-mailový účet, a také ukrást informace z jejich e-mailů, vydávat se za jiné atd.
  4. A teď konečně můžete použít účet na našem FTP serveru a nahrát jakýkoli soubor obsahující malware, který vám umožní získat ABSOLUTNÍ a TOTÁLNÍ kontrolu nad naším serverem.

No ... co si myslíš? … 🙂

Vidíte vše, co se může stát, když nevytvoříte nezávislé uživatele pro každou databázi, kterou máme?

To NENÍ přehnané, přátelé, toto se může stát s úžasnou lehkostí ... no, vše, co je potřeba k rozpoutání katastrofy, je jen chyba v některých webových aplikacích, které jste nainstalovali.

Nyní…

Jak vytvořit samostatné uživatele MySQL pro každou webovou aplikaci?

Nejprve musíme vstoupit na server MySQL s uživatelem root, protože on je ten, kdo má oprávnění k vytváření databází, vytváření oprávnění, vytváření uživatelů atd .:

mysql -u root -p

Když napíšou výše a stisknou [Enter] Budou požádáni o heslo uživatele root MySQL, zadají jej a stisknou [Enter] opět se vám okamžitě zobrazí něco jako toto:

Nyní vytvoříme databázi s názvem «webchatdb„:
CREATE DATABASE webchatdb;

Všimněte si středníku «;»Na konci řádku.

Připraveno, databázi jste již vytvořili, nyní vytvořme uživatele «webchatuser«S heslem«heslodelputowebchat„:

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

Nyní kouzlo ... dáme všechna oprávnění (čtení a zápis) webchatuser POUZE v DB webchatdb:

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

A voila, uživatel již má oprávnění v této databázi ... nyní zbývá pouze obnovit oprávnění k MySQL, to znamená, říct MySQL, aby znovu přečetl oprávnění uživatelů, protože jsme v nich právě provedli změnu:

FLUSH PRIVILEGES ;

Nechám vám screenshot:

A toto bylo všechno. Tím, že to uděláme pro každou webovou aplikaci, kterou používáme, zaručujeme, že v případě, že se jim podaří některou z těchto webových aplikací porušit, ostatní budou v bezpečí (alespoň z pohledu MySQL)

Co je to osvědčený postup? 😉

Doufám, že to pro vás bylo stejně užitečné jako pro mě, protože jsem se to snažil vysvětlit co nejjednodušeji.

pozdravy


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Martin řekl

    Dobrý příspěvek KZKG, pokud by byl ve fóru, požádal bych o lepkavý!

    1.    KZKG ^ Gaara řekl

      Díky 😀

      1.    KubaČervená řekl

        Heslo, které zadáte pro webchat, je dobré, další věc, která má co do činění s mysql, je použití jeho paměti

  2.   Hyuuga_neji řekl

    Hehehe, děkuji za připomenutí příkazů MySQL. Nyní se podívejme, jestli „vložil jsem nějaké zabezpečení“ do databáze serverů World of Warcraft, kterou mám ve své LAN.

  3.   sieg84 řekl

    moje znalosti o tom jsou nulové, ale jsou téměř stejné pro použití MySQL pro Amarok?
    VYTVOŘIT DATABÁZE amarokdb;
    UDĚLTE VŠECHNY VÝSADY NA amarokdb. * „Amarokuser“ IDENTIFIKOVANÉM „heslem“; VÝPLATNÉ PRIVILEGY;

    1.    KZKG ^ Gaara řekl

      Amarok jsem nepoužíval dlouho, dlouho, ale pokud používáte DB, který je MySQL, teoreticky by to mělo fungovat také.

  4.   Carlos Andres Restrepo řekl

    Dobrý den, bylo by dobré, kdybyste vytvořili položku pro zabezpečení proti webovým serverům v systému Linux, mnoho z nich nemá správné zabezpečení a jejich správce není řádně odborníkem, pouze usnadňují věci, například použití symbolického odkazu na serverech umožňuje čtení konfiguračních souborů jiných účtů na stejném serveru mnoho administrátorů o tom neví, a proto se množí omezení webových stránek

    pozdravy

    1.    KZKG ^ Gaara řekl

      Dobrý den,
      Vítejte na stránkách 🙂

      Vlastně se v této věci zdaleka nepovažuji za odborníka, ale pokusím se přispět malou znalostí, kterou jsem v průběhu let získával 🙂

      Další věc, kterou ne mnoho správců sítě dělá, je udělit oprávnění webům s apache individuálně, to znamená uživatelská a skupinová data www (nebo podobná), která jsou pro každý web odlišná, a následně ukládat do klecí každý z nich .

      pozdravy

  5.   hackloper775 řekl

    Dobrý tip

    pozdravy

    1.    KZKG ^ Gaara řekl

      Děkuji

  6.   nano řekl

    Nesnáším vzhled vašeho terminálu, písmena na pozadí mě vyvedou z mé koncentrace. Jsi kurva šílený xD

    Kromě toho je to zajímavé, protože jsem z těchto věcí viděl žalostné případy výpadků služeb.

    Nyní to závisí nejen na tom, ale bezpečnost spočívá v tom, jak byla databáze vytvořena, vysvětlil mi učitel, ale ještě nejsem příliš ponořen do DB ... měli bychom si zahrávat s MongoDB = D jedním z těchto dnů

  7.   Carlos plukovník řekl

    právě to se mi dnes stalo s mým pronajatým serverem

    Sledoval jsem vaše kroky, šel jsem na cpanel a hledal databázi MYSQL a ta mi říká, že je mimo provoz.

    Nevím, jak nyní vstoupit pod uživatelem root
    Jsem v tom nováček, ale při čtení zde se toho hodně naučíte, doufám, že mě dovedete k přístupu

    1.    KZKG ^ Gaara řekl

      Ahoj 🙂
      Máte Hosting (SharedHosting) nebo VPS (virtuální server)?

      Pokud máte Hosting a ne VPS, měli byste zjistit, zda váš Hosting má přístup SSH (kontaktujte technickou podporu společnosti, která vám prodala hosting, a zeptejte se jich, jak získat přístup přes SSH), jakmile vstoupíte přes SSH, uživatel NENÍ root, ale musíte použít uživatele, kterého jste zadali při instalaci této webové aplikace.

      Vaše téma je ve skutečnosti komplikované, protože jeho variant a možností je tolik lidí, doporučuji vám otevřít nové téma na našem fóru, bude vám pohodlnější pomoci - » http://foro.desdelinux.net

      Zdravím 😀

  8.   bossbrondem řekl

    dobrý,

    Chápu, že je dobrým zvykem neposkytovat všechna oprávnění žádnému uživateli kromě root. Protože jsem však nainstaloval phpmyadmin, byl vytvořen nový uživatel „phpmyadmin“ se všemi oprávněními. Zdá se logické, že by tomu tak mělo být, protože je to pouze grafická verze pro správu databází v MySQL. Každopádně bych se chtěl ujistit, jestli je to v pořádku, jak to je, nebo bych měl udělat nějaké úpravy v oprávněních uživatele "phpmyadmin".

    Zdravím a děkuji!

  9.   Emmanuel řekl

    Vynikající…
    Jsem jedním z těch, kteří dělají všechno s rootem, ale ty jsi mi otevřel oči, příteli ..
    Díky moc…