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

MySQL: представляет ли опасность для безопасности отключение параметра «адрес привязки»?

У меня возникла проблема с правильным подключением веб-приложения к серверу MySQL, и для ее решения я попытался закомментировать настройку bind-address в файле my.ini.

Это, казалось, решило проблему, однако мне было интересно, не относится ли это к безопасности. Это подходящая настройка для производственной среды, доступ к которой, конечно, ограничен пользователем / паролем? И в чем разница между закомментированием и установкой bind-address=0.0.0.0?

Эффект от комментария параметра зависит от значения bind-address был установлен раньше.

Добавление комментария к параметру аналогично установке его значения по умолчанию. В руководстве будет указано значение по умолчанию: https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_bind-address

bind-address
Значение по умолчанию:
*

В руководстве также объясняется, что означает этот параметр и чем он отличается от использования 0.0.0.0:

Если адрес *, сервер принимает соединения TCP / IP на всех интерфейсах IPv4 хоста сервера и, если хост сервера поддерживает IPv6, на всех интерфейсах IPv6. Используйте этот адрес, чтобы разрешить соединения IPv4 и IPv6 на всех интерфейсах сервера. Это значение по умолчанию. Если опция задает список из нескольких значений, это значение не разрешено.

Если адрес 0.0.0.0, сервер принимает соединения TCP / IP на все интерфейсы IPv4 хоста сервера. Если опция задает список из нескольких значений, это значение не разрешено.

Если ваш сервер не защищен брандмауэром, ограничивающим доступ к TCP-порту 3306 (порт по умолчанию для MySQL), то при использовании * или 0.0.0.0 будут приниматься входящие соединения на всех IPv4-адресах, с которыми настроен сервер, а также TCP-соединения. на адресе обратной связи 127.0.0.1/8 и * дополнительно разрешит весь входящий трафик IPv6.

В целом считается хорошей практикой безопасности настраивать только минимальный доступ к сети для служб.
И *, и 0.0.0.0, вероятно, чрезмерно разрешительны во многих ситуациях, но, например, в системе, которая должна разрешать удаленный доступ к MySQL с одним интерфейсом / IP-адресом (т.е. 192.0.2.1), не будет эффективной разницы в безопасности между bind-address = 192.0.2.1 или bind-address = 0.0.0.0 или bind-address = *
На серверах, которым не нужно разрешать удаленный доступ к MySQL (типичный сервер LAMP) bind-address = ::ffff:127.0.0.1 будет рекомендовано.

Говоря о безопасности, раскрытие ваших данных миру - никогда не лучший выбор.

Говоря о том, как избежать того, что вы сделали, если ваш MySQL работает в Linux и у вас есть доступ по SSH, вы можете настроить туннель и не нужно открывать MySQL всему миру.

Вот пример:

ssh -v -N -o ExitOnForwardFailure=yes -o ConnectTimeout=10 -o NumberOfPasswordPrompts=3 \
-i ~/.ssh/yourkey.pem -o TCPKeepAlive=no -o ServerAliveInterval=60 \
-o ServerAliveCountMax=1 \
youruser@yourhost.com -L 3306:127.0.0.1:3306

Таким образом, вы подключаете свой графический интерфейс или любое другое приложение, которое вам нужно подключить, к порту 3306 IP 127.0.0.1, и все готово.

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

Наконец, если вы комментируете bind-address=0.0.0.0 пусть ваш mysql прослушивает соединения через все IP-адреса, а не только на localhost (127.0.0.1)