У меня есть веб-сервер, размещенный на AWS, с группой безопасности, разрешающей доступ со всех IP-адресов на TCP-порт 22 (ssh) и 443 (https). Для доступа по ssh у пользователя должен быть мой закрытый ключ.
Должен ли пользователь root в базе данных MySQL на этом сервере иметь пароль? Если да, то почему? Единственный способ войти в базу данных - это ssh'ing в машину, и если хакер может это сделать, он может легко просмотреть данные в любом случае, проверив файлы .myd.
Тем не менее, общепринятое мнение, с которым я столкнулся, похоже, поддерживает ограничение корневого доступа к базе данных.
Обновить Что делать, если моя база данных находится на другом компьютере, чем веб-сервер, и доступ к базе данных возможен только через порт mysql с веб-сервера? Тогда все еще рекомендуется иметь пароль root?
Да, вам следует использовать пароль. Зачем? Потому что несколько уровней безопасности лучше, чем один уровень безопасности, известный как подход «огороженного сада». Если кто-то взломает эту стену, вам захочется, чтобы у вас было несколько уровней безопасности, чтобы не допустить их.
Почему бы вам не установить пароль? Пароли неудобны, но неудобства незначительны. Вы можете поместить пароль в ~ root / .my.cnf и убедиться, что права доступа к файлу очень строгие. Например:
[client]
password=hackme123##
Ошибки случаются. И https, и ssh достаточно безопасны, но существуют эксплойты, которые могут позволить кому-то украсть ваш сеанс https или прослушать данные из сеанса https.
Некоторые пользователи используют незашифрованные ssh-ключи, то есть SSH-ключ, созданный без пароля. Если хакеру удалось украсть ваш закрытый ключ, он может использовать этот ключ для входа на ваш хост базы данных (поскольку кодовая фраза не требуется), а затем войти в саму базу данных.
https настолько же безопасен, насколько и работающее в нем веб-приложение. Нередко веб-приложение случайно разрешает доступ к командной строке из-за плохого кодирования.
Если кто-то взломал ваш веб-приложение, они могут войти в базу данных в качестве корня и удалить все базы данных, вставки ссылки на порно и вредоносных сайтов в драгоценном CMS, создать бэкдор счета для собственных нужд и т.д.
На самом деле это не единственный способ попасть внутрь. Насколько безопасно ваше веб-приложение? (Правильный ответ - всегда «Нет»). Итак, да, у вас есть канал, по которому кто-то может войти, и это реальная веб-служба, которую вы используете.
Если кто-то входит, по умолчанию они не могут просматривать файлы .myd. Для прямого доступа к файлам вам понадобится эксплойт корневой оболочки. Если кто-то каким-то образом «попадает» с непривилегированной учетной записью (например, как пользователь вашего веб-сервера), то пароль root MySQL является единственным препятствием, препятствующим полному удалению или уничтожению ваших данных.
Да, вы должны установить пароль root в своей базе данных MySQL, а затем хранить его в безопасном и восстанавливаемом условном депонировании.
Для безопасности нет «контрольного списка», безопасность - это процесс и образ мышления, но есть несколько основных принципов, один из которых - глубокоэшелонированная защита:
Глубокая оборона - Никогда не кладите яйца в одну корзину.
Аутентификация - пароли - это «то, что вы знаете» токен аутентификации. Проблема: пароль по умолчанию (в данном случае пустой) известен всем. Следовательно, у вас больше нет механизма аутентификации для вашей базы данных.
Резюме: Установка пароля "стоит" вам очень мало и значительно усложняет работу злоумышленнику. Хорошая покупка.