#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? Так это безопасно?