Назад | Перейти на главную страницу

Проблемы безопасности при разрешении подключений к MySQL без пароля на localhost?

В случае системы Linux, есть ли какие-либо проблемы безопасности, позволяющие пользователям MySQL со стандартными привилегиями (то есть не пользователям root) подключаться к базе данных без пароля от localhost?

Я думаю, что принудительное использование пароля даже для localhost может добавить уровень защиты, поскольку без пароля доступ к базе данных будет скомпрометирован, если сам доступ SSH будет скомпрометирован. Учитывая это, будет ли менее безопасно разрешить подключение к MySQL без пароля, чем использование одного и того же пароля для SSH и для MySQL?

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

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

Так это было бы очень плохой идеей или нет?

Иногда в сфере безопасности нужно быть параноиком :-)

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

Что это за сервер? Производство? Развитие? Тестирование? Или это просто песочница? Если это песочница и в ней нет важных данных, не беспокойтесь о пароле для локальных пользователей (при условии, что у вас уже есть политика для доступа по ssh). Но, если это не ваша песочница, я советую использовать пароль для всех.

Иногда простые решения подходят, но они могут поставить под угрозу безопасность ваших данных ...

В общем, думаю, это плохая идея. Если приложение A взломано, злоумышленник может иметь доступ только к пользователю и его файлам, которым принадлежит это приложение, но если вы не используете пароли для базы данных, он сможет получить доступ к базам данных приложений B и C и т. Д. ... а также, чего можно было бы предотвратить в противном случае.

Я думаю, что принудительное использование пароля даже для localhost может добавить уровень защиты, поскольку без пароля доступ к базе данных будет скомпрометирован, если сам доступ SSH будет скомпрометирован

Общий принцип «глубокой защиты» склоняет к тому, чтобы крайне осторожно относиться к учетным записям пользователей без паролей. Пароль является важной частью механизма аутентификации; Настройка учетных записей без паролей сродни замкам без тумблеров. Здесь я с тобой согласен.

Учитывая это, будет ли менее безопасно разрешить подключение к MySQL без пароля, чем использование одного и того же пароля для SSH и для MySQL?

Это действительно вопрос о повторном использовании пароля. Якобы любое повторное использование пароля вообще считается плохим делом (TM). Этот механизм работает только потому, что пароль является секретом, известным только вам ... и чем чаще вы используете секрет, тем меньше вероятность, что он останется секретом. Однако в реальном мире нам приходится повторно использовать пароли, буквально повторно используя один и тот же пароль в нескольких учетных записях, или используя один мастер-пароль для защиты списка уникальных паролей. Ответ на этот вопрос действительно зависит от вашей среды и модели угроз.

Как указал @boris quiroz, что это за сервер? Кому нужен доступ к нему? В каких еще местах пароль, вероятно, будет повторно использован (например, только для SSH или также для панели управления ядерной ракетой? Было бы нормально повторно использовать пароль для первого, но не для второго ). Что вы потеряете в случае кражи пароля (например, сколько яиц в этой единственной корзине)? И какова цена данных, спрятанных в вашей базе данных с учетными записями без пароля по сравнению с этим? Затем задокументируйте этот процесс и причины, лежащие в основе вашего решения. Если в будущем когда-либо возникнет проблема, вы можете оправдать свой выбор.

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

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

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

Конечно, если приложение будет взломано, будет [чуть-чуть] сложнее - сказать - удаленно запросить у БД полный дамп базы данных. Это "совсем немного" жестяная банка Сделать разницу.