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

Безопасное подключение к MySQL - SSL MySQL vs Stunnel vs SSH Tunneling

У нас есть приложение PHP, которое подключается к серверу MySQL, и мы хотим защитить соединения между веб-серверами и серверами приложений и базой данных.

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

У нас нет постоянных подключений к базе данных, включенных в настоящее время, и хотя мы планируем это сделать в будущем, я хотел бы реализовать это независимо от этого.

Аппаратное обеспечение - сервер MySQL довольно громоздкий (16 ядер), как и веб-серверы. Это выделенные серверы.

Затем мой вопрос касается наиболее эффективного способа защиты и шифрования соединений с сервером базы данных.

Мои исследования показали, что основные накладные расходы на производительность связаны с установкой SSL-соединения - после подключения SSL есть небольшое снижение производительности. И вот что у меня есть о каждом методе защиты соединения:

  1. Сертификаты MySQL SSL - работают как обычный SSL. Может использовать клиентские сертификаты для предотвращения несанкционированных подключений. Нет постоянных соединений с нашей существующей настройкой. По-прежнему нужно, чтобы MySQL слушал открытый порт на брандмауэре.
  2. станнель. Настройте порт для порта ssl-туннеля. Не нужно перенастраивать MySQL. Может закрыть обычный порт прослушивания MySQL, чтобы предотвратить попытки злонамеренного подключения к MySQL. Не поддерживает постоянные соединения. Неизвестное снижение производительности.
  3. SSH-туннелирование. Создайте туннель SSH между клиентом и сервером. Не нужно перенастраивать MySQL. Может закрыть обычный порт прослушивания MySQL, чтобы предотвратить попытки злонамеренного подключения к MySQL. Поддерживает постоянные соединения, но иногда они пропадают. Неизвестное снижение производительности.

Это все, что мне удалось. Я знаю об ограничениях тестов - по моему опыту запуска очень сложно имитировать реальный мировой трафик. Я надеялся, что у кого-то есть совет, основанный на собственном опыте защиты MySQL?

Спасибо

Я бы пошел с ssh-туннелем и сделал это с autossh вместо того ssh. Что касается производительности, я бы сказал, что протокол SSH легко настраивается, и вы можете настроить свое соединение, если это необходимо.

Но я бы не ожидал заметных накладных расходов после установки соединения.

Посмотрев на тесты этого статья (Блог о производительности MySQL) вам действительно следует избегать встроенных в MySQL возможностей SSL.