Обеспечьте безопасность своих баз данных MySQL, создав отдельных пользователей и разрешения

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

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

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

ОШИБКА!!!

Это просто пагубная привычка.

Допустим, у нас на сервере есть следующие сервисы:

  1. Сайт или портал с использованием WordPress.
  2. Наш форум поддержки, обсуждения и т. Д. Все сообщество.
  3. FTP, использующий базу данных MySQL для хранения пользователей и паролей.
  4. Пользователи электронной почты хранятся (пользователи и пароли) в базе данных MySQL.
  5. Небольшой веб-чат, который мы устанавливаем, чтобы поговорить с кем-то, кого вы знаете.

И во всех из них, в 5 службах мы используем пользователя root MySQL, чтобы каждая служба имела доступ и сохраняла данные в своей соответствующей базе данных.

В один прекрасный день любой из множества троллей там, но это не только тролль, но и мастеринг некоторых эксплойтов, уязвимостей, взломов и т.д ... решает сделать что-то вредное для нас.

Найдите ошибку в используемом нами веб-чате, воспользовавшись этой ошибкой, ему удается получить доступ к файлам веб-чата, включая файл конфигурации веб-чата, и ... в этом файле, очевидно, находятся имя пользователя и пароль, которые WebChat использует для получить доступ к серверу MySQL и угадайте, что? … Это не что иное, как ROOT USER!

Получив эту информацию, тролль может очень простым способом:

  1. Удалите нас и / или украдите все, что связано с нашим сайтом или порталом (WordPress).
  2. Вы можете удалить и / или украсть информацию у нас И у наших пользователей, которые используют Форум, сообщество, которое мы создаем.
  3. Вы также можете украсть имя пользователя и пароль ВСЕХ пользователей, у которых есть учетная запись электронной почты на нашем сервере, а также украсть информацию из их электронных писем, выдать себя за другое лицо и т. Д.
  4. И, наконец, вы можете использовать учетную запись на нашем FTP-сервере и загружать любой файл, содержащий вредоносное ПО, что позволит вам получить ПОЛНЫЙ и АБСОЛЮТНЫЙ контроль над нашим сервером.

Ну, что вы думаете? … 🙂

Вы видите все, что может произойти, если просто не создавать независимых пользователей для каждой базы данных, которая у нас есть?

Это НЕ преувеличение, друзья, это может произойти с удивительной легкостью ... ну, все, что нужно, чтобы развязать катастрофу, - это просто ошибка в некоторых из установленных вами веб-приложений.

В настоящее время…

Как создать отдельных пользователей MySQL для каждого веб-приложения?

Сначала мы должны войти на сервер MySQL с пользователем root, поскольку именно он имеет права создавать базы данных, устанавливать разрешения, создавать пользователей и т. Д .:

mysql -u root -p

Когда они напишут выше и нажмут [Войти] у них будет запрошен пароль пользователя root MySQL, они его пишут и нажимают [Войти] опять же, вы сразу увидите что-то вроде этого:

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

Обратите внимание на точку с запятой «;»В конце строки.

Готово, вы уже создали базу данных, теперь давайте создадим пользователя «веб-чатпользователь«С паролем«пароль«:

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

Теперь волшебство ... мы дадим все привилегии (чтение и запись) веб-чатпользователь ТОЛЬКО в БД вебчатдб:

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.   Мартин сказал

    Хороший пост КЗКГ, если бы он был в форуме прошил бы липку!

    1.    КЗКГ ^ Гаара сказал

      Спасибо 😀

      1.    КубаКрасный сказал

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

  2.   Хьюга_Неджи сказал

    Хехехе, спасибо, что напомнили мне о командах MySQL.Теперь давайте посмотрим, есть ли «Я установил некоторую безопасность» в базе данных сервера World of Warcraft, которая есть у меня в локальной сети.

  3.   Зиг84 сказал

    мои знания об этом равны нулю, но это почти то же самое при использовании MySQL для Amarok?
    СОЗДАТЬ БАЗУ ДАННЫХ amarokdb;
    ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА amarokdb. * «Amarokuser», ОПРЕДЕЛЕННОМ «паролем»; ПРИВИЛЕГИИ ПРОМЫВКИ;

    1.    КЗКГ ^ Гаара сказал

      Я давно не использовал Amarok, но если вы используете БД MySQL, теоретически она должна работать и так.

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

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

    привет

    1.    КЗКГ ^ Гаара сказал

      Привет,
      Добро пожаловать на сайт 🙂

      На самом деле я далеко не считаю себя экспертом в этом вопросе, но я постараюсь поделиться теми небольшими знаниями, которые я приобрел за эти годы 🙂

      Еще одна вещь, которую делают не многие сетевые администраторы, - это давать привилегии сайтам с apache индивидуально, то есть www-данные пользователя и группы (или аналогичные), которые разные для каждого сайта, и, в свою очередь, клетка каждый из них.

      привет

  5.   хаклопер775 сказал

    Хороший совет

    привет

    1.    КЗКГ ^ Гаара сказал

      Благодарю вас!

  6.   карликовый сказал

    НЕНАВИЖУ внешний вид вашего терминала, буквы на заднем плане выводят меня из равновесия. Ты чертовски сумасшедший xD

    В остальном это интересно, потому что я видел жалкие случаи перебоев в обслуживании из-за этих вещей.

    Теперь, не только это зависит от этого, безопасность заключается в том, как была построена база данных, объяснил мне учитель, но я еще не очень погрузился в базу данных ... мы должны возиться с MongoDB = D на днях

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

    именно это случилось со мной сегодня с моим арендованным сервером

    Я последовал вашим шагам, я вошел в cpanel и поискал базу данных MYSQL, и она говорит мне, что она вышла из строя.

    Не знаю как сейчас войти под root пользователем
    Я новичок в этом, но, читая здесь, вы многому научитесь, надеюсь, вы поможете мне получить доступ

    1.    КЗКГ ^ Гаара сказал

      Привет 🙂
      Что у вас есть - это хостинг (SharedHosting) или VPS (виртуальный сервер)?

      Если у вас есть хостинг, а не VPS, вы должны увидеть, есть ли у вашего хостинга доступ по SSH (обратитесь в техподдержку компании, которая продала вам хостинг, и спросите, как получить доступ через SSH), как только вы войдете через SSH, пользователь НЕ будет root, но вы должны использовать пользователя, которого вы указали при установке этого веб-приложения.

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

      Привет 😀

  8.   босс сказал

    хорошо,

    Я понимаю, что это хорошая практика - не предоставлять все привилегии любому пользователю, кроме root. Однако после того, как я установил phpmyadmin, был создан новый пользователь «phpmyadmin» со всеми привилегиями. Кажется логичным, что это так, поскольку это только графическая версия для управления базами данных в MySQL. В любом случае я хотел бы убедиться, все ли в порядке, или мне нужно внести некоторые изменения в привилегии пользователя «phpmyadmin».

    Привет и спасибо!

  9.   Эммануэль сказал

    Превосходно…
    Я один из тех, кто все делает с рутом, но ты мне открыл глаза друг ..
    Большое спасибо…