у меня есть сервер ubuntu, выступающий в качестве моего сервера лампы для моих php-сайтов.
Сервер mysql установлен и открыт для порта localhost.
Я читал о том, как туннелировать через ssh на мой сервер mysql.
но я не понял, почему это лучше, чем открывать сервер mysql непосредственно для интернет-порта.
Причина в любом случае, хакер может подобрать порт для паролей. либо порт mysql (3306), если он открыт для публики, либо ssh (22), если используется туннелирование.
Так почему же лучше использовать ssh-туннелирование для mysql (и многих других серверных приложений)?
Если вы используете SSH-туннелирование, тогда ваши пароли SSH и MySQL шифруются во время связи, а также все данные, которые проходят через туннель. Если вы не используете SSH-туннель и не используете поддержку SSL в MySQL, шифрование отсутствует, и третья сторона-злоумышленник может использовать анализ пакетов или другие гнусные средства для прослушивания ваших сообщений.
Кроме того, если вы используете SSH-туннелирование, вы будете предупреждены об изменении SSH-ключа удаленной машины. Этого не произойдет со стандартным MySQL, а это означает, что злоумышленник может использовать спуфинг IP или Атака человека посередине чтобы нарушать / мешать / подслушивать ваше общение.
Для получения дополнительной информации см .:
но я не понял, почему это лучше, чем открывать сервер mysql непосредственно для интернет-порта. потому что в любом случае хакер может подобрать порт для паролей
Простой ответ заключается в том, что существует культура, которая доверяет SSH обеспечивать безопасность лучше, чем MySQL. Сторонник подхода SSH может утверждать, что протокол обмена паролями MySQL был скомпрометирован в прошлом, поэтому лучше полагаться на SSH.
Но ты прав. Пароль SSH можно взломать почти так же легко, как пароль MySQL.
К счастью, SSH поддерживает несколько методов аутентификации, и пароли являются лишь одним из них. Для хостов с выходом в Интернет я видел, как системные администраторы полностью отключали аутентификацию по паролю, выбирая вместо этого более сильные методы, такие как аутентификация с открытым ключом. См. RSAAuthentication в sshd_config (5), а также ssh-keygen (1) для получения дополнительной информации об аутентификации с открытым ключом.
Надеюсь это поможет!
Я бы не стал использовать SSH-туннелирование для трафика приложений, если у вас нет на то веской причины. Если приложение работает на том же сервере, что и база данных, вам, вероятно, следует использовать сокет MySQL и отключить сеть для MySQL. Это особенно верно, если сервер работает непосредственно в Интернете.
Если у вас несколько серверов, вы можете использовать SSL изначально в MySQL для шифрования транзитного трафика.
Я подозреваю, что вы имеете в виду разработчиков в более крупных средах, использующих SSH-туннелирование для клиентских подключений. Обычно это происходит из-за того, что доступ к брандмауэру не предоставляется напрямую MySQL, но разрешен для SSH, где SSH позволяет обходиться без увеличения размера MySQL.
Поскольку вы можете использовать аутентификацию сертификата до аутентификации MySQL.