Я хочу подключиться к базе данных MySQL, размещенной у провайдера, используя что-то вроде TOAD, Navicat или HeidiSQL. Интернет-провайдер сказал мне, что MySQL прослушивает порт 3306, но аппаратный брандмауэр не разрешает доступ внешним соединениям (только localhost). У меня есть возможность дать им IP-адреса для добавления к брандмауэру, но это не идеально, потому что я работаю в основном из дома или в дороге, поэтому мой IP-адрес всегда меняется. Если я открою это, у меня будут проблемы? Существуют ли какие-либо меры, помимо добавления моего IP-адреса в таблицу IP-адресов, которые я мог бы предпринять, чтобы снизить риски?
Обычно ограничение доступа MySQL к IP-адресу - хорошая идея. Могут быть некоторые проблемы с безопасностью, но хороший брандмауэр должен их устранить. Им придется создать для вас дополнительного пользователя MySQL, поскольку MySQL не позволяет использовать несколько хостов (если нет подстановочного знака) для каждого пользователя. Вы можете запросить нескольких пользователей, по одному для каждого хоста, с которого вы подключаетесь, или даже частичных хостов (например,% .google.com).
Альтернативным решением является создание ssh-туннеля на вашем компьютере, чтобы вы могли подключаться локально.
Вот хорошая статья о том, как создать туннель ssh с MySQL.
http://www.howtogeek.com/howto/ubuntu/access-your-mysql-server-remotely-over-ssh/
НЕ открывайте 3306.
Вместо этого сделайте то, что делает любой другой сервер: откройте порт 22 для безопасности. ssh
соединение, затем после входа в систему подключитесь локально к mysql.
Хотя вы можете обеспечить безопасность своей аутентификации, очень осторожно используя гранты и требуя SSL. У вас нет защиты от потенциальных необнаруженных эксплойтов, которые могут быть использованы.
У некоторых клиентов SQL есть опция SSH-туннеля, что лучше.
Поскольку вы упомянули Navicat, ознакомьтесь с его функцией HTTP-туннеля. Если вы неявно назовете / определите местонахождение этой конечной точки туннеля и используете HTTP-аутентификацию для самого файла (в дополнение к аутентификации MySQL), вы устраните все атаки, кроме наиболее целевых.
Безопасный подход состоит в том, чтобы закрыть порт, но если ваш сервер является общим сервером с другими клиентами, использующими тот же сервер, интернет-провайдер может не захотеть закрыть порт. У меня точно такая же проблема с MySQL у моего интернет-провайдера. В моем случае они сказали мне, что «это не представляет угрозы безопасности для вашей учетной записи, потому что, несмотря на то, что эти порты открыты, никто не может подключиться с вашими учетными данными (если они не украдены), пока удаленные подключения MySQL выключено."
Так что, если у вас есть надежные, безопасные пароли и удаленные соединения с панелей управления, а привилегии сервера заблокированы, вы в некоторой степени «в безопасности», но не на 100% «в безопасности».
Если приложение является критически важным или содержит конфиденциальные данные, я бы при необходимости перешел на выделенный сервер и полностью закрыл порт.