Это нормальный набор привилегий MySQL?

9

Используя phpmyadmin в локальной тестовой настройке wamp, а также в значительной степени состояния заголовков, есть 3 пользователя, помеченные как user = ANY, password = NO, например:

USER | HOST    | Password | Global Priv | Grant
-----+---------+----------+-------------+------
Any  | %       | No       | USAGE       | No
Any  | Local   | No       | USAGE       | No
Any  | Domain  | No       | USAGE       | No
-----+---------+----------+-------------+------

Ни один из 3-х пользователей не имеет каких-либо особых привилегий для каких-либо таблиц, поэтому, похоже, они мало что могут сделать. Является ли это своего рода общей мерой безопасности, чтобы явно указать, что «любой» пользователь, который не входит ни в какую другую группу пользователей, не имеет никаких привилегий?

Крис
источник
На самом деле это очень хороший вопрос, потому что mysql поставляется с разрешениями по умолчанию, которые не публикуются. +1 !!!
RolandoMySQLDBA

Ответы:

6

На самом деле эти три учетные записи на самом деле довольно опасны. Они представляют очень большую угрозу для тестирования баз данных.

К сожалению, mysql поставляется с полным доступом к тестовым базам данных. Как вы можете их найти?

Запустите этот запрос:

 SELECT user,host,db from mysql.db;

После установки mysql вы увидите две строки, которые дают полный доступ к любой базе данных с именем «test» или чьи первые 5 символов - «test_».

Почему это проблема ???

Попробуйте запустить эту команду:

$ mysql -u'' -Dtest

Вы подключите тестовую базу данных без пароля.

Теперь создайте таблицу и загрузите ее строкой:

CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);

ОК, большое дело. Не могли бы вы удвоить размер этой таблицы в 30 раз ???

INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;

Что вы получаете ?? Таблица с 1 073 741 824 строками. Легко, 4 Гб +.

Представьте себе создание любого стола любого размера. Как насчет создания группы таблиц в тестовой базе данных и свободного доступа к ним по желанию?

Лучшее, что вы можете сделать в этих условиях, это выполнить этот запрос:

DELETE FROM mysql.db;

и перезапустите MySQL. Затем эти три аккаунта будут должным образом отключены.

Попробуйте!

ОБНОВЛЕНИЕ 2011-09-12 10:00 ПО ВОСТОЧНОМУ ВРЕМЕНИ

Это удалить:

DELETE FROM mysql.db;
FLUSH PRIVILEGES;

это именно то, что вам нужно для первоначальной установки. Однако, если у вас уже есть установленные пользователи, вы можете запустить это вместо:

DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;

Это удалит конкретные два разрешения БД.

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

RolandoMySQLDBA
источник
Спасибо за объяснение, но удалит ли DELETE FROM mysql.db что-нибудь еще из этих трех пользователей? Я не хочу удалять какие-либо данные / привилегии, кроме этих 3
Крис
@Chris - я обновил свой ответ 3 часа назад, чтобы ответить на ваш комментарий.
RolandoMySQLDBA
-1

Опасность сохранения этих анонимных аккаунтов уже хорошо объяснена.

В руководстве представлен полный контрольный список шагов, которые необходимо предпринять для « защиты исходных учетных записей MySQL ».

В частности, раздел «Назначение паролей анонимных учетных записей» рекомендует удалять эти учетные записи.

Кроме того, глава «Защита тестовых баз данных» рекомендует:

По умолчанию mysql.dbтаблица содержит строки, которые разрешают любому пользователю доступ к testбазе данных и другим базам данных, имена которых начинаются с test_. (...) Это означает, что такие базы данных могут использоваться даже учетными записями, которые в противном случае не имеют никаких привилегий. Если вы хотите удалить доступ любого пользователя к тестовым базам данных, сделайте это следующим образом:

mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;

(...) С предыдущим изменением его могут использовать только пользователи, имеющие глобальные привилегии базы данных или привилегии, предоставленные явно для тестовой базы данных.

В частности, в системах, отличных от Windows, рекомендуется запускать mysql_secure_installationсценарий. Я считаю, что установщик Windows предлагает несколько профилей установки. Некоторые из них автоматически отключают небезопасные настройки. Если нет, то контрольный список необходимо будет запустить вручную.

Необходимо соблюдать осторожность со сторонними установщиками, такими как WAMP. Разрешения по умолчанию, указанные в официальном руководстве MySQL, не всегда могут применяться к этим настраиваемым (как в «вне рамок руководства») установкам. Конечно, для производственного сервера установки WAMP и тому подобное следует избегать любой ценой. ,

Случайное семя
источник
почему отрицание на этот ответ?
user12345