Является ли пользователь root без пароля нарушением безопасности, если мой сервер MySQL принимает соединения только от localhost?
Я знаю, что, по общему мнению, пользователь root должен быть защищен паролем, но каковы последствия оставления его пустым? Меня не беспокоят пользователи Linux, кроме моего собственного подключения к MySQL, и я не планирую разрешать сетевой доступ к базе данных.
Изменить: что отличает MySQL от SQLite, который не защищен паролем? О каких сценариях развертывания идет речь? Если злоумышленник получает доступ к серверу, что мешает злоумышленнику просто сбросить пароль?
Пожалуйста, имейте в виду, что я не пытаюсь что-либо пропагандировать здесь, я просто хочу, чтобы люди поступали по этому поводу с осознанным мнением.
Да, я считаю это довольно фундаментальной уязвимостью безопасности. Позвольте мне проиллюстрировать это историей.
Давным-давно, в мои молодые и менее образованные дни, я установил сервер для внутреннего тестирования различных бит и частей, которые я тестировал. Он лежал у меня на столе, не подключенный к какой-либо сети (это было давно, до того, как все было быть в сети, чтобы иметь возможность делать что угодно). Пока меня не было в офисе, кому-то понадобилась машина, и он взял мою испытательную машину (я не возражал; я использовал машину на том основании, что ее можно использовать для других целей, если это необходимо). Поскольку на нем уже была запущена необходимая ОС, они просто подключили его к сети и установили то, что им нужно.
Проблема заключалась в том, что я устанавливал на этот ящик всевозможные тестовые учетные записи с легко угадываемыми паролями (например, всегда полезные test
). Даже так давно не было недостатка в злоумышленниках, которым не оставалось ничего лучше, чем учетные записи, угадывающие пароль. Им не потребовалось много времени, чтобы найти эту машину, угадать пароль и проделать с ней свой гнусный путь.
Мораль этой истории? Требования меняются. Даже если вы не ожидаете сделать это сейчас, есть разумная вероятность, что в течение срока службы машины ее роль изменится - я ожидал, что наиболее вероятным результатом будет то, что другие пользователи получат доступ к машине. (законно или с помощью эксплойта на уровне приложения). Шансы, что вы не забудете установить пароль root MySQL, когда это необходимо, в лучшем случае ... невелики.
Я бы рекомендовал потратить 10 секунд, чтобы установить пароль root MySQL и поместить его в ~root/.my.cnf
. Единовременные затраты времени намного меньше, чем стоимость компромисса, умноженная на вероятность компрометации.
Именно. Вы не беспокоитесь о пользователях Linux, кроме вашего собственного подключения к MySQL, и вас никогда не будет беспокоить, пока они не сбросят все в MySQL.
А теперь серьезно, вы должны добавить пароль. Учтите, что если кто-то попытается проникнуть на ваш сервер, ему придется скомпрометировать пароль пользователя с сервера, а затем также скомпрометировать пароль root из MySQL. Если у вас нет пароля MySQL, то его проще взломать.
Кроме того, ни одна программа не свободна от ошибок. Подумайте только, если ошибка в MySQL рассматривает каждое соединение как «локальное», у вас возникнут большие проблемы.