Mariadb unix_socket (без пароля) или mysql_native_password что безопаснее?

#mysql #mariadb #unix-socket

#mysql #mariadb #unix-сокет

Вопрос:

Я проинформировал себя, и, по-видимому, должно быть соединение от zb. для создания PHP-скрипта через unix_soket (пароль не требуется, и соединение работает только через localhost), поскольку TCP-соединение не установлено, и, следовательно, подслушивание невозможно.

Правильно ли, что безопасно использовать Unix_socket или он подходит только для корневых подключений (и всегда ли он без пароля или я могу добавить пароль в unix_socket?)

Комментарии:

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

2. Но unix поддерживает только локальные соединения, поэтому нет возможности войти извне сети, а с Unix_socked вам не нужен SSL

Ответ №1:

В базе знаний unix_socket MariaDB есть описание компромиссов.

Все соединения через сокет unix, независимо от того, используется аутентификация unix_socket или нет, устойчивы к падению карниза.

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

unix_socket одинаково эффективен для любого пользователя unix, root или любого другого.

С MariaDB-10.4 для одного пользователя возможны несколько механизмов аутентификации. Они находятся в OR контексте, поэтому добавление пароля ослабляет безопасность учетной записи.

Комментарии:

1. Поскольку я разрешаю только локальные подключения к своей базе данных, я также могу использовать пароль. Вероятно, это даже повышает безопасность, потому что, если бы кому-то удалось запустить Codeinjetion, ему понадобилось бы не только имя базы данных и пользователя, но и пароль (если я не знаю имя функции подключения). Для меня это было в первую очередь связано с безопасностью, что даже если я использую пароль, т.Е. mysql_native_password Мне не нужен SSL-сертификат или протокол для установления защищенного от прослушивания соединения.

2. Или я ошибаюсь, и пароль действительно шифрует отправленный контент, а не только доступ через пользователя к базе данных?

3. независимо от того, является ли его пароль unix_socket или tls, внедрение кода, вероятно, имеет глобальную $db переменную соединения или, по крайней мере, доступную конфигурацию, поэтому все механизмы одинаково уязвимы в этом отношении. При соединении с сокетом unix (localhost) для перехвата требуются права пользователя root, и если вы их потеряли, вы потеряли все права CIA. Пароли, такие как unix_socket, — это чисто механизм аутентификации, если вы используете что-то вроде wireshark, вы сможете видеть весь трафик. mysql_native_password Насколько я помню, этот механизм обладает устойчивостью к повторным атакам.

4. Но если я выберу unix_socket, у меня не будет пароля, который я должен использовать для подключения к БД с моего сайта, верно? Но возможно ли это сделать с другим пользователем, а затем root? (Значит, Unix_socket защищен от wireshark, а мой mysql_native_password — нет?)

5. Другими словами, использует ли mysql_native_password также unix_soket? Так это безопасно?