Все уязвимости

Практический разбор · MySQL

MySQL: требуйте шифрование удалённых подключений

Для MySQL проверьте, требует ли сервер защищённый транспорт, и может ли клиент проверить сертификат. Глобальный `require_secure_transport` запрещает незащищённый TCP, а режим клиента `VERIFY_IDENTITY` дополнительно предназначен для проверки цепочки и имени сервера.

Проверено 5 ноября 2026Это практическое руководство без CVE и оценки CVSS. Риск зависит от того, пересекает ли трафик недоверенные сети, содержит ли он чувствительные данные и проверяют ли клиенты сертификат сервера.

Кому нужно проверить

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

В чём риск

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

Затронутые версии

Руководство ориентировано на MySQL 8.4 и самостоятельно размещённый сервер. Наличие и поведение опций зависят от версии сервера, клиента и TLS-библиотеки. Управляемый MySQL может задавать TLS-политику через настройки поставщика. Перед применением проверьте поддерживаемые опции на сервере и у используемых драйверов.

Исправленные версии

Универсальной исправленной версии нет. Если политика требует защищённый транспорт, в MySQL 8.4 можно включить `require_secure_transport`; клиентские подключения должны поддерживать TLS. Для проверки сертификата используйте подходящий клиентский режим `VERIFY_CA` или `VERIFY_IDENTITY` и доверенную цепочку сертификатов. Простого факта успешного TLS-соединения недостаточно, чтобы подтвердить корректную проверку имени сервера.

Что сделать

  1. 1Составьте список приложений, драйверов, административных клиентов и сетевых путей к MySQL. Проверьте текущую TLS-конфигурацию и версии клиентов; сохраните копию конфигурации и заранее подготовьте доверенные сертификаты.
  2. 2Настройте на сервере сертификат и ключ по официальной документации своей версии. Защитите закрытый ключ правами файловой системы и не помещайте его в репозиторий, образ контейнера общего доступа или журнал.
  3. 3Настройте клиенты на TLS и проверку сертификата. По возможности используйте `VERIFY_IDENTITY`, когда клиентская библиотека поддерживает этот режим и имя подключения соответствует сертификату; не отключайте проверку имени как постоянный обход ошибки сертификата.
  4. 4Проверьте, что все используемые приложения и административные клиенты подключаются с проверяемым TLS. Не включайте обязательный режим на production-сервере, пока не проверены все легитимные клиенты и путь отката.
  5. 5После проверки задайте `require_secure_transport=ON` в соответствии с процедурой управления конфигурацией вашей среды. В MySQL 8.4 документация также описывает `SET PERSIST`; перед использованием убедитесь, что команда разрешена политикой, а права и способ отката понятны.
  6. 6Проверьте защищённое соединение приложений и отказ тестового незашифрованного TCP-клиента в изолированной среде. Убедитесь, что локальные сокеты продолжают работать согласно политике и проверьте журналы после изменения.

Проверка TLS для MySQL

TLS требует проверки обеих сторон: серверной политики и поведения клиентского драйвера.

  1. 1Подготовьте сертификат сервера и доверенную цепочку
  2. 2Переведите клиенты на TLS с проверкой сертификата
  3. 3Убедитесь, что все приложения и драйверы совместимы
  4. 4Только после тестирования потребуйте secure transport на сервере
  5. 5Проверьте успешное защищённое и отказ незащищённого соединения

Примеры конфигурации и проверки

Проверить требование защищённого транспорта (shell)
mysql --user=admin_user --password --execute="SHOW GLOBAL VARIABLES LIKE 'require_secure_transport';"

Для клиента и сервера MySQL 8.4. Запускайте на своём сервере с доступом к нужному экземпляру; замените имя роли на разрешённую административную учётную запись. Пароль вводится по приглашению. Команда только читает настройку: ON означает требование защищённого транспорта, включая допустимые локальные сокеты, но не доказывает проверку сертификата каждым клиентом. Откат не требуется.

Подключаться с проверкой имени сертификата (shell)
mysql --host=db.example.invalid --user=app_user --password --ssl-mode=VERIFY_IDENTITY

Иллюстрация для клиента MySQL 8.4; используйте только адрес собственной базы и настройте доверенный CA согласно документации клиента. Значение домена зарезервировано для примеров и не является реальным сервисом. Команда запросит пароль интерактивно, а не помещает его в аргументы. Подключайтесь только после того, как сертификат сервера соответствует имени; смена режима клиента не изменяет сервер.

Как не подпустить ботов к сайту

BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.

Первоисточники

Снизьте шанс атаки до того, как бот дойдёт до сайта

Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.