Бережіть свої бази даних MySQL у безпеці, створюючи окремих користувачів та дозволи

Я завжди був другом хороших практик, набагато більше, якщо вони допомагають нам підтримувати безпеку наших серверів, служб або просто нашої інформації.

Звичка (шкідлива звичка), яку мають багато адміністраторів або користувачів, - це використовувати доступ корінь для всіх баз даних, тобто ... вони встановлюють сайт за допомогою WordPress CMS, а як доступ до даних до бази даних (щоб WP використовував сервер MySQL та використовував його БД) вони ставлять користувача адміністратора сервера MySQL: root

Крім того, вони встановлюють будь-яку іншу веб-програму (чат, вставку, форум тощо) і роблять те саме, вони завжди використовують кореневого користувача MySQL ...

ПОМИЛКА !!!

Це просто фатальна звичка.

Припустимо, у нас на сервері є такі послуги:

  1. Сайт або портал, що використовує WordPress.
  2. Наш форум підтримки, бесіди тощо ... ціла спільнота.
  3. FTP, який використовує базу даних MySQL для зберігання користувачів та паролів.
  4. Користувачі електронної пошти зберігаються (користувачі та паролі) у базі даних MySQL.
  5. Невеликий веб-чат, який ми встановлюємо для спілкування з кимось із ваших знайомих.

І в усіх з них, у 5 сервісах ми використовуємо кореневого користувача MySQL, щоб кожна служба отримувала доступ та зберігала дані у відповідній базі даних.

Одного чудового дня будь-який із багатьох тролів, але це не тільки троль, але він також володіє деякими подвигами, уразливостями, злому тощо ... вирішує зробити щось шкідливе для нас.

Знайдіть помилку в WebChat, яку ми використовуємо, скориставшись цією помилкою, їй вдається отримати доступ до файлів WebChat, включаючи файл конфігурації WebChat, і… в цьому файлі, очевидно, є ім’я користувача та пароль, які WebChat використовує для доступу до Сервер MySQL, і вгадайте що? ... Це не більше, ані менше КОРІНОВИЙ КОРИСТУВАЧ!

Отримавши цю інформацію, дуже простим способом троль може:

  1. Видаліть нас та / або викрадіть все, що пов’язано з веб-сайтом або порталом, який ми маємо (WordPress).
  2. Ви можете видалити та / або викрасти інформацію у нас І у наших користувачів, які користуються форумом, спільнотою, яку ми створюємо.
  3. Ви також можете викрасти ім'я користувача та пароль ВСІХ користувачів, які мають обліковий запис електронної пошти на нашому сервері, а також викрасти інформацію з їх електронних листів, видавати себе за особу тощо.
  4. І ось нарешті, ви можете скористатися обліковим записом на нашому FTP-сервері та завантажити будь-який файл, що містить шкідливе програмне забезпечення, що дозволить вам отримати ВСЬОГО та АБСОЛЮТНИЙ контроль над нашим сервером.

Ну ... що ти думаєш? ... 🙂

Ви бачите все, що може статися, просто не створюючи незалежних користувачів для кожної бази даних, яку ми маємо?

Це НЕ перебільшення, друзі, це може статися з дивовижною легкістю ... ну, все, що потрібно, щоб розкрити катастрофу - це лише помилка в деяких веб-програмах, які ви встановили.

Зараз ...

Як створити окремих користувачів MySQL для кожної веб-програми?

Спочатку ми повинні увійти на сервер MySQL з кореневим користувачем, оскільки саме він має привілеї створювати бази даних, встановлювати дозволи, створювати користувачів тощо:

mysql -u root -p

Коли вони пишуть вище і натискають [Введіть] їх запитають пароль кореневого користувача MySQL, вони пишуть його та натискають [Введіть] знову ж таки, миттєво вам покажуть щось подібне:

Тепер ми створимо базу даних з назвою «webchatdb":
CREATE DATABASE webchatdb;

Зверніть увагу на крапку з комою «;»В кінці рядка.

Готово, ви вже створили базу даних, тепер давайте створимо користувача «веб-чатузер«З паролем«парольdelputowebchat":

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

Тепер магія ... ми надамо всі привілеї (читати та писати) веб-чатузер ТІЛЬКИ в БД webchatdb:

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

І вуаля, користувач вже має дозволи в цій базі даних ... тепер залишається лише оновити дозволи на MySQL, тобто сказати MySQL перечитати привілеї користувачів, тому що ми щойно внесли в них зміни :

FLUSH PRIVILEGES ;

Я залишаю скріншот:

І це було все. Роблячи це для кожної веб-програми, яку ми використовуємо, ми гарантуємо, що у випадку, якщо їм вдасться порушити одну з цих веб-програм, інші будуть у безпеці (принаймні з точки зору MySQL)

Що таке хороша практика? 😉

Сподіваюся, це було для вас настільки корисним, як і для мене, оскільки я намагався пояснити це якомога простіше.

привіт


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Мартін - сказав він

    Хороший пост KZKG, якби це було на форумі, я б попросив липку!

    1.    KZKG ^ Гаара - сказав він

      Дякую 😀

      1.    КубаЧервоний - сказав він

        Пароль, який ви вводите для веб-чату, хороший, інша справа, яка пов’язана з mysql - це використання його пам’яті

  2.   Хюга_Неджі - сказав він

    Хе-хе-хе, дякую за нагадування про команди MySQL. Тепер давайте подивимось, чи "я вкладаю певний захист" у серверну базу даних World of Warcraft, яку я маю в своїй локальній мережі.

  3.   sieg84 - сказав він

    мої знання щодо цього нульові, але вони майже однакові для використання MySQL для Amarok?
    СТВОРИТИ БАЗУ ДАНИХ amarokdb;
    НАДАЙТЕ ВСІ ПРИВІЛЕГІЇ на amarokdb. * ДО "amarokuser" ІДЕНТИФІКОВАНИЙ "паролем"; ПРИВИЛЕГІЇ ФЛЕШУ;

    1.    KZKG ^ Гаара - сказав він

      Я не використовував Amarok давно, довго, але якщо ви використовуєте БД, яка є MySQL, теоретично вона теж повинна працювати так.

  4.   Карлос Андрес Рестрепо - сказав він

    Привіт, було б добре, якби ви створили запис для захисту від веб-серверів у Linux, багато з них не мають належного захисту, а адміністратор того самого не є експертом, вони лише полегшують їм справи, наприклад використання символічного посилання на серверах дозволяє читати файли конфігурації інших облікових записів на тому самому сервері, про що багато адміністраторів не знають, і тому дефіцити веб-сайтів розростаються

    привіт

    1.    KZKG ^ Гаара - сказав він

      Привіт як це відбувається
      Ласкаво просимо на сайт 🙂

      Насправді я не вважаю себе далеко експертом у цьому питанні, але спробую внести ті незначні знання, які я здобув за ці роки 🙂

      Інша річ, яку роблять не багато адміністраторів мережі, - це надання привілеїв сайтам з Apache окремо, тобто користувачеві та групі www-даних (або подібних), які є різними для кожного сайту, і, у свою чергу, переносять у клітку кожен із них .

      привіт

  5.   hackloper775 - сказав він

    Хороша порада

    привіт

    1.    KZKG ^ Гаара - сказав він

      Дякую

  6.   нано - сказав він

    Я НЕНАВИЖАЮ зовнішній вигляд вашого терміналу, фонові літери виводять мене з зосередженості. Ви божевільний божевільний xD

    Поза цим, це цікаво, бо я бачив жалюгідні випадки відключення послуг від цих речей.

    Тепер це не тільки залежить від того, що безпека полягає в тому, як була побудована база даних, пояснив мені вчитель, але я ще не дуже занурений у БД ... нам слід возитися з MongoDB = D одним із них днів

  7.   Карлос Коронель - сказав він

    саме це сталося зі мною сьогодні з орендованим сервером

    Я слідував вашим крокам, я зайшов у cpanel і шукаю базу даних MYSQL, і вона повідомляє мені, що вона не працює.

    Я не знаю, як зараз увійти під кореневим користувачем
    Я неофіт у цьому, але читаючи тут, ти дізнаєшся багато нового, сподіваюся, ти скеруєш мене до доступу

    1.    KZKG ^ Гаара - сказав він

      Привіт 🙂
      У вас є хостинг (SharedHosting) або VPS (віртуальний сервер)?

      Якщо у вас є хостинг, а не VPS, ви повинні перевірити, чи має ваш хостинг доступ до SSH (зв’яжіться зі службою технічної підтримки компанії, яка продала вам хостинг, і запитайте їх, як отримати доступ через SSH), як тільки ви ввійдете через SSH, користувач НЕ буде рутом, але ви повинні використовувати користувача, якого ввели під час встановлення веб-програми.

      Насправді ваша - це складна тема, оскільки варіантів та можливостей оооочень багато, я рекомендую відкрити нову тему на нашому форумі, там вам буде зручніше допомогти - » http://foro.desdelinux.net

      Вітаю 😀

  8.   босброндем - сказав він

    добре,

    Я розумію, що є доброю практикою не надавати будь-які привілеї будь-якому користувачеві, крім root. Однак з моменту встановлення phpmyadmin було створено нового користувача "phpmyadmin" з усіма привілеями. Здається логічним, що це так, оскільки це лише графічна версія для управління базами даних у MySQL. У будь-якому випадку, я хотів би переконатись, чи все в порядку, чи є, чи слід внести певні зміни в привілеї користувача "phpmyadmin".

    Вітаю і дякую!

  9.   Еммануель - сказав він

    Відмінно ...
    Я один з тих, хто робить все з коренем, але ти відкрив мені очі, друг.
    Дуже дякую…